Danil Iarosh e70120f0b0 Improve COM stability, settings security, and add VFX layer
- Оптимизировано закрытие COM-системы: вызов ReadLine вынесен из-под блокировки во избежание зависания главного потока Unity Editor при выходе из игры или выгрузке сцены.
- Реализован контур безопасности: доступ к меню настроек теперь заблокирован за вводом PIN-кода "1234" с использованием существующего экранного модального ввода ServiceTextInputModalWindow.
- Создана и интегрирована централизованная служба визуальных эффектов IVfxService / GameVfxService. Программно генерируются и воспроизводятся эффекты частиц для автопрыжка, сбора монет и гибели персонажа.
2026-06-23 14:56:40 +03:00
2026-05-05 14:52:54 +03:00

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.

Description
Аналог Doodle Jump, тесно связанный с Данро
Readme 176 MiB
Languages
C# 91.7%
ShaderLab 5.3%
GLSL 1.6%
HLSL 1.4%