

Tetrachord Lib
Активный0.0
Установок
Последнее обновление
Версии
Tetrachord Lib
Многие моды для Minecraft реализуют функциональные возможности в 2D и 3D пространствах, однако методы прямого перебора часто оказываются неэффективными. В этом контексте представляем Tetrachord Lib - легковесную библиотеку, созданную для оптимизации разнообразных структур данных.
Оптимизация серверной части
Разработчики создали несколько модов для улучшения производительности серверов. Lithium от jellysquid3_ представляет собой революционный мод оптимизации, который улучшает различные аспекты Minecraft серверов. Используя точные алгоритмы для минимизации доступа к чанкам и блокам, этот мод улучшает не только генерацию мира, но и ИИ мобов, обнаружение столкновений, поиск точек интереса и другие важные аспекты для повышения вычислительной эффективности и снижения миллисекунд на тик серверов.
Starlight от Spottedstar - это инновационная модификация, которая переопределяет систему освещения Minecraft для улучшения производительности при генерации чанков, размещении и разрушении блоков. В отличие от Phosphor, Starlight не изменяет ванильную систему освещения - вместо этого она революционизирует её, вводя новый алгоритм.
Структуры данных
KD Tree - это структура данных, используемая в многомерных пространствах для хранения и организации k-мерных точек данных. Функционируя как бинарное дерево, каждый узел в KD Tree представляет k-мерную точку данных и разделяется в соответствии со значениями характеристик (измерений) точки данных. KD деревья особенно хорошо подходят для выполнения запросов диапазона и поиска ближайших соседей в многомерных наборах данных, и они также могут способствовать оптимизации извлечения данных в мире Minecraft.
Segment Tree - это структура данных, используемая для обработки обновлений и запросов диапазона. Она делит сегмент на меньшие подразделы и организует их иерархически в древовидной структуре. Сегментные деревья эффективны для обновления и запроса диапазонов данных. В контексте мира Minecraft, представленного как 3D тензор, использование сегментного дерева может значительно улучшить производительность, когда задействованы частые обновления и запросы диапазона.
Тестирование и оценка
Spark - это легковесный мод-профайлер производительности, который показывает детальные временные затраты модов, использование памяти и процессора, миллисекунды на тик и другие метрики производительности клиентов и серверов. Мы использовали Spark и выбрали временные затраты и mspt в качестве метрик для оценки способности оптимизации Tetrachord Lib.
Мы реализовали упомянутые структуры данных и провели эксперименты, используя следующие тесты:
Отсутствие враждебных мобов вокруг костра
В определенном сценарии, когда игроки разжигают костры, окружающие области в радиусе нескольких блоков больше не будут спаунить монстров. Оригинальный мод предлагает метод прямого перебора, который включает множественные обращения к блокам, приводя к значительному увеличению mspt на сервере и замедлению игровой программы. Мы выбрали использование KD Tree для реализации этого требования. Мы использовали профайлер Spark для записи 1 минуты обычного игрового процесса при разных настройках параметров, и результаты эксперимента показаны на следующем рисунке:
Увеличение выпадения опыта за рудные блоки рядом с маяком
Рассматривая сценарий, где игроки добывают блоки рядом с маяком, они могут получить дополнительную награду в виде опыта, основанную на количестве рудных блоков вокруг добытого блока. В таблице ниже показана область реакции и "очки руды", связанные с каждым типом рудного блока:
Тип руды | Медь | Железо | Золото | Алмаз | Незерит |
---|---|---|---|---|---|
Область реакции | 5x5 | 9x9 | 13x13 | 17x17 | 19x19 |
Очки руды | 1 | 1 | 1 | 2 | 3 |
Мы использовали профайлер Spark для записи размещения 32 рудных блоков и добычи 32 блоков при разных настройках параметров, и результаты эксперимента показаны на следующем рисунке:
Заключение
Эксперименты показывают, что Tetrachord Lib играет важную роль в различных ситуациях и предоставляет высокоэффективный способ реализации некоторых требований к обновлениям и запросам в 2D и 3D пространствах.
Мод Tetrachord Lib в настоящее время работает как библиотека, поэтому разработчики могут использовать его как зависимость для улучшения производительности своих модов.