Перейти к содержимому

Tetrachord Lib

Легковесный библиотечный мод, предоставляющий различные структуры данных, такие как KD-деревья и деревья отрезков, а также некоторые другие утилитарные функции.

FabricNeoForgeForge
Загрузчики
FabricNeoForgeForge
Скачиваний на Modrinth
37,8 тыс.
Подписчиков на Modrinth
5
версий
27
Обновлён
2 июня 20262 июн.
Опубликован
в 2024
Это библиотека — она нужна другим модам и сама ничего не добавляет в игру
Effectiveness of Optimization Figure 1 — Effectiveness of Optimization on "No Hostiles Around Campfire" Benchmark · свайп

Коротко о моде

Библиотека — нужна другим модам
Работает на Fabric, NeoForge и Forge
Для Minecraft 1.16–26.1.2
Работает и в игре, и на сервере — ставьте, где нужен
Последняя версия — 26.1+1.0.3 от 2 июня 2026
Лицензия LGPL-2.1-or-later — бесплатно
Где нужен
В игренеобязателенНа серверенеобязателен

Работает и в игре, и на сервере — ставьте, где нужен

Версии игры1.16–26.1.2
Описание переведено автоматическиПоказать оригинал (EN)

Введение

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

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

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

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

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

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

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

KD Tree

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

Segment Tree

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

Оценка

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

Бенчмарки

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

No Hostiles around Campfire

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

Эффективность оптимизации на бенчмарке "No Hostiles Around Campfire"

Ore Blocks near Beacon Increase Xp Drop

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

Тип рудыCopperIronGoldDiamondNetherite
Область отклика5x59x913x1317x1719x19
Очки руды11123

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

Эффективность оптимизации на бенчмарке "Ore Blocks Near Beacon Increase Xp Drop"

Заключение

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

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

Ссылки

[1] Serilum. No Hostiles Around Campfire. Modrinth 2022.

[2] Serilum. Healing Campfire. Modrinth 2022.

[3] Mikul, chubbymomo, skinnymomo. Cold Sweat. Modrinth 2023.

[4] jellysquid3_. Lithium. Modrinth 2021.

[5] Spottedstar. Starlight. Modrinth 2021.

[6] jellysquid3_. Phosphor. Modrinth 2021.

[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. Modrinth 2021.

Частые вопросы

Как установить Tetrachord Lib?

Установите Fabric под свою версию Minecraft, скачайте Tetrachord Lib под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть Tetrachord Lib?

У Tetrachord Lib есть сборки для Minecraft 1.16–26.1.2.

Нужен ли Tetrachord Lib на сервере?

Работает и в игре, и на сервере — ставьте, где нужен

Лицензия и источник
GNU Lesser General Public License v2.1 or laterможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее