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

Дорожная карта

Меняется. Следите: #180, #181, #182, #566

На этой странице описаны четыре долгосрочных направления mcrs. Про каждое сказано, что уже есть и чего еще не хватает. Страница пригодится, если вы хотите понять, куда идет проект, прежде чем строить на нем что-то свое или присылать код.

В проекте нет эпиков в привычном смысле. Эту роль играют четыре открытые issue с заголовком “Direction:”. У каждой есть метка direction:* и ссылки на работу под ней.

mcrs как библиотека, от прокси до полного сервера

Заголовок раздела «mcrs как библиотека, от прокси до полного сервера»

Прокси, бот, лобби, мини-игра, карта мира и полный сервер используют разные префиксы одних и тех же слоев, и никто из них не должен платить за слой, которым не пользуется.1 Issue определяет семь слоев, и каждый зависит только от тех, что лежат ниже. Снизу вверх это данные и протокол (wire), сеть, игровые данные, движок, ваниль, рендеринг и приложения. Каждый pub-элемент в слоях с 1 по 4 - обязательство перед пользователями.

Число крейтов в репозитории сегодня - 122. В CI без Bevy из них собираются 100, без std - 9, под wasm32 - 11. Списки лежат в xtask/src/checks.rs. Крейты пока не опубликованы, а примеры библиотеки еще открыты в вехе “Library examples”.2

Фасадного или API-крейта нет, и он не планируется. Публичная поверхность - это крейты словаря, плагины с их наборами систем и компоненты, ресурсы и сообщения, которыми владеют эти плагины.3 Для загрузчика плагинов, которые не компилируются в сервер, например JAR, wasm или скриптов, решения пока нет.

Одно измерение на многих узлах для тысяч игроков

Заголовок раздела «Одно измерение на многих узлах для тысяч игроков»

Цель - десять тысяч игроков в одном измерении с немодифицированным клиентом ванили, при этом каждый клиент видит ограниченное число.4 Issue описывает, как устроена такая система. Клиенты говорят только с граничным узлом (edge), который держит каждое соединение всю сессию. Симуляция делится на шарды, которые владеют связанной работой. Узлы владеют чанками и их шардами, а координатор владеет картой соответствия чанков узлам и глобальным состоянием. Результат не должен зависеть от числа потоков и раскладки шардов.

Сегодня миры тикают параллельными ячейками за потоком-мультиплексором с общим слоем данных, на одной машине.5 Конфигурации на нескольких машинах нет, и число игроков никто не измерял. Редстоуна нет.

Геймплей ванили и тесты поведения на этой архитектуре

Заголовок раздела «Геймплей ванили и тесты поведения на этой архитектуре»

Поведение ванили - самый большой объем работы.6 Issue строит его как съемные плагины поверх движка. Каждую механику должен доказывать тест поведения, а ожидаемый результат такого теста берется с тестового сервера ванили, а не из нашего чтения кода. Точное поведение, то есть протокол, сохранения, движение игрока и генерация мира, сравнивается тик в тик. Смысловое поведение, то есть редстоун, жидкости и обновления соседей, сравнивается по итогу.

Что есть сегодня, описано в Статусе. У геймплейных вех от “Redstone” до “Advancements and statistics” (их 17) нет ни одной закрытой issue.

Код библиотеки без разделяемого владения, блокировок, трейт-объектов и аллокаций на горячем пути

Заголовок раздела «Код библиотеки без разделяемого владения, блокировок, трейт-объектов и аллокаций на горячем пути»

Крейты библиотеки должны работать в прокси, боте, веб-клиенте и тесте без движка.7 Issue задает цель для слоев с 1 по 4. В них не должно быть Arc и Rc, Mutex, RwLock, RefCell и Cell в типах данных, dyn и Any, а также аллокаций на горячих путях. На момент написания issue Arc встречался в 119 исходных файлах. Строка README “no Arc, no Mutex” называет эту цель, и код ее пока не достиг.

Вехи ведутся на странице вех GitHub, там же живые счетчики открытых и закрытых issue. Закрытая issue не всегда значит “сделано”, а открытая не всегда значит “кода нет”, так что читайте счетчики как грубую карту.

  • Следите за четырьмя issue с направлениями выше.
  • Читайте страницу Новости после каждого тега.
  • Фильтруйте issue по меткам: decision для решений, needs-decision для открытых.

Эту страницу обновляют вручную при каждом новом теге.

  1. В работе#180 Направление: mcrs как библиотека, от прокси до полного сервера. ↩

  2. Решения нет#321 Отслеживает готовность крейтов протокола, сети и игровых данных к публикации. ↩

  3. Не планируется#437 Решение о том, что фасадного или API-крейта нет, а публичная поверхность - сами крейты и плагины. ↩

  4. В работе#181 Направление: одно измерение на многих узлах для тысяч игроков. ↩

  5. Работает#646 Миры тикают параллельными ячейками за мультиплексором с общим слоем данных. ↩

  6. В работе#182 Направление: геймплей ванили и тесты поведения на масштабируемой архитектуре. ↩

  7. В работе#566 Направление: код библиотеки без разделяемого владения, блокировок, трейт-объектов и аллокаций на горячем пути. ↩

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

Проверено: 26.4-snapshot-7, 3540f457b, 2026-11-10

Переведено с версии 3540f457b

Следить: #180, #181, #182, #566