

BTSEngine: Concurrent
Активный0.0
Установок
Последнее обновление
BTSEngine: Concurrent — революционная оптимизация Minecraft
Производительность взлетает до небес!
Описание проекта
Модификация BTSEngine: Concurrent — это масштабный проект оптимизации, реализующий продвинутые технологии многопоточности, систему предотвращения взаимных блокировок и бесконфликтную синхронизацию на основе архитектур CAS/Lock-Free. Решение обеспечивает значительный прирост производительности как на серверах, так и в одиночных мирах. В отличие от других попыток внедрить многопоточность, мы использовали более глубокий подход, полностью переработав внутренние механизмы Minecraft для максимальной оптимизации с сохранением совместимости с большинством модов.
Внимание: проект находится на стадии ALPHA-тестирования. Возможны сбои и некорректная работа. Настоятельно рекомендуется создавать резервные копии миров перед установкой.
Степень улучшения производительности может варьироваться в зависимости от состава модпака и конфигурации компьютера пользователя.
Тестирование производительности
Мы провели тестирование модификации на тяжелом модпаке с большим количеством датапаков генерации мира и такими модами, как Create, Mekanism, Ice and Fire и другими.
Конфигурация тестового модпака:
- Увеличенная частота генерации структур в 2-4 раза
- Датапак, преобразующий мир в архипелаг островов с использованием сложных функций плотности
- Дальность прорисовки: 32 чанка, расстояние симуляции: 8 чанков
- Всего загружено 341 мод, половина из которых добавляет структуры, биомы и расширяет генерацию мира
Тестовое окружение:
- Процессор: AMD Ryzen 3700X (8 ядер)
- Оперативная память: 32 ГБ 2133 МГц, ~11 ГБ выделено для модпака
Результаты тестирования:
- Без модификации: 4 минуты 55 секунд от создания мира до полной загрузки окружающей территории. Очень медленная генерация чанков
- C2ME (0.3.0.alpha73): 2 минуты 20 секунд (ускорение в 2.1 раза), но с риском зависания из-за взаимных блокировок. Возможны проблемы с загрузкой чанков, требующие перезапуска клиента. Незначительные отличия в генерации мира
- BTSEngine: Concurrent (0.1.4-alpha): 2 минуты 27 секунд (ускорение в 2 раза) без выявленных серьезных проблем, кроме известных несовместимостей с некоторыми модами
Известные несовместимости
Хотя мы стремимся обеспечить максимальную совместимость с популярными модами, некоторые из них требуют дополнительной доработки для корректной работы с BTSEngine: Concurrent. Сообщайте о новых несовместимостях через систему Issues.
Условно совместимые моды
- Confluence: Otherworld
- Игра загружается до главного меню и успешно создает мир
- При наличии этого мода практически отсутствует прирост производительности из-за постоянного чтения данных PalettedContainer каждый тик. Это связано с динамическими биомами Corruption и Crimson, которые распространяются по миру. Требуется доработка кода биомов для устранения проблемы
- Async
- Игра загружается до главного меню, но может Crashнуть при генерации мира
- При успешном запуске (сборки 0.1.7.alpha.7 и новее) возможна нормальная игра, но может возникать зависание сущностей и другие артефакты. Прирост производительности от Async не гарантирован
Несовместимые моды
- Lithium
- Мир загружается, но становится неиграбельным из-за нарушенного спавна мобов
- После 3-5 минут игры накапливаются тысячи сущностей, приводя к зависанию
- Проблема вызвана переопределением метода toNbt, который нарушает работу тикающих систем. Для совместимости в конфигурационном файле lithium.properties необходимо добавить строки:
mixin.chunk.palette=false
иmixin.chunk.serialization=false
- Concurrent Chunk Management Engine (C2ME)
- Игра не загружается до главного меню
- Несовместимость вызвана пересекающимися изменениями в системе управления чанками
- Noisium
- Игра не загружается до главного меню
- Функциональность Noisium уже интегрирована в BTSEngine: Concurrent в более структурированной реализации на основе lock-free/CAS архитектуры
Установка и использование
Для игроков: просто скачайте файл мода btsengine-concurrent-x.x.x.jar
, поместите его в папку mods
и запустите игру. Готово!
Для разработчиков модов: в настоящее время проект защищен авторскими правами. Лицензия может быть изменена в будущем по достижении стабильного состояния проекта. Сообщайте о проблемах через раздел Issues.
Поддержка версий и модлоадеров
Из-за сложности проекта поддержка ограничена следующими версиями:
- Текущая версия: Minecraft 1.21.1 с NeoForge
- Fabric: возможна реализация при достаточном спросе
- Версии 1.7.10, 1.12.2 и другие старые: портирование не планируется из-за огромного объема работ
- Версия 1.20.1: будет рассмотрена командой позже
- Будущие версии 1.22, 1.23: решение об обновлении пока не принято
Лицензионные условия
Мод может использоваться в публичных модпаках на CurseForge и Modrinth без дополнительного разрешения.
Использование на других платформах требует указания авторства и ссылок на официальные страницы мода.
Разрешено использование в приватных модпаках без публикации.
Разрешена съемка видео и стримов с использованием мода (указание авторства рекомендуется, но не обязательно).
Запрещено модифицировать мод для публичного распространения без письменного разрешения авторов.
Запрещено присваивать авторство мода.
Используемые библиотеки
- FlowSched (лицензия MIT)
- Отдельные фрагменты кода из C2ME от ishland (лицензия MIT)
- java-async-util (лицензия Apache 2.0)