Дорожная карта
На этой странице описаны четыре долгосрочных направления mcrs. Про каждое сказано, что уже есть и чего еще не хватает. Страница пригодится, если вы хотите понять, куда идет проект, прежде чем строить на нем что-то свое или присылать код.
Направление задают четыре issue
Заголовок раздела «Направление задают четыре issue»В проекте нет эпиков в привычном смысле. Эту роль играют четыре открытые 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для открытых.
Эту страницу обновляют вручную при каждом новом теге.
Footnotes
Заголовок раздела «Footnotes»-
В работе#180 Направление: mcrs как библиотека, от прокси до полного сервера. ↩
-
Решения нет#321 Отслеживает готовность крейтов протокола, сети и игровых данных к публикации. ↩
-
Не планируется#437 Решение о том, что фасадного или API-крейта нет, а публичная поверхность - сами крейты и плагины. ↩
-
В работе#181 Направление: одно измерение на многих узлах для тысяч игроков. ↩
-
Работает#646 Миры тикают параллельными ячейками за мультиплексором с общим слоем данных. ↩
-
В работе#182 Направление: геймплей ванили и тесты поведения на масштабируемой архитектуре. ↩
-
В работе#566 Направление: код библиотеки без разделяемого владения, блокировок, трейт-объектов и аллокаций на горячем пути. ↩
Источники и проверка
Проверено: 26.4-snapshot-7, 3540f457b, 2026-11-10
Переведено с версии 3540f457b