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

70 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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-сценариев и защиты призовой сессии.