Danro-Jump/ROADMAP.md
Danil Iarosh d39d160d92 Implement physical prize dispensing, service stats, and QR screen timeout
- Добавлен асинхронный процесс аппаратной выдачи физических призов (хоппер и витрина) в GameplayHudController.
- Реализована блокировка выдачи по 10-секундному таймауту датчика хоппера с гарантированной отправкой команды отключения двигателя '300'.
- Реализован автоматический таймаут неактивности на экране QR-кода с последующим переходом в главное меню.
- Расширен сервис статистики PrizeSessionStateService новыми долгосрочными счетчиками (сыгранные игры, очки, монеты, сбои связи COM, физ. выдачи и ошибки).
- Обновлен построитель сводки статистики в меню настроек для отображения новых счетчиков и списка последних 5 сессий.
- Написаны EditMode тесты для проверки инкремента счетчиков и запуска выдачи призов.
2026-06-23 10:36:13 +03:00

11 KiB
Raw Blame History

Roadmap

Документ описывает актуальную дорожную карту Danro Jump по состоянию на 2026-06-15. Статусы:

  • ✅ реализовано и уже есть в проекте
  • 🟡 частично реализовано или требует проверки на целевом автомате
  • ⚪ запланировано

Что уже реализовано

В текущей рабочей версии завершены основные подсистемы: gameplay loop, экономика, призовой flow, сервисное меню, аппаратная интеграция, базовый QR-контур призов, runtime-аудиосистема и базовая защита призовой сессии.

  • ✅ QR-призы: для PrizeRewardKind.QRCode создаётся QR-код со ссылкой Telegram по prizes.phoneNumber, используется шаблон prizes.qrMessageTemplate, QR-блок показывается только на экране QR-приза.
  • ✅ Сервисное редактирование QR-сообщения: действие btn.qr_settings открывает ввод шаблона через сервисное меню и поддерживает управление клавиатурой/дискретным джойстиком с одной кнопкой.
  • ✅ Runtime-аудиосистема: добавлены аудиосервис, настройки, микшер и базовые placeholder-клипы для игровых, UI- и призовых событий.
  • ✅ Защита призовой сессии: добавлен runtime-журнал призовых сессий, блокировка повторного старта выдачи в рамках одной игровой сессии, persistent recovery между перезапусками и сводка в сервисной статистике.
  • ✅ Стабилизация: свежие EditMode/PlayMode-проверки проходили без игровых ошибок, выполнен Windows64 Development build.
  • ✅ Текущее визуальное состояние модальных окон главного меню зафиксировано как правильный baseline. Без отдельного запроса не менять их внешний вид, размеры, цвета, фокусные состояния, текстуры и раскладку.

Ниже перечислены оставшиеся незавершённые задачи по каждому этапу.

Этап 1. Стабилизация основного gameplay loop

  • 🟡 🧯 Провести длительные ручные прогоны gameplay loop с реальной скоростью, большим числом платформ и несколькими подряд джетпаками

Этап 2. Развитие контента платформера

  • 🟡 ✨ Звуковой слой уже подготовлен; дальше нужно заменить placeholder-клипы на финальные SFX, настроить уровни микшера и добавить VFX-реакции на прыжки, подбор предметов, урон, смерть, бонусы и работу оборудования
  • ⚪ 🎨 Расширить набор игровых тем, анимаций и VFX для ощущения готового продукта

Этап 3. Экономика, призы и правила сессии

  • 🟡 📲 Базовый контур выдачи призов через QR-коды реализован: генерация QR, экран показа, связь с призовой логикой и редактирование шаблона Telegram-сообщения через сервисное меню работают; широкая кастомизация сценариев и визуала ещё впереди
  • 🟡 💾 Статистика и история сессий: сервисная статистика уже показывает сводку по настройкам, стоимости старта и runtime-журналу призовых сессий; полная долговременная история, результаты аппаратной выдачи и спорные ситуации пока не реализованы
  • ✅ 🛡️ Защита от повторной выдачи призов: runtime-журнал, блокировка повторного старта одной игровой сессии, persistent recovery после перезапуска и фиксация аварийно оборванной выдачи уже реализованы; следующий шаг здесь — связать это с подтверждением фактической hardware-выдачи

Этап 4. Сервисный режим и настройки персонала

  • 🟡 🔐 Startup protection есть, но роли/пароль/ограничение доступа к служебным настройкам ещё не выделены как отдельный сервисный контур
  • ✅ 🪟 Модальные окна главного меню визуально доведены до текущего целевого состояния; дальнейшие изменения здесь делать только точечно и только после отдельного подтверждения

Этап 5. Аппаратная интеграция и эксплуатационная готовность

  • 🟡 🔌 COM-система интегрирована с реальным протоколом на уровне транспорта, ролей, входов, ADC, денежного баланса, витрины и подсветки; нужна проверка полного сценария на целевом автомате
  • 🟡 🧯 Обработка ошибок связи, таймаутов и reconnect частично реализована, но graceful shutdown фоновых COM-задач и длительные стресс-прогоны ещё нужны
  • 🟡 🔗 Игровые события связаны с аппаратным контуром через денежный баланс, ввод, витрину и подсветку; призовая экономика завершена на уровне решения о призе, QR-контур подключён, но hardware-выдача и подтверждение фактической выдачи ещё требуют отдельной интеграции
  • ⚪ 🏁 Провести длительные прогоны на целевом устройстве: утечки, перегрев, стабильность COM, восстановление после отключения устройств и поведение после аварийного закрытия

Приоритетный план

Приоритет 1. Надёжность призовой выдачи и эксплуатационная статистика

  1. ✅ Добавить persistent recovery для призовых сессий: активная/выданная/ошибочная призовая сессия сохраняется между перезапусками, незавершённая выдача после аварийного закрытия автоматически переводится в ошибку recovery, а повторная выдача той же игровой сессии остаётся заблокированной.
  2. Расширить статистику сервисного экрана: долговременная история игровых сессий, результаты выдачи призов, QR-показы, ошибки, спорные состояния, сбои связи и эксплуатационные счётчики.
  3. Подключить фактическое подтверждение hardware-выдачи призов: связать решение о призе, состояние автомата, ошибки выдачи и журнал призовой сессии.
  4. Расширить QR-контур без смены источника контакта: оставить prizes.phoneNumber единственным контактом владельца, но добавить настройку визуала QR-экрана, ограничений и поведения при ошибках.

Приоритет 2. Feedback-система, тесты и полировка

  1. Довести аудио до финального состояния: заменить placeholder-клипы, отстроить громкости микшера, добавить пользовательские/сервисные настройки громкости и проверить поведение на целевом автомате.
  2. Подготовить VFX-слой по аналогии с аудио: единые события для прыжков, подборов, монет, урона, смерти, бонусов, джетпака, врагов, UI-кнопок, выдачи призов, ошибок и QR-сценариев.
  3. Расширить тестовое покрытие по всем аспектам игры: gameplay, баланс, старт/continue, настройки, сервисные кнопки, модальные окна, scene flow, COM input, призовой flow, QR, защиту от повторной выдачи, game over, джетпак, врагов и аварийные сценарии.
  4. Полировать визуал, звук и ощущения gameplay, не меняя текущий визуальный baseline модальных окон главного меню без отдельного запроса.

Пониженный приоритет

  1. Отдельный большой экран диагностики COM пока не делать. На текущем этапе достаточно debug-каналов, служебных действий и точечных модальных окон. Отдельную диагностику стоит выделять позже, если появится реальная эксплуатационная необходимость или требования целевого автомата.
  2. Провести длительные ручные и аппаратные прогоны на целевом автомате после завершения QR-сценариев и защиты призовой сессии.