
Async
Async - мод для Fabric, который ускоряет обработку мобов в Minecraft за счет многопоточности. Без него ваш сервер может тормозить с большой популяцией жителей или животных.
Async - многопоточная обработка сущностей в Minecraft
Async - экспериментальный мод для Fabric, который перекладывает обработку энтити на несколько ядер процессора. Вместо того чтобы грузить одно ядро миллионом жителей, мод распределяет нагрузку по всем доступным потокам. Результат - стабильный TPS даже на серверах с кучей мобов, где ванильный Майнкрафт начинает откровенно тормозить.
Зачем это нужно?
В обычном Minecraft все сущности обрабатываются последовательно - это значит, что чем больше мобов на сервере, тем дольше каждый игровой тик. На серверах с десятками ферм или крупными городами жителей ванила начинает захлебываться. Async решает эту проблему, разбивая работу на параллельные задачи.
Кстати, мод ещё сыроват - альфа-версия, так что могут быть вылеты и странное поведение мобов. Но если вы готовы тестировать и репортить баги, то потенциал у проекта огромный.
Ключевые фишки
- Стабильный TPS - игра не тормозит при большом количестве мобов
- Многопоточность (multithreading) - использует все ядра CPU
- Асинхронные случайные тики (экспериментально) - ещё один способ разгрузить сервер
Тесты производительности
Разработчик провел замеры на 9000 жителях - для наглядности:
| Конфигурация | TPS | MSPT |
|---|---|---|
| Lithium + Async | 20 | 41.8 |
| Lithium (без Async) | 4.4 | 225.4 |
| Purpur | 5.72 | 176.18 |
Цифры говорят сами за себя: с Async сервер живёт, без - еле дышит.
Тестовое железо
- Процессор: AMD Ryzen 9 7950X3D
- ОЗУ: 64 ГБ (16 выделено серверу)
- Майнкрафт 1.21.4
- 9000 жителей
Использовались моды: Concurrent Chunk Management Engine, Fabric API, FerriteCore, Lithium, ScalableLux, ServerCore и другие оптимизационные штуки.
Несовместимости
- Moonrise - точно не дружит
- Возможны конфликты с другими модами, особенно теми, что тоже лезут в обработку энтити
Команды для управления
/async config toggle- включает/отключает мод прямо в игре без перезапуска, чтобы сразу увидеть разницу/async config setAsyncEntitySpawn- параллельный спавн мобов (по умолчанию выключен). Важно: не совместим с правилом lagFreeSpawning из Carpet/async config setAsyncRandomTicks- асинхронные случайные тики (экспериментальная фича)/async config synchronizedEntities add- добавляет выбранную сущность в синхронизированную обработку/async config synchronizedEntities remove- убирает сущность из синхронизации/async stats- показывает количество используемых потоков/async stats entity- сколько энтити обрабатывается Async в разных мирах/async stats entity [число]- топ самых массовых типов мобов. Например,/async stats entity 10покажет десятку самых многочисленных/async stats entity [число] [тики]- тоже самое, но с привязкой к среднему потреблению mspt за указанные тики
Совместимость по версиям
Полная поддержка только для последней версии Minecraft. Старые версии получают только критические фиксы. На снапшоты забить - их поддерживать не планируется.
Благодарности
В основе мода лежит код из MCMTFabric, который в свою очередь базируется на JMT-MCMT. Спасибо Grider и jediminer543 за их вклад.
