Глоссарий
В этом глоссарии объясняются термины, которые встречаются в коде, спецификациях и документации mcrs. Если вы знаете Paper или Minestom, в последней колонке каждой таблицы названа ближайшая идея оттуда. Совпадение редко бывает точным, поэтому определением считайте колонку “Значение”. Прочерк в последней колонке значит, что близкой идеи нет.
Rust и Bevy
Заголовок раздела «Rust и Bevy»| Термин | Значение | Ближайшее в 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