Подробные изменения: - Добавлена система призовых уровней и выдачи призов с QR-контуром Telegram, шаблоном сообщения и генерацией QR без внешних библиотек. - Доработаны сервисные настройки: действия кнопок, модальные окна, ввод с джойстика/клавиатуры, статистика, настройки призов и маршрутизация QR. - Переработаны gameplay HUD и overlay-панели на UI Toolkit со спрайтовыми плашками, DEV BUILD-статистикой, экраном продолжения и экраном результата приза. - Исправлены сценарии смерти, GameOver, продолжения игры, начисления очков за высоту и перехода в главное меню. - Перенесены UI-шаблоны из Resources в Assets/UI, подключена Addressables-загрузка шаблонов настроек и standalone-стили для MainMenuModals. - Добавлены EditMode/PlayMode тесты для призов, QR, arcade input, UI-модалок, scene flow, HUD и gameplay-сессии. - Обновлены сцены, настройки Addressables, service settings database, документация и дорожная карта. Проверки: - Targeted EditMode QR/UI/settings: 23/23 passed - Targeted UI templates/EditMode: 17/17 passed - MainMenuUxmlTests: 3/3 passed - Full EditMode: 129/129 passed - PlayMode: 6/6 passed - Runtime Addressables template load check: loaded=5 - Unity Console после финального refresh: 0 errors
125 lines
10 KiB
Markdown
125 lines
10 KiB
Markdown
# 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.
|