VanguardReMaster/docs/client-visual-direction.md

6.2 KiB
Raw Blame History

Клиент: визуальное направление

Статус: зафиксировано 2026-10-21. Это решение для клиента Unity; серверные контракты и Vanguard.Rules не меняются.

Решение

  • Клиент делаем в 3D (Unity 6, URP), а не как плоский 2D-интерфейс.
  • Основные экраны — отдельные сцены, каждая со своим 3D-окружением, камерой, светом и UI-слоем:
    1. Login — вход/регистрация;
    2. Lobby — лобби, профиль, выбор режима, очередь, магазин/история;
    3. DeckBuilder — коллекция и конструктор колоды в одной сцене;
    4. Battle — боевой стол.
  • Исключения (решения 2026-10-31): Login — 2D key art, Lobby — 2D дашборд по референсу; 3D-окружение в этих сценах не строится. Правило «3D» остаётся для DeckBuilder и Battle.
  • Community — отдельная сцена (гайды, колоды, тикеты), добавлена в план TASK-2026-022; пока каркас с заглушками.
  • Boot — служебная сцена: поднимает VanguardApp, DI-контейнер, сервисы, сеть, аудио и локализацию. Пользователю не показывается.
  • Очередь и настройки — оверлеи внутри Lobby, отдельными сценами не являются. Выбор стартовой триал-деки — отдельный экран до Lobby; в самом Lobby онбординг не показывается (заменится обучением).
  • В Unity «отдельные окна» означают отдельные сцены-экраны внутри одного окна приложения, а не несколько OS-окон.

Что остаётся общим

Между сценами живут и не пересоздаются:

  • VanguardApp + VContainer;
  • ApiClient, AuthService, MetaService, TokenStore, PlayerState;
  • GameConnection и боевое состояние;
  • аудио, локализация, Addressables, настройки;
  • SceneFlow — единая точка переходов между сценами.

Сцены отвечают за 3D-презентацию и свой UI. Сервисы не должны зависеть от конкретной сцены.

Статус миграции

Сцены Login, Lobby, DeckBuilder, Battle созданы; VanguardApp и общие сервисы персистентны, SceneFlow загружает сцены. Сейчас 3D-окружение собрано из примитивов, UI — uGUI; статические части боевых overlay-экранов вынесены в Resources/Overlays/*.prefab, остальные панели пока code-generated. Боевое поле уже 3D: GameBoard3D строит стол, круги, руку и стопки, поддерживает drag&drop, Rest/фейс-даун и ограниченную камеру. Песочница — Assets/Vanguard/Scenes/GameBoard3D.unity. Дальше: 3D-модели карт/стола, prefab-экраны сцен, анимации и наполнение сцен.

Уже перенесено:

  • LoginView → сцена Login (2D key art, форма поверх);
  • MetaView/OnboardingView/QueueView → сцена Lobby;
  • DeckBuilderView → сцена DeckBuilder (коллекция + редактор колоды);
  • BattleView → сцена Battle.

Сетевые и доменные классы (GameConnection, ApiClient, MetaService) перенесены без изменения контрактов. Boot остаётся стартовой сценой, VanguardApp — персистентным composition root.

Взаимодействие

  • Выбор объектов — только интерактивом по сцене: карта, круг, зона, поле. Не показываем список кнопок «выбрать карту/круг» вместо клика по объекту.
  • Кнопки остаются для глобальных действий и подтверждений (завершить ход, сдаться, отмена, принять/пропустить опциональную способность).
  • Информационные оверлеи только объясняют, что требуется; они не перехватывают клики и не дублируют выбор кнопками.
  • ActionPrompt в бою — информационный слой; подсветка на 3D-поле показывает доступные карты/круги/зоны.
  • Верхний CombatStats strip — допустимый HUD (решение 2026-10-24); world-space Power/Shield — отдельный отложенный шаг.
  • Для multi-target стоимости требуется отдельный CostPaymentOverlay; выбор в панели «Действия» — промежуточная реализация.

Ограничения и следующие шаги

  • Пока нет 3D-ассетов: карты показываются процедурными градиентными артами по клану и рубашкой (имя/ранг/триггер/сила). Арт и 3D-модели будут подключаться по cardId через Addressables.
  • Ближайший визуальный шаг — наполнить сцены моделями/артом и перевести UI на prefab-экраны; логика и SceneFlow уже готовы.
  • Боевые анимации, камера и 3D-карты — после стабилизации сетевого протокола и базового UI.