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

Глоссарий

В этом глоссарии объясняются термины, которые встречаются в коде, спецификациях и документации mcrs. Если вы знаете Paper или Minestom, в последней колонке каждой таблицы названа ближайшая идея оттуда. Совпадение редко бывает точным, поэтому определением считайте колонку “Значение”. Прочерк в последней колонке значит, что близкой идеи нет.

Термин Значение Ближайшее в Paper или Minestom
ECS, сущность (entity), компонент (component), система (system) ECS расшифровывается как entity component system. В Bevy сущность - это id, компонент - данные, которые хранятся на этом id, а система - функция, которая запускается для каждой сущности с нужными ей данными. Ничего близкого. Entity в Minestom - объект с методами, а здесь то же самое разделено на данные и функции.
Bevy-плагин (plugin) Плагин - это единица, которая добавляет в приложение системы и данные. Сервер состоит из группы плагинов MinecraftServerPlugins, и ее части можно отключать через disable. Плагин Paper, только он добавляет в приложение функции, тогда как плагин Paper слушает события. Ближе расширения (extensions) Minestom.
Крейт (crate) Крейт - это пакет Rust. Крейты этого проекта называются mcrs_minecraft_<name>. Модуль Maven или Gradle.
Слои 1-7 (layer) В проекте семь слоев: протокол и данные, сеть, игровые данные, движок, ваниль, рендеринг и приложения. Слой должен зависеть только от слоев ниже, как сказано в разделе “Layers” в README. -
Ядро (kernel) Ядро - это чистая Rust-логика одного домена, например блоков, физики, ИИ или света, и она не использует ни Bevy, ни tokio. Вид на мир ядру передает хост. -
Драйвер (driver) Драйвер - это код, который владеет шардами домена. Он делает в них шаги и доставляет сообщения между ними в стабильном порядке. -
Термин Значение Ближайшее в Paper или Minestom
Домен (domain) Домен - это одна область симуляции. Домены - это обновления блоков, редстоун, жидкости и сущности. -
Шард (shard) Шард - это логическая единица причинности и владения внутри домена. Это не поток и не квадрат пространства. -
Ячейка (cell) Ячейка владеет трехмерной областью горячего пространства и служит единицей размещения. Менять чанки в этой области может только ее владелец. Регион Folia, очень приблизительно.
Дерево ячеек (cell tree) Дерево ячеек - это октодерево над ключами чанков одного мира, а его листья - ячейки. -
Мир движка (world) В движке мир (world) - это одно трехмерное пространство со своим деревом ячеек. Измерение Minecraft - это один world. World в Bukkit, Instance в Minestom.
Горячее и холодное пространство (hot space, cold space) Горячее пространство обновляется каждый тик, и горячим его держит тикет. Холодное пространство - это данные в слое данных, у которых нет владельца. Загруженные и выгруженные чанки, очень приблизительно.
Тикет (ticket) Тикет - это запрос держать область горячей. Его создают зона симуляции игрока, спавн, загрузчик чанков или жемчуг Края. Тикет чанка в Bukkit (addPluginChunkTicket).
Слой данных, хранилище (data layer, store) Слой данных - это версионированные чанки холодного пространства, а хранилище держит их на диске. Код находится в mcrs_engine_store. ChunkLoader в Minestom, очень приблизительно.
Связь и размещение (link, placement) Связь соединяет две части сообщениями. Размещение определяет, где работает дальний конец связи: в том же потоке (inline), в другом потоке или на другой машине. -
Muxer, edge Muxer - это шлюз для клиентов. Он держит соединения, решает, что получает каждый клиент, и кодирует байты один раз для всех подписчиков, а edge - это один процесс muxer. Прокси вроде Velocity, но только та его часть, что держит соединения.
Координатор (coordinator) Координатор владеет глобальным состоянием и деревом ячеек. -
Стадия и лестница (stage, ladder) Стадия - это шаг, который вне тика превращает данные чанка в следующий уровень, например генерация или свет. Лестница - это цепочка стадий одной колонки (Filled, Run, Merged). -
Тайл (tile) Тайл - это квадрат колонок и единица интереса к сущностям и работы с ними. Каждым тайлом владеет одна ячейка. -
Tile delta, tile stream Tile delta - это события сущностей одного тайла за один тик. Tile stream - это снапшот и следующие за ним дельты в порядке тиков. Обновления трекера сущностей, очень приблизительно.
Tier Tier - это скорость обновления. Близкие subject обновляются в быстром tier, а далекие в медленном. Радиус активации сущностей в Paper, очень приблизительно.
Cap, budget Cap - это наибольшее число subject, которые видит один клиент. Budget - это наибольшее число байт в секунду, которое тратится на сущности. -
Subject, viewer Subject - это сущность, которую видят, а viewer - клиент, который ее видит. Оба термина взяты из replication.md. -
Секция и колонка (section, column) Секция - это 16x16x16 блоков, а колонка - стопка секций. Chunk в Minestom, который хранит Section.
Row Row - это серверная запись сущности в плотной колонке тайла. Мобы и предметы - это row, а не сущности Bevy. -
Entity key, order key Entity key хранит id сущности, ее UUID, ее источник новых UUID, ее случайный поток и ее тайл. UUID служит еще и order key. -
Brain, goals, wait Brain - это стадия ИИ мобов, и ее ядро будит только тех мобов, которых называет таймер или факт. Цели (goals) выбираются по тайлам, а ожидания (wait) заменяют проверки на каждом тике. Цели мобов в Paper (Mob, Goal), очень приблизительно.
Volume Volume - это один API для блоков, высот и биомов. Им пользуются генерация мира, клиент и ядра. Block.Getter в Minestom, очень приблизительно.
Collision table Collision table хранит формы и флаги состояния блоков для ядра физики. -
Термин Значение Ближайшее в Paper или Minestom
Exact parity Exact parity значит, что наблюдаемое поведение очень близко совпадает с ванилью. Так должны совпадать протокол, сохранения, движение игрока и генерация. -
Semantic parity Semantic parity значит, что совпадают смысл и результат, а порядок внутри тика может отличаться. Так должны совпадать редстоун, жидкости и обновления блоков. -
Intentional deviation Intentional deviation - это намеренное отличие от ванили, которое записано так, как описывает spec/README.md. -
Spec rule id Spec rule id - это id одного правила в спецификации, например CMD-TP-013. На него ссылаются тесты и issue. -
Provenance label Provenance label называет происхождение правила спецификации, например source_suggested. Метки перечислены на странице Спецификации. -
Oracle, oracle dump Oracle dump - это вывод реального запуска ванили, снятый через tools/vanilla-oracle. Rust-тесты поэлементно сравнивают с ним свой вывод. -
Фикстура, capture, recapture (fixture) Фикстура - это эталонный файл для тестов, capture - команда, которая его снимает, а recapture снимает его заново. MCRS_BLESS=1 перезаписывает ожидаемый файл у некоторых тестов. -
Corpus Corpus - это версия игровых данных, к которой привязаны фикстуры, она записана в captures.json. Тем же словом называют корпус тестов Molang. -
Термин Значение Ближайшее в Paper или Minestom
Clean-room В процессе clean-room автор спецификации, которому разрешено видеть игровой код, записывает поведение, а исполнитель, который читает только спецификации и игровые артефакты, пишет код. Названия из игрового кода в репозиторий не попадают, как объясняет clean-room.md. -
Spec issue, plugin issue Spec issue и plugin issue образуют пару. Сначала появляется спецификация в docs/spec/, а реализация идет за ней и ссылается на id правил. -
Снапшот (snapshot) Снапшот - это тестовая версия игры. mcrs следует за самой новой, сейчас это 26.4-snapshot-7. -
DataVersion DataVersion - это версия формата данных сохранения. Если она не совпадает, мир не загрузится, потому что data fixers нет (Не планируется#388). Та же идея, что в Paper.
Термин Значение Ближайшее в Paper или Minestom
Реестр, датапак (registry, data pack) Реестры, например блоки, биомы и измерения, загружаются из датапака. Сервер загружает 147 реестров, это число взято из раздела “Server start” в PERF.md. Registry в Bukkit, DynamicRegistry в Minestom.
Resource location, key Resource location, или key, - это имя вроде minecraft:stone. Оно живет на границах, то есть в датапаке, протоколе и командах, а внутри код использует числовые id, как объясняет resource-location.md. NamespacedKey, Key в Minestom.
Molang Molang - это язык выражений Bedrock для анимаций и условий. У компилятора mcrs_molang есть пакетный бэкенд и бэкенд WGSL. -
Impostor Impostor - это далекий моб, который нарисован запеченным спрайтом. -
Arena, group table, GPU cull, depth pyramid Эти термины рендерера взяты из PERF.md и DECISIONS.md. Arena - это арена памяти для квадов, моделей или граней, group table - таблица групп секций, GPU cull - отсечение на GPU, а depth pyramid - пирамида глубины для двухпроходной окклюзии. -
Hot Hot - это параметр замеров клиента MCRS_HOT, который не дает быстрым ядрам CPU уйти в простой. Это не то же самое, что hot space. -

Источники и проверка

Проверено: 26.4-snapshot-7, 51d45c26a, 2026-11-09

Переведено с версии 51d45c26a