# Danro Jump `Danro Jump` — Unity-проект вертикального платформера в духе `Doodle Jump`, развиваемый как коммерчески применимая игровая система с аппаратной интеграцией, денежным балансом, призовой витриной, выдачей QR-призов и сервисным контуром для обслуживающего персонала. Проект ориентирован не только на аркадный игровой цикл, но и на эксплуатацию на целевом автомате: запуск через защищённый startup-flow, работу с внешними устройствами по `COM`, настройку экономики без пересборки, диагностику, выдачу призов и сохранение важных эксплуатационных данных. ## Целевая концепция Основные направления продукта: - быстрый вертикальный платформер с короткой игровой сессией; - рост высоты, набор очков, монет и прогрессирующая сложность; - денежный баланс для платного старта и `continue`; - интеграция с внешним оборудованием по `COM`-порту; - выдача малых и больших призов через призовую витрину; - выдача призов или бонусов через `QR`-коды; - сервисное меню для персонала с настройками, статистикой и служебными действиями; - подготовка к длительной работе на целевом автомате. ## Текущий статус Текущая рабочая версия содержит широкий gameplay-, экономический и infrastructure-контур: - Unity `6000.4.9f1`; - сцены `Bootstrap`, `MainMenu` и `Game` добавлены в Build Settings; - старт приложения проходит через `Bootstrap` и сервисные runtime-системы; - настроены `Extenject`, `ProjectContext`, scene installers и `SceneFlowService`; - есть главное меню на UI Toolkit с правилами, настройками, фокусом клавиатуры/геймпада и переходом в игру; - реализован вертикальный gameplay loop: игрок, камера, прыжки, платформы, смерть, respawn, game over и возврат в меню; - есть HUD для счёта, высоты, рекорда, жизней, монет, смертей и состояния сессии; - реализованы платформы, оборудование, коллектаблы, враги, weighted-spawn и ScriptableObject-прогрессия сложности; - реализован и стабилизирован джетпак с подъёмом, блокировкой контактов, attach/detach, падением и VFX; - есть COM-система: serial-транспорт, авторизация, роли устройств, входные биты, ADC, платёжные импульсы, денежный баланс, статусы призовых ячеек и команды открытия; - есть кастомное устройство Input System для COM-контроллера; - платный старт и continue через денежный баланс со списанием и проверкой достаточности; - призовой flow: `PrizeFlowService` оценивает сессию по таблице призовых уровней и определяет тип награды; - экраны continue (`ContinueGameOverlayWindow`) и результата приза (`PrizeResultOverlayWindow`); - таблица призовых уровней с JSON-сериализацией и CRUD через сервисное меню; - сервисное меню с маршрутизацией кнопок: статистика, настройки призов, QR, витрина, телефон, суперприз, поддержка, валюта, тест выдачи; - модальные окна: настройки, правила, информационные, текстовый ввод, таблица и добавление призовых уровней; - сервисные настройки загружаются через Addressables/fallback, сохраняются в JSON и доступны через UI; - есть debug-модуль с каналами логирования, Unity Console/file handlers и development overlay; - заведены EditMode и PlayMode-тесты для ключевых подсистем. ## Архитектура ### Gameplay - `GameplaySession` — управляет состоянием забега: очки, монеты, жизни, смерти, высота, рекорд, continue и призовой flow - `PlatformSpawner` / `PlatformContentSpawner` — спавн платформ и контента по весовым профилям - `GameplayDifficultyProgression` — ScriptableObject-прогрессия сложности по этапам - `JumpPlayerController` — управление игроком, прыжки, смерть, respawn - `VerticalCameraFollow` — вертикальное слежение за игроком ### Экономика и призы - `PrizeFlowService` / `IPrizeFlowService` — оценка завершённой сессии и определение типа награды - `PrizeLevelTable` — таблица призовых уровней с привязкой к порогам очков (JSON) - `PrizeRewardKind` — типы наград: `None`, `Small`, `Big`, `QRCode`, `Hopper`, `PrizeStand` - `PrizeResultOverlayWindow` — полноэкранный результат выдачи приза - `ContinueGameOverlayWindow` — экран предложения продолжить игру за баланс ### Сервисное меню - `SettingsModalWindow` — динамическое построение UI настроек из `ServiceSettingsDatabase` - `ServiceSettingsActionRouter` — маршрутизация кнопок сервисного меню в действия - `PrizeLevelsModalWindow` / `PrizeLevelAddModalWindow` — управление таблицей призовых уровней - `ServiceTextInputModalWindow` — текстовый ввод для телефонов и строковых настроек - `ServiceInfoModalWindow` — отображение результатов сервисных действий - `ModalStackController` — управление стеком модальных окон ### Аппаратура - `ComSystem` — управление COM-устройствами: авторизация, кредиты, ввод, подсветка, призовая витрина - `ComLightingSystem` — аппаратная подсветка: board effects, hat blink, prize showcase - `ComControllerInputBridge` — кастомное устройство Input System для COM-контроллера - `ReflectionSerialComTransport` / `ReflectionComPortProvider` — транспортный слой через System.IO.Ports ### Инфраструктура - `BootstrapEntryPoint` / `StartupProtectionService` — защищённый startup-flow - `SceneFlowService` — централизованная загрузка сцен - `ServiceSettingsService` — чтение, применение и сохранение сервисных настроек - `DebugLogService` — каналы логирования, Unity Console и файловый handler ## Технологическая база - Unity 6; - Universal Render Pipeline для 2D; - Input System; - UI Toolkit; - Test Framework; - Extenject; - UniTask; - Addressables; - DOTween; - NuGet for Unity; - локальная документация и проектные гайды в `GUIDES`. ## Структура репозитория - `Assets/Scripts/Runtime/` — runtime-код, разбитый по подсистемам: `Gameplay`, `Hardware/Com`, `Prizes`, `Settings`, `UI`, `Bootstrap`, `SceneFlow`, `Debugging`; - `Assets/Scripts/Editor/` — редакторские расширения; - `Assets/Tests/` — EditMode и PlayMode тесты; - `Assets/Scenes/` — сцены `Bootstrap`, `MainMenu`, `Game`; - `Packages/` — зависимости проекта и пакетная конфигурация Unity; - `ProjectSettings/` — настройки Unity-проекта; - `GUIDES/` — проектные гайды по архитектуре, пакетам, workflow и инфраструктуре; - `ROADMAP.md` — актуальная дорожная карта проекта; - `.codex/` — локальные настройки агентной работы и RAG/MCP-инфраструктуры. ## Legacy reference В `Assets/Temp/Legacy` сохранён архив старых материалов, которые используются как reference для миграции идей, API и сценариев. Этот код не следует подключать к runtime целиком. Наиболее ценные направления для аккуратного переиспользования: - аппаратный слой и COM-протокол; - призовая витрина; - QR-выдача; - сервисные настройки; - статистика и эксплуатационные UI-сценарии. Перенос должен идти через новые интерфейсы, сервисы и UI-представления проекта, а не через прямой импорт старых managers/controllers.