▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Sepals
Sepals

Sepals

Sepals - экспериментальный мод для серверов Minecraft, который радикально оптимизирует ИИ мобов, обработку сущностей и тайки. Особенно полезен на фермах с большим скоплением жителей и лягушек.

Оцените первым
42.8K
152

Sepals

Sepals - это экспериментальный, но чертовски мощный оптимизационный мод для серверов Майнкрафт. В отличие от большинства "общих" оптимизаций вроде Lithium, Sepals бьёт точечно в самые узкие места ванильного движка: ИИ мобов, обработку сущностей и систему задач. Если у вас на сервере огромные фермы, залы с жителями или куча мобов на маленькой площади - этот мод может дать просто бешеный прирост производительности.

Разработчики рекомендуют использовать Sepals вместе с Lithium и Async для максимального эффекта. Но учти: мод экспериментальный, и не все фичи гарантированно повторяют ванильное поведение. На обычном SMP с парой курочек разницы ты не заметишь, а вот на хардкорных фермах - вполне.

Что делает Sepals на практике?

Если у тебя на сервере есть:

  • большие фермы жителей или автоматические фермы мобов
  • залы с десятками и сотнями деревенских
  • скученные вольеры с лягушками или другими мобами

...то Sepals резко снижает время тика, обходя самые дорогие операции ванильного ИИ. В стресс-тестах прирост просто колоссальный - вплоть до 99% в некоторых сценариях.

Совместимость

На данный момент Sepals совместим почти со всеми популярными модами. Вот проверенный список:

МодТребуемая версия
Sodiumвсе
Irisвсе
FerriteCoreвсе
Kryptonвсе
Lithium>=0.18.0
C2ME>=0.3.4.0.0
Moonrise>=0.6.0-beta.1+45edfd7
Async>=0.1.7+alpha.7-1.21.8

Если не знаешь, какую версию выбрать - бери самую свежую, Sepals под неё подстроится.

Важно

Мод не поддерживает старые версии Minecraft и снапшоты - все фиксы и фичи только для актуальных релизов. При использовании с Async советуют вручную сравнить производительность и покрутить конфиги, потому что на разных машинах результаты могут отличаться. За это отвечает опция enableSepalsEntitiesCramming.

Конфиг

НазваниеДопустимые значенияПо умолчанию
forceEnableSepalsPoiboolfalse
enableSepalsVillagerbooltrue
enableSepalsFrogLookAtbooltrue
enableSepalsFrogAttackableSensorbooltrue
enableSepalsLivingTargetCachebooltrue
nearestLivingEntitiesSensorUseQuickSortbooltrue
enableSepalsBiasedLongJumpTaskbooltrue
enableSepalsEntitiesCrammingbooltrue
enableSepalsItemMergebooltrue
enableSepalsQuickCanBePushByEntityPredicatebooltrue

Производительность: тесты и цифры

Тесты проводились на сервере Mars от feimia (CPU: Intel i7-14700K, 4ГБ ОЗУ, Ubuntu 24.04.1 LTS, Minecraft 1.21). Вот что получилось.

Entities cramming (давка сущностей)

Использует кэш блоков, чтобы избежать лишних вызовов getOtherEntities. Игнорирует предикаты scoreboard/team для каждой сущности - в ванилле это не влияет ни на что, кроме командных блоков. Включено по умолчанию.

1390 жителей в пространстве 7x7:

ОкружениеtickCrammingПроцент (средн.)
Vanilla53.6 ms100%
Lithium54.4 ms101%
Sepals10.2 ms19%
Sepals + Lithium8.5 ms15%

Weighted random (взвешенный случайный выбор)

Использует бинарный поиск вместо ванильного взвешенного рандома. По данным Spark, при построении таблиц диапазонов может быть медленнее ваниллы, даже если сам поиск близок к 0 мс. Отключено по умолчанию и не тестировалось.

Biased long jump task (задача длинного прыжка с уклоном)

Собственная реализация задачи прыжка для лягушек. Бинарный поиск почти бесплатен, таблица строится одновременно с генерацией целей, а Java Stream заменён на Catheter. Требует перезапуска сервера для применения изменений. Включено по умолчанию.

800 лягушек в пространстве 7x7:

ОкружениеkeepRunningПроцент (средн.)
Vanilla (LongJumpTask)43.1 ms100%
Lithium (LongJumpTask)7.5 ms17%
Sepals (SepalsLongJumpTask)0.2 ms0.4%
Sepals + Lithium (SepalsLongJumpTask)0.05 ms0.1%
ОкружениеgetTargetПроцент (средн.)Процент (в keepRunning)
Vanilla (LongJumpTask)43.1 ms100%100%
Lithium (LongJumpTask)3.6 ms9%48%
Sepals (SepalsLongJumpTask)N/A ms0%0%
Sepals + Lithium (SepalsLongJumpTask)N/A ms0%0%

Quick sort в NearestLivingEntitiesSensor

Использует быструю сортировку из FastUtil вместо Java TIM-сортировки. Включено по умолчанию.

800 лягушек в пространстве 7x7:

Окружениеsort (NearestLivingEntitiesSensor#sense)Процент (средн.)
Vanilla3.8 ms100%
Lithium3.6 ms94%
Sepals2.2 ms57%
Sepals + Lithium2.2 ms57%

Frog attackable target filter (фильтр атакуемых целей для лягушек)

Переставляет условия атакуемости так, чтобы самые дешёвые проверки шли первыми. В ванилле Sensor#testAttackableTargetPredicate вызывает TargetPredicate#test, который делает кучу raycast-вычислений - при большом количестве сущностей это адски медленно (9.8 мс на тик для 800 лягушек, из которых 7.3 мс - raycast). Sepals меняет порядок: сначала проверяется isValidFrogFood (просто тег), потом hasMemoryModule, isInRange, и только потом дорогой raycast. Включено по умолчанию.

800 лягушек в пространстве 7x7:

ОкружениевремяПроцент (средн.)
Vanilla (FrogAttackablesSensor#matches)10 ms100%
Lithium (FrogAttackablesSensor#matches)5.7 ms57%
Sepals (SepalsFrogBrain#attackable)0.1 ms1%
Sepals + Lithium (SepalsFrogBrain#attackable)0.1 ms1%

Frog look-at target filter (фильтр взгляда лягушки)

Использует SepalsLivingTargetCache для ускорения поиска целей. Raycast в TargetPredicate выполняется только если последующие условия успешны - если они проваливаются, raycast не нужен. Включено по умолчанию.

800 лягушек в пространстве 7x7:

ОкружениеfindFirstПроцент
Vanilla (LookAtMobWithIntervalTask$$Lambda#findFirst)2.7 ms100%
Lithium (LookAtMobWithIntervalTask$$Lambda#findFirst)2.5 ms92%
Sepals (SepalsLookAtMobWithIntervalTask$$Lambda#findFirstPlayer)0.1 ms3%
Sepals + Lithium (SepalsLookAtMobWithIntervalTask$$Lambda#findFirstPlayer)0.1 ms3%

Villager miscellaneous optimizations (разные оптимизации для жителей)

Тут целый набор фишек:

  • Catheter вместо Java Stream для производительности
  • Кэширование задач, активностей, выполняемых задач и памяти для ускорения старта и обновления
  • Собственная композитная задача вместо ванильной
  • Пропуск лишних raycast'ов и бесполезных предикатов
  • SepalsLivingTargetCache вместо ванильного кэша
  • Перестановка предикатов: дорогие вычисления выполняются позже или не выполняются вовсе
  • Оптимизация SerializingRegionBasedStorage из Lithium
  • Меньше дженериков и лишних операций
  • Бинарный поиск по списку вместо поиска по HashSet

Рекомендуется использовать с Lithium и C2ME. Не проверено на долгосрочную стабильность (месяц работы показал норм), но статистических отличий от ваниллы не замечено. Включено по умолчанию.

800 жителей в пространстве 7x7 днём:

ОкружениеBrain#tick (Total)ПроцентBrain#startTasksПроцент(startTasks)Brain#tickSensorsПроцент(tickSensors)Brain#updateTasksПроцент(updateTasks)Brain#tickMemoriesПроцент(tickMemories)
Vanilla18 ms100%9.3 ms100%5.2 ms100%3 ms100%0.5 ms100%
Lithium12.4 ms68%4.8 ms51%5.9 ms113%1.2 ms40%0.5 ms100%
Sepals9.7 ms53%3.6 ms38%3.7 ms71%2 ms66%0.4 ms80%
Sepals + Lithium10 ms55%3.4 ms36%3.7 ms71%2.5 ms83%0.4 ms80%

800 жителей в пространстве 7x7 ночью:

ОкружениеBrain#tick (Total)ПроцентBrain#startTasksПроцент(startTasks)Brain#tickSensorsПроцент(tickSensors)Brain#updateTasksПроцент(updateTasks)Brain#tickMemoriesПроцент(tickMemories)
Vanilla16.7 ms100%8.2 ms100%6 ms100%2 ms100%0.5 ms100%
Lithium10.2 ms61%3.2 ms24%6 ms113%0.5 ms25%0.5 ms100%
Sepals9 ms53%3.3 ms16%4.7 ms78%0.7 ms35%0.3 ms60%
Sepals + Lithium8.7 ms52%2.9 ms11%4.6 ms76%0.7 ms35%0.5 ms100%

Predicate optimization (оптимизация предикатов)

1172 лягушки в пространстве 3x3:

ОкружениевремяПроцент (средн.)
Vanilla (java.util.function.Predicate.lambda$and$0())49.01 ms100%
Sepals (com.github.cao.awa.sepals.entity.predicate.SepalsEntityPredicates$$Lambda/...)22.6 ms46%

Итог

Sepals - это не панацея, а скорее мощный инструмент для узких сценариев. Если у тебя сервер с десятками тысяч мобов на фермах - этот мод может дать прирост в разы. Но на обычном выживании с парой деревенек разница будет незаметна. Экспериментальность означает, что могут быть баги или неполное соответствие ванилле, так что перед установкой на продакшн-сервер лучше протестировать на тестовом мире.

Скачать Sepals и попробовать в деле стоит каждому, кто хочет выжать максимум из своего сервера Майнкрафт - особенно если ты используешь Fabric и современные версии игры.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

1.21.x

Платформы

Поддерживаемые окружения

Сервер

Зависимости

Ссылки

Создатели

Детали

Лицензия:
Опубликован:1 год назад
Обновлён:4 месяца назад
Главная