Tetrachord Lib [1.21.1] [1.20.6] [1.19.4]

Введение

Многочисленные моды Minecraft интегрировали функциональные возможности как в 2D, так и в 3D средах[1][2][3], однако методы прямого перебора часто оказываются неэффективными. В этой связи мы представляем Tetrachord Lib, легковесную библиотечную модификацию, разработанную для оптимизации разнообразных структур данных.

Связанные работы

Моды оптимизации на стороне сервера

jellysquid3_[4] представил Lithium, революционный мод оптимизации, улучшающий различные аспекты серверов Minecraft. Используя точные алгоритмы для минимизации доступа к чанкам и блокам, этот мод улучшает не только генерацию мира, но и ИИ мобов, обнаружение столкновений, поиск точек интереса (poi) и другие важные аспекты для повышения вычислительной эффективности и снижения миллисекунд за тик (mspt) на серверах.

Spottedstar[5] представил Starlight, инновационную модификацию, переопределяющую движок освещения Minecraft для повышения производительности при генерации чанков, размещении и разрушении блоков. В отличие от Phosphor[6], Starlight не изменяет ванильную систему движка освещения — вместо этого он революционизирует её, вводя новый алгоритм.

Структуры данных

KD Tree[7] — это структура данных, используемая в многомерных пространствах для хранения и организации k-мерных точек данных. Функционируя как бинарное дерево, каждый узел в KD Tree представляет собой k-мерную точку данных и разделяется в соответствии со значениями признаков (измерений) точки данных. KD деревья особенно хорошо подходят для выполнения запросов по диапазону и поиска ближайших соседей в многомерных наборах данных; они также могут способствовать оптимизации извлечения данных в мире Minecraft. KD Дерево

Segment Tree[8] — это структура данных, используемая для обработки обновлений и запросов диапазонов. Она разделяет сегмент на более мелкие подсекции и организует их иерархически в древовидную структуру. Деревья отрезков эффективны для обновления и запроса диапазонов данных. В контексте мира Minecraft, представленного как 3D тензор, использование дерева отрезков может значительно повысить производительность при частых обновлениях и запросах диапазонов. Дерево отрезков

Эксперименты

Оценка

Spark[9] — это легковесный мод-профайлер производительности, который показывает детальные затраты времени модов, использование памяти и CPU, миллисекунды за тик (mspt) и другие метрики производительности клиентов и серверов. Мы использовали Spark и выбрали затраты времени и mspt в качестве метрик для оценки способности к оптимизации Tetrachord Lib.

Бенчмарки

Мы реализовали упомянутые структуры данных и провели эксперименты, используя следующие бенчмарки:

Отсутствие враждебных существ у костра

В определенном сценарии, когда игроки разжигают костры, области в радиусе нескольких блоков перестают порождать монстров. Исходный мод[1] предлагает метод прямого перебора, включающий множественные обращения к блокам, что приводит к значительному росту mspt на сервере и замедлению работы игровой программы. Мы выбрали использование KD Tree для реализации этого требования. Мы использовали профайлер Spark для записи 1 минуты обычного игрового процесса при разных настройках параметров; результаты эксперимента показаны на следующем рисунке:

Эффективность оптимизации на бенчмарке

Рудные блоки рядом с маяком увеличивают выпадение опыта

Рассмотрим сценарий, при котором игроки добывают блоки рядом с маяком и получают дополнительную награду XP, основанную на количестве рудных блоков вокруг добываемого блока. В таблице ниже показана область воздействия и "балл руды", связанный с каждым типом рудного блока:

Тип рудыМедьЖелезоЗолотоАлмазНезерит
Область воздействия5x59x913x1317x1719x19
Балл руды11123

Мы использовали профайлер Spark для записи размещения 32 рудных блоков и добычи 32 блоков при разных настройках параметров; результаты эксперимента показаны на следующем рисунке:

Эффективность оптимизации на бенчмарке

Заключение

Эксперименты показывают, что Tetrachord Lib играет значительную роль в различных ситуациях и предоставляет высокоэффективный способ реализации некоторых требований по обновлениям и запросам в 2D и 3D пространстве.

Мод Tetrachord Lib в настоящее время функционирует как библиотека, поэтому разработчики могут использовать его как зависимость для повышения производительности своих модов.

Ссылки

[1] Serilum. No Hostiles Around Campfire. CurseForge 2019.

[2] Serilum. Healing Campfire. CurseForge 2019.

[3] Mikul, chubbymomo, skinnymomo. Cold Sweat. CurseForge 2021.

[4] jellysquid3_. Lithium. CurseForge 2020.

[5] Spottedstar. Starlight. CurseForge 2021.

[6] jellysquid3_. Phosphor. CurseForge 2019.

[7] Jon Louis Bentley. Multidimensional binary search trees used for associative searching. Commun. ACM 18, 9 (Sept. 1975), 509–517.

[8] Jon Louis Bentley. Solutions to Klee's rectangle problems, Unpublished Manuscript, 1977.

[9] Iucko. Spark. CurseForge 2020.

Скачать Tetrachord Lib

 
Тип Скачать Версия Загрузчик Обновлено Размер
ReleaseTetrachord Lib v1.20.6+1.0.3 NeoForge1.20.5+1 NeoForge19 августа 2024504,9 КБ
ReleaseTetrachord Lib v1.21+1.0.31.21+1 NeoForge19 августа 2024504,9 КБ
ReleaseTetrachord Lib v1.20+1.0.3 NeoForge1.20.2+2 NeoForge11 июля 2024504,4 КБ
ReleaseTetrachord Lib v1.20.6+1.0.31.20.5+1 Forge28 июня 2024515,8 КБ
ReleaseTetrachord Lib v1.20.6+1.0.3 Fabric1.20.5+1 Fabric28 июня 2024516,4 КБ
ReleaseTetrachord Lib v1.16+1.0.3 Fabric1.16+5 Fabric13 апреля 2024518,1 КБ
ReleaseTetrachord Lib v1.17+1.0.3 Fabric1.17+1 Fabric13 апреля 2024518,5 КБ
ReleaseTetrachord Lib v1.18+1.0.3 Fabric1.18+2 Fabric13 апреля 2024518,5 КБ
ReleaseTetrachord Lib v1.19+1.0.3 Fabric1.19+4 Fabric13 апреля 2024521,7 КБ
ReleaseTetrachord Lib v1.20+1.0.3 Fabric1.20+5 Fabric13 апреля 2024521,7 КБ
Пожалуйста авторизуйтесь, чтобы оставить свой комментарий.