CaveSpeedThing: многопоточная генерация пещер для Minecraft
Если вы когда-нибудь летели в режиме наблюдателя над свежим миром с Better Caves и замечали, как игра буксует на генерации чанков, вы уже понимаете проблему. Классическая генерация пещер в Minecraft 1.12.2 работает в один поток, и именно на ней умирает производительность при исследовании подземелий. CaveSpeedThing — это оптимизационный слой, который переносит тяжёлые вычисления генерации пещер на отдельные рабочие потоки и убирает несколько узких мест, мешающих основному потоку генерации мира.
Что делает CaveSpeedThing
Мод не заменяет Better Caves, а патчит его классы через Mixin. Проще говоря, это прослойка, которая берёт на себя самые дорогие участки работы и распределяет их по ядрам процессора. Основные механики выглядят так:
- Использование нескольких ядер CPU: дорогая генерация пещер и каверн выполняется на выделенных рабочих потоках вместо блокировки главного потока генерации мира.
- Параллелизация только там, где это оправдано: небольшие задачи остаются однопоточными, чтобы не создавать лишних накладных расходов. Порог можно настроить вручную под свой процессор и нагрузку.
- Повторное использование вычислений: общие шумовые значения генерируются один раз, а не пересчитываются многократно.
- Кэширование данных биомов: дорогие запросы к биомам выполняются один раз и переиспользуются.
- Снижение потребления памяти: массивы и временные буферы переиспользуются вместо постоянного создания новых объектов.
- Безопасный откат: если параллельная задача сталкивается с неожиданной ошибкой, генерация возвращается к обычному режиму, а не крашит игру.
По заявлениям автора, в экстремальном тесте на одном профиле Flare удалось получить примерно 3,01-кратное ускорение вырезания пещер и каверн по сравнению с немодифицированным Better Caves. Тест проводился в режиме наблюдателя на максимальной скорости при дальности прорисовки 12 — это заведомо тяжелее любого реального сценария. На практике прирост будет зависеть от железа, сборки и настроек генерации.
Требования и совместимость
CaveSpeedThing для Minecraft работает на версии 1.12.2 и требует загрузчик Cleanroom, а также установленные Better Caves и Better Mineshafts. Это Mixin-оптимизация, а не самостоятельный генератор: без базовых модов она ничего не делает. Отдельно стоит помнить о несовместимости с NoiseThreader — оба проекта меняют одни и те же классы Better Caves через Mixin, поэтому вместе они не запустятся. Поддержки OTG нет.
Если вы собираете современную сборку на 1.12.2 Cleanroom, удобно держать такие оптимизации под рукой через каталог дополнений лаунчера foxygame.net — там CaveSpeedThing устанавливается в один клик вместе с остальными модами и обновляется автоматически при выходе новых сборок.
Рекомендуемая настройка оптимизации
Для лучшего результата на Minecraft 1.12.2 Cleanroom стоит следовать актуальному гайду по оптимизации MC: он описывает рекомендованные моды, настройки JVM и совместимость для современных сборок на 1.12.2. OptiFine использовать не рекомендуется — он известен конфликтами со многими модами и оптимизационными патчами, и следование гайду обычно даёт более стабильную игру.
Откуда взялся мод
Идея вдохновлена концепцией NoiseThreader: увести обработку Better Caves от чисто однопоточного конвейера. CaveSpeedThing — независимая реализация с другой архитектурой:
- выделенный ForkJoinPool вместо общих параллельных потоков;
- плоское хранение шумовых массивов и пулинг для снижения давления на сборщик мусора;
- предвычисленные данные биомов и кэш вместо параллельных запросов к биомам;
- дополнительные оптимизации Better Mineshafts;
- диагностика во время работы и настраиваемые параметры тюнинга.
Код NoiseThreader не переиспользуется — совпадает только общая идея, а архитектура и оптимизации написаны отдельно. Благодарности за основу уходят разработчикам NoiseThreader, YUNG's Better Caves и YUNG's Better Mineshafts.
Как установить CaveSpeedThing
Порядок действий для Cleanroom 1.12.2 выглядит так:
- Убедитесь, что установлены Better Caves и Better Mineshafts — без них мод бесполезен.
- Проверьте, что NoiseThreader отсутствует в сборке: вместе они конфликтуют.
- Поместите файл мода в папку mods вашего профиля Cleanroom.
- Запустите игру и проверьте лог на предмет ошибок Mixin.
- При необходимости подстройте порог параллелизации в конфиге под своё железо.
Если хочется просто скачать CaveSpeedThing и не возиться с ручной установкой, лаунчер с каталогом модов избавит от поиска совместимых версий и конфликтов вручную.
Итог
CaveSpeedThing — узкоспециализированный, но очень полезный инструмент для тех, кто играет на 1.12.2 Cleanroom с Better Caves и страдает от просадок при генерации подземного мира. Он не превратит слабое железо в мощное, но честно снимает нагрузку с главного потока и даёт ощутимый прирост в самых тяжёлых сценариях. Главное — помнить о требованиях, не ставить его рядом с NoiseThreader и не ждать чудес от OptiFine. При правильной сборке и настройках пещеры будут генерироваться заметно быстрее, а игра — стабильнее.