
DivineMC: Построение параллельно-поточных серверов Minecraft
BX-Team/DivineMC
DivineMC - это многопрофильный форк Purpur, фокусирующийся на гибкости вашего сервера и его оптимизации.
Посмотреть на GitHub ↗Хорошо, вы управляете сервером Minecraft и столкнулись с пределом. Стандартный серверный jar не может использовать дополнительные ядра CPU, тикинг чанков происходит в одном потоке, а TPS падает, когда возрастает количество игроков. Вы пробовали Paper. Настроили конфиги. Что дальше?
DivineMC - это форк Purpur, который берет легендарную гибкость Purpur и добавляет параллельный тикинг чанков, асинхронные операции и множество вдумчивых оптимизаций. У него 240 звезд на GitHub, активное развитие, и он подходит к масштабированию по-другому, чем известные проекты, например, Folia.
Что делает DivineMC
Это не полная переписка потоков. DivineMC сохраняет архитектуру Purpur - у вас есть гранулярный контроль над скоростью появления мобов, отслеживанием сущностей и другими настройками поведения. Но добавляет регионализированный тикинг чанков, что означает, что чанки обрабатываются параллельно, используя доступные ядра CPU, вместо последовательной обработки в одном потоке.
Проект также включает асинхронное поиск пути, отслеживание сущностей, появление мобов и отправку чанков. Все операции, которые обычно блокируют основной поток тика, происходят вне основного потока. Это значит, что когда 50 зомби одновременно находят путь к игроку, это не снижает ваш TPS.
Вы также получаете улучшенную безопасность (1024-битовые семя вместо 64-битных), поддержку клиентских модов, таких как Syncmatica и Xaero's Map, без серверной инфраструктуры модов, и около 10 исправлений багов, решающих различные причуды Minecraft.
Почему вам это нужно
Представьте: вы управляете сервером для 20-30 игроков в режиме выживания. Сервер растет. TPS начинает падать в часы пиковой нагрузки. Вы проверяете профилирование и видите, что половина времени тика уходит на загрузку чанков и расчеты пути.
На этом этапе параллельный тикинг чанков становится не просто приятной особенностью, а действительно полезной функцией. DivineMC позволяет чанкам тикать одновременно, примерно как это делает Folia, но без необходимости полной миграции или тяжелых тестов совместимости плагинов.
Это также хорошо подходит, если у вас несколько миров, плотная экосистема плагинов, или игроки-строители загружают огромные схемы. Асинхронные операции и улучшенные форматы файлов регионов означают лучшую стабильность при интенсивной нагрузке на сервер.
И это важно: плагины DivineMC на 100% совместимы с Bukkit, Spigot и Paper. Вы не привязаны. Если захотите перейти завтра, весь ваш экосистема плагинов перейдет с вами.
Как запустить его
Сначала скачайте сборку с страницы загрузок BX-Team или MCJars. Выберите jar, соответствующий вашей версии Minecraft.
Базовый запуск:
java -Xmx4G -Xms2G -jar DivineMC-[version].jar noguiНастройте параметры `-Xmx` (максимальная ОЗУ) и `-Xms` (начальная ОЗУ) в зависимости от вашего оборудования. Четыре гига - разумное значение для небольших и средних серверов. Первый запуск генерирует файлы вашего мира и конфигурации.
Сервер попросит вас принять лицензионное соглашение (EULA). Отредактируйте `eula.txt` и измените `false` на `true`, затем перезапустите сервер.
Ключевая часть: DivineMC все о конфигурации. Значения по умолчанию хороши, но вам захочется настроить `paper.yml` и специфические конфигурации DivineMC для вашей конфигурации. Этот сайт документации проведет вас через все, что можно настроить.
Если вы настраиваете сервер для конкретных игроков, инструмент создателя белого списка Minecraft сэкономит время. Вставьте имена игроков, и он мгновенно сгенерирует формат белого списка.
Особенности, которые важны
Параллельный тикинг чанков обрабатывает чанки одновременно, а не поочередно. Больше блоков обновляется сразу без зависания основного потока тика. Не магия, но заметно под нагрузкой.
Асинхронные операции перемещают поиск пути, отслеживание сущностей, появление мобов и отправку чанков вне основного потока. Это предотвращает классические скачки лага, когда горда мобов одновременно находят путь к вашему игроку.
Линейный формат файлов регионов используется для хранения мира - старый формат V1/V2 или новый подход с буфером. Нишевая оптимизация для массовых миграций миров или построек с использованием схем. Большинству серверов это не заметно, но оно есть, если вам нужно.
Интеграция с Sentry отправляет отчеты об ошибках в экземпляр Sentry, если вы его настроите. Полезно для публичных серверов, где структурированное отслеживание ошибок лучше, чем поиск в логах.
Поддержка протокола модов означает, что клиенты Syncmatica, Xaero's Map, Jade и Apple Skin работают без исключений. Помогает, если ваша община использует клиентские моды.
Что может поймать вас не на ходу
Параллельный тикинг чанков - не волшебная кнопка. Вы его включаете, но все равно отслеживаете производительность и настраиваете. Нет настроек, которые просто делают все быстрее.
Если вы хотите собрать из исходников (README включает команды gradle), вам нужна настроенная среда разработки. Для простого запуска сервера используйте предварительно собранные jar. Собирание из исходников предназначено для вкладчиков, ремонтирующих кодовую базу.
Региональный тикинг означает, что чанки в разных регионах обрабатываются параллельно, но чанки внутри региона все еще тикают последовательно. Густые конструкции из красного камня в одном чанке все равно ограничивают TPS этого чанка. Оптимизация помогает, когда активность строительства распространяется по миру, а не сосредоточена в одном месте.
Один быстрый момент: совместимость плагинов обеспечена с Bukkit, Spigot и Paper. Не с Forge или Fabric серверными модами. Вы можете запускать клиентские моды весь день, но серверы, основанные на vanilla, не поддерживают серверные среды моддинга. (Так просто работает серверное ПО, основанное на vanilla.)
Как DivineMC выглядит в сравнении
Folia (также основанная на Paper) бросает полный многопоточность на проблему - каждому региону свой поток и цикл игры. Более агрессивная параллелизация, но требует более тяжелых тестов плагинов. DivineMC менее радикален и сохраняет гибкость Purpur.
Pufferfish открывал некоторые из асинхронных функций, включенных в DivineMC, но поддержка замедлилась. DivineMC feels like the natural evolution of that approach.
Чистый Paper проще и гораздо более широко используется. Небольшой сервер с несколькими плагинами? Paper, вероятно, даст вам 90% преимущества без дополнительной нагрузки конфигурации.
Для администраторов серверов, комфортно настраивающих конфигурации и стремящихся к приросту производительности без нарушения экосистемы, DivineMC занимает хорошее место между простотой и сырой амбицией.
Получение помощи, когда это нужно
Проект размещен на GitHub. Есть сервер Discord (discord.gg/qNyybSSPm5), где сообщество быстро отвечает на вопросы. Документация на bxteam.org/docs/divinemc.
Если вы хотите внести вклад, есть руководство по вкладу. Java, стандартные шаблоны серверного ПО, система сборки Gradle. Разработчики отзывчивы, а сообщество достаточно малое, чтобы вам быстро помогли.
Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.
Комментарии
Пока нет комментариев. Станьте первым, кто поделится своим мнением!


