
Создание серверов в C#: Obsidian - альтернатива для Minecraf
"Реализация протокола Minecraft сервера на C#"
ObsidianMC/Obsidian, github.com
Если вы хотели запустить сервер Minecraft без борьбы с ограничениями памяти Java или особенностями JVM, Obsidian может быть именно тем, что вам нужно. Это полная переосмысление протокола Minecraft сервера на C# и .NET, построенное с нуля посвящённой командой разработчиков, которые явно хотели чего-то другого, чем типичный Java-экосистема.
Что делает этот проект
Obsidian - это реализация протокола Minecraft сервера на C#.NET. Вместо использования официального сервера Mojang или производных, таких как Paper или Spigot (которые все строятся на Java), Obsidian позволяет запустить полностью функциональный сервер Minecraft, написанный на C#. Он обрабатывает подключения игроков, загрузку чанков, разрушение и размещение блоков, управление инвентарем, крафтинг, циклы погоды и все основные механики сервера, которые вы ожидаете.
Крутое дело? У него есть собственный встроенный фреймворк плагинов. Вам не нужно использоватьcompatibility слои или бороться с древним кодбазом. Он предназначен для расширяемости с самого начала, поэтому добавление кастомных функций игрового процесса кажется естественным, а не как взлом старого кода.
В настоящее время с 470 звёздами на GitHub, проект активно поддерживается, но всё ещё находится в разработке. Дорожная карта показывает завершённые функции, такие как генерация мира, физика жидкостей и несколько геймплейных режимов, а моби и схемы красного камня всё ещё на горизонте.
Почему вы перешли бы на это
Большинство операторов серверов Minecraft никогда не касаются основного кода. Им просто нужна стабильность и низкая нагрузка. Для таких людей самой большой продажной точкой Obsidian является эффективность памяти. Запуск сервера Java означает борьбу с паузами сборки мусора, настройкой выделения кучи и всем весельем, которое приходит с JVM. C# обрабатывает память по-другому, и разработчики Obsidian агрессивно оптимизировали её с самого начала. Если вы запускаете сервер на скромном оборудовании или нуждаетесь в снижении затрат на VPS, это важно.
Для разработчиков, однако, привлекательность идёт глубже. Вы получаете возможность написать плагины сервера на C# вместо Java. Если вы уже работаете в экосистеме .NET или предпочитаете функции языка C#, вам не приходится заставлять себя в незнакомой среде. Фреймворк плагинов предназначен специально, а не прикреплён как после мысли. Никаких кошмаров с classpath, никакого безумия отражения, просто чтобы загрузить JAR.
И если Docker является частью вашей истории развертывания, Obsidian поддерживает его нативно. Вы можете контейнеризировать свой сервер, версионировать конфигурацию и запускать новые экземпляры последовательно. Это значительное улучшение качества жизни, если вы серьёзно относитесь к эксплуатации.
Запуск в работу
Установка зависит от того, как вы хотите запустить его. Obsidian предоставляет сборки разработки через GitHub Actions, или вы можете собрать из источника самостоятельно. Вам сначала нужно установить среду выполнения .NET 9.0.
Для прямой установки возьмите последний артефакт со страницы GitHub Actions, распакуйте его и запустите:
dotnet ObsidianApp.dllПервый запуск автоматически генерирует файл конфигурации. Отредактируйте его с вашими предпочтительными настройками сервера, затем запустите команду снова. Это удивительно прямоугольное по сравнению с поиском по файлам YAML и системным свойствам.
Если вы ориентированы на контейнеры, поддержка Docker доступна. Клонируйте репозиторий, соберите образ и запустите:
docker build . -t obsidian
docker run -d -p YOUR_PORT:25565 -v YOUR_PATH:/files obsidianObsidian предварительно генерирует конфиг при запуске, поэтому вы настраиваете его в смонтированном томе, затем перезапускаете контейнер. Поддержка Docker Compose также встроена, если вы предпочитаете её.
Что в нём особенного
Фреймворк плагинов предназначен для реальной расширяемости. Хотите добавить кастомные команды, новые поведения блоков или полностью кастомную игровую механику? Фреймворк не препятствует вам. В отличие от серверного программного обеспечения, где плагины кажутся прикреплёнными, архитектура Obsidian предполагает, что вы будете писать расширения с первого дня.
Система генерации мира уже работает и масштабируется. Вы не ограничены генерацией ваниллы. Команда проработала загрузку чанков, обновления блоков и физику так, чтобы она оставалась производительной даже с сотнями одновременных изменений.
Схемы красного камня и поиск пути мобов всё ещё на дорожной карте. Это честная разработка. Большинство проектов бы уже давно раздували свой список завершённых задач. Честно говоря, прозрачность команды Obsidian относительно того, что всё ещё находится в разработке, действительно освежает.
Потребление памяти получает особое внимание. Если вы когда-либо имели Java-сервер, который расширялся до 4ГБ для 20 игроков, вы заметите разницу здесь. C# и .NET обрабатывают долгоживущие, большие выделения нагрузок более предсказуемо, чем GC Java.
Код компилируется с непрерывной интеграцией, проверяющей каждый пуший, поэтому вы не устанавливаете что-то, что битроется между релизами. Стабильность важна, когда вы запускаете сервер, на котором зависят люди.
Настоящие ограничения, о которых нужно знать
Он всё ещё находится в активной разработке. Это означает, что функции всё ещё строятся. Если вам нужны мобы с реальным поиском пути или полностью функциональные схемы красного камня прямо сейчас, официальный сервер всё ещё ваш выбор. Дорожная карта Obsidian показывает, что оба идут, но они ещё не готовы.
Экосистема плагинов намного меньше, чем у Java. Гораздо меньше. Spigot имеет десятилетия истории плагинов. Сообщество Obsidian меньше и новее, поэтому вы, возможно, не найдёте тот идеальный предустановленный плагин, на который вы надеялись. Вам, возможно, придётся написать его自己, что не обязательно плохо (кастомный код часто лучше в любом случае), но это реальный момент, о котором нужно знать.
Совместимость клиента - это то, где ванилла Java-серверы всё ещё имеют преимущество. Obsidian реализует протокол верно, но крайние случаи с конкретными версиями клиентов или модами могут вести себя по-другому. Тестируется и работает гладко с ванилла клиентами в последних версиях. Если вы запускаете nặng мод-паки, тестируйте тщательно перед обязательствами.
Когда обратиться к нему
Вы - разработчик C#, который хочет запустить сервер без касания Java. Это основной случай использования, и Obsidian сияет там. Вам важна эффективность памяти и предсказуемое использование ресурсов. Вы строите что-то кастомное и хотите кодбазу, которую вы действительно понимаете. Вам нравится Docker и вы хотите облачные модели развертывания с первого дня.
С другой стороны, если вы запускаете большой сервер выживания с сотнями плагинов, или вам нужна корпоративная поддержка с SLA, придерживайтесь Paper или Purpur. Если вы хотите использовать плагины, написанные сообществом без изменений, Java-экосистема имеет это на замке.
Для тестирования концепций сервера или построения чего-то особенного Obsidian действительно стоит уделить послеобеденное время. Установка тестового сервера занимает около 20 минут. Посмотрите, кликует ли это с тем, как вы думаете о разработке сервера.
Сходные проекты, о которых стоит знать
Если Obsidian не подходит, существуют несколько альтернатив. Paper - это общий стандарт Java-сервера, если вы хотите плагины и оптимизации производительности без переписывания всего. Это стабильно, батл-тестировано и имеет огромную поддержку плагинов. Velocity обрабатывает прокси-дутности, если вы запускаете сеть. Purpur идёт дальше с Paper, добавляя больше функций для администраторов односерверных.
На альтернативной реализации фронта, Cuberite - это реализация сервера на C++, которая существует уже дольше. Она созрела, но менее активно разработана, чем Obsidian. Karafuru - ещё один интересный проект в этом пространстве, хотя менее активно поддерживается.
Торговля постоянна: вы получаете производительность и контроль языка, но теряете устоявшуюся экосистему плагинов. Выбирайте на основе того, что наиболее важно для вашего случая использования. Если вы запускаете ваниллу или пишете всё кастомное в любом случае, Obsidian становится действительно солидным выбором.
Одна практическая совет: если вы используете Obsidian для запуска публично доступного сервера, инструмент Minecraft MOTD Creator делает настройку сообщения приветствия вашего сервера безболезненной. Вы можете просмотреть, как оно будет выглядеть для присоединяющихся игроков, что спасает «перезапуск и проверь» цикл. Аналогично, инструмент Block Search полезен, когда вы строите кастомные плагины и нуждаетесь в быстрой проверке ID блоков и свойств.
Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.
Комментарии
Пока нет комментариев. Станьте первым, кто поделится своим мнением!


