Симулятор метро
на Rust и wgpu

Отдельная программа, которая запускает оригинальную кабину 81-717 и Lua-логику Metrostroi прямо из ваших файлов Steam Workshop. Все 353 кнопки работают как в игре — можно завести холодный и тёмный поезд, поехать по трассе, остановиться на станции и выйти из кабины пройтись по вагону.

Rust 2021wgpu 30Lua 5.1 (mlua) Windowsбез конвертации ассетов
Кабина 81-717 с подсказкой по кнопке и HUD

Что уже работает

Проект идёт по дорожной карте от просмотрщика моделей до полноценной игры. Вот что собрано сейчас.

🎛️

Кабина 1:1

Все 353 кнопки и тумблера нажимаются мышью и вызывают настоящие ButtonEvent Lua. Подсказки — русские описания из языковых файлов Metrostroi.

🚆

Физика и ARS

Тяга, торможение и уклон из полей тележек, которые пишет Lua. АРС-заглушка ограничивает скорость по кодам и срабатывает автостоп.

🗺️

Метро Москвы

34 маршрута по реальным станциям и расстояниям между ними (OpenStreetMap), профиль глубины и кривые с сопротивлением. Выбор линии в меню.

🚃

Составы и физика

Несколько вагонов с общими поездными проводами Metrostroi, динамика по силам тележек, сопротивление в кривых, проверка разгона и торможения тестом.

✨

Графика

Уровни качества до Ультра: HDR, свечение, затенение в углах (SSAO), масштаб рендера 50–100 %.

🗺️

Трасса и мир

Путь и знаки из данных карты, геометрия BSP с встроенными текстурами. Машина стоит в начале координат, мир движется вокруг.

🚦

Сигналы и блоки

Светофоры и путевые знаки расставлены по таблицам сущностей Metrostroi. Стоящий впереди поезд делает сигналы красными и жёлтыми.

🚉

Станции

Платформы из сущностей карты: расстояние, сторона дверей, предупреждения об открытых дверях и точность остановки.

🔊

Звук

Циклы и одиночные звуки из Lua (пневматика, реле, компрессор, качение колёс) играются из ваших Workshop-паков.

🚶

Ходьба и коллизии

Встаньте с кресла и ходите по салону; через открытую дверь выходите на платформу. Стены карты и вагона не пускают.

🧭

Меню и HUD

Главное меню, пауза, настройки (FOV, мышь, громкость), справка, скорость, лимит АРС и следующий сигнал.

Как это устроено

Смешанная схема: ядро (физика, рендер, ввод) на Rust, системы поезда — оригинальный Lua Metrostroi поверх тонкой прослойки GMod API.

formatsGMA и VFS, MDL/VVD/VTX, VTF/VMT, BSP с сущностями и встроенным архивом
читает Workshop-паки напрямую
luamlua 5.1 + gmod.lua/entity.lua
171 из 172 системы загружаются, сущность 717 создаётся целиком
viewerокно winit, wgpu-рендер, ввод, HUD, меню
динамика, трасса, станции, сигналы, звук
ФизикаОдномерная модель: масса, тяга и тормоз из полей тележек Lua, уклон по трассе
МирПоезд в начале координат, карта сдвигается; ARS-код приходит от ближайшего светофора
Звукrodio: циклы с громкостью и высотой, случайные одиночные звуки

Управление

Мышьнажать кнопку, перетаскивание — осмотр
F2 F3 F4снаружи · кабина · встать/сесть
WASD Shiftходьба (двери — KDL/KDP)
F5 · F6быстрый запуск · сброс автостопа
Escменю паузы

Холодный и тёмный

Поезд стартует обесточенным. Включите батарею и автоматы, откройте краны машиниста, поставьте реверсор и КВ — и поезд поедет. Подробный порядок — в game/docs/COLD_AND_DARK.md.

Или нажмите F5 и посмотрите, как скрипт проходит процедуру за вас.

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

Сделано и что дальше.

  • Форматы и рендерGMA, MDL со скелетами, VTF, wgpu, скиннинг
  • Lua-хост и кабина353/353 кнопки, анимации из оригинального cl_init
  • Динамика, трасса, АРСезда по карте crossline_c4, автостоп
  • BSP-мир, сигналы, знакисветофоры и таблички по таблицам Metrostroi
  • Блоки, станции, дверистоящий поезд, платформы, предупреждения
  • Звук, меню, HUDциклы и одиночные звуки, настройки
  • Составы, Москва, Ультра-графикавагоны с общими проводами, 34 линии, HDR и SSAO
  • Статистика рейса, сохранение кабиныоценка остановок, переназначение клавиш
  • Ходьба и коллизиисалон, выход через двери, стены
  • Движущиеся ИИ-поезда и стрелкив картах нет данных о ветвлении
  • Усилия в сцепках, проскальзывание колёс
  • Настоящий профиль глубины Москвысейчас приближённый
  • Androidплан в ROADMAP
  • Настоящая цепочка БАРСвместо заглушки
  • Второй тип поездадоказать, что загрузчик не привязан к 717

Сборка и запуск

Нужны Windows, видеокарта с Vulkan/DX12 и ваши подписки на контент Metrostroi в Steam Workshop. Готовая сборка — архив Metrostroi-rs-0.1.0-win64.zip: распаковать и запустить Metrostroi-rs.exe, путь к Workshop находится сам. Сборка из исходников — ниже.

Про ассеты. Модели, текстуры и звуки Metrostroi принадлежат их авторам, поэтому в репозиторий и на этот сайт они не включены. Программа читает их из вашей установки Steam Workshop (GMod, appid 4000) во время запуска; на скриншотах — кадры из самой программы.
git clone https://github.com/LakoMoor/metrostroi-rs
cd metrostroi-rs

# 1) укажите путь к Workshop в game/config/game.json:
#    "workshop": "C:/Program Files (x86)/Steam/steamapps/workshop/content/4000"

# 2) сборка и запуск
cd sim
cargo build --release -p viewer
target/release/metrostroi-rs.exe --cab --at 300

# параметры: --nomenu  --block <м>  --noworld  --shot out.png

Номера Workshop-паков перечислены в game/config/game.json. Подробная инструкция и заметки для ИИ-агентов (Codex, Claude Code) — в SETUP.md, AGENTS.md и CLAUDE.md.