Техническая документация

Moon Courier Crisis

Что где лежит в коде, как запускается и что проверялось.
Версия b6b24e121536 · подготовлено 7 сентября 2026

О проекте

Интерфейс React и игровые сцены Phaser должны обмениваться состоянием миссии. Переход к результату и повторный запуск не должны оставлять состояние прошлой попытки.

Игра про курьера на Луне. Выбор миссии, маршрут, события по радио и результат смены. React отвечает за интерфейс, Phaser — за игровые сцены. Всё работает в браузере, бэка нет.

  • Управление маршрутом рассчитано на мышь и клавиатуру. Мобильные экраны адаптированы, полноценное touch-управление маршрутом не заявляется.
  • Первый доступный commit — baseline готовой стадии, поэтому он не определяет начало разработки.
  • Нет внешних интеграций или серверной БД: миссия выполняется в браузере.

Скриншоты, схемы и исходные материалы сохранены на языке оригинала; подписи и описание переведены.

Архитектура и схемы

  • React отвечает за интерфейс, Phaser — за canvas и игровой цикл.
  • Состояния выбора уровня, брифинга, миссии и результата разделены.
  • После поражения повтор возвращает в брифинг; новая смена запускается явным действием.
Компоненты опубликованного демо
Компоненты опубликованного демо · Mermaid ↓
Основной сценарий
Основной сценарий · Mermaid ↓
Размещение опубликованной версии
Размещение опубликованной версии · Mermaid ↓

Code-map: файлы и связи

Карта привязана к версии b6b24e121536. В таблице — экран или API, связанный модуль и данные.

ФункцияЭкран / APIМодульДанные / проверка
ЗапускВыбор / брифингsrc/ui/store/gameStore.ts; src/game/createGame.tslevel config; production browser QA
МаршрутCanvassrc/game/MapScene.ts; simulation/routing/confirmRouteDraft.tsrouteDraft / findWeightedRoute; фактический маршрут
СобытияРадиопанельsimulation/radio/createRadioJournal.tsformatRadioEvent; игровая история
СимуляцияМиссия / результатsimulation/createSimulationEngine.ts; clock/fixedStepClock.tsсостояния курьеров и центров; unit suite
Мобильный видPreflight / radioReact styles / src/ui390px; no-overflow QA

Как работать с картой

  1. Перед изменением найти функцию и пройти связи до API, состояния и хранилища.
  2. Проверить входы, ошибки, повторные события и зависимые сценарии.
  3. После изменения обновить карту и затронутые схемы вместе с кодом.
  4. Выполнить связанные проверки и привязать новые материалы к версии исходников.

Сценарии и API

  1. Выберите уровень и прочитайте брифинг.
  2. Начните смену, выберите курьера и назначьте маршрут.
  3. Откройте радиопанель и проследите событие миссии.
  4. Дождитесь результата, нажмите повтор и запустите новую смену из брифинга.

Проверка опубликованной версии

  • Исходный полный набор: 464 unit-теста, 20 E2E и один skip. После CSS-правки повторены production build, assets и мобильный QA.
  • Production build / assets
  • Desktop route and actual defeat/replay
  • Mobile levels, briefing, radio; no overflow
  • Подтверждённого GitHub CI для этого SHA нет; перечислены выполненные локальные проверки и сценарии опубликованной версии. Исторические CI-ссылки, если есть, отмечены отдельно.

Эти проверки относятся к указанной версии. Коммерческие показатели и качество моделей на независимой выборке здесь не измерялись.

Измерения

Общий ресурсный контекст VPS для статического демо · 2026-09-07T01:08:27 — 01:11:22 UTC
Общий ресурсный контекст VPS для статического демо · 2026-09-07T01:08:27 — 01:11:22 UTC · Исходные данные ↓
Измеренные повторения сценария через HTTPS · 2026-09-07T01:08:36 UTC; ограничения методики в JSON
Измеренные повторения сценария через HTTPS · 2026-09-07T01:08:36 UTC; ограничения методики в JSON · Исходные данные ↓
  • Сохранено 15 содержательных кадров фактического интерфейса.
  • Дата, сценарий и версия указаны у каждого кадра.
  • Отдельного backend-процесса на VPS нет: Nginx раздаёт статику. Ресурсы общего Nginx нельзя честно приписать одному сайту.
  • Измерено 6 повторений сценария; медиана 61.0 мс, максимум 1770 мс. Время включает браузер и HTTPS; методика и ограничения приложены.

Запуск и эксплуатация

Игра выполняется в браузере. Сервер отдаёт статику, внешних платёжных или AI-интеграций нет.

Production-сборка с проверкой TypeScript и ассетов выполняется вне VPS. На сервере Nginx отдаёт готовый каталог; постоянного backend нет.

Для проверки пройти реальные состояния миссии, не подменяя результат через test hooks. В evidence сохранены фактическое поражение и повтор. Кадры разных релизов отмечены индивидуально; мобильная правка меняет layout, а не игровую механику.

Сборка вне VPS, на сервер уходят готовые файлы и образы с фиксированной версией. Секреты отдельно. Логи ротируются; после изменения log options контейнер нужно пересоздать. Общий docker prune не используется.

Code-map связывает экран или API с модулем и данными. При правке нужно проверить эти связи, обновить карту и прогнать затронутые сценарии: обычный проход, ошибку, повтор, сброс. Схема может устареть, поэтому её версия указана рядом.

Откат проверен 2026-09-07T00:59:40.423436+00:00: 20260907-verified → 20260907b → 20260907-verified. После каждого переключения подтверждены HTTPS, readiness и SHA. Это проверка конфигурации и артефактов на одном проверенном SHA; обратная миграция БД не выполнялась.

Стек

ReactБрифинг, панели, подсказки и результат миссии.
PhaserCanvas, игровой цикл, сцены, маршруты и объекты.
TypeScript / ViteМодель игры, production-сборка и проверка ресурсов.

Материалы и исходники

Сохранённая история стадий: август 2026; начало разработки не установлено. Публикация демо: 7 сентября 2026.

Архив материалов на языке оригинала.