VanguardReMaster/docs/client-visual-direction.md

62 lines
3.8 KiB
Markdown
Raw 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.

# Клиент: визуальное направление
**Статус:** зафиксировано 2026-10-21. Это решение для клиента Unity;
серверные контракты и `Vanguard.Rules` не меняются.
## Решение
- Клиент делаем в **3D** (Unity 6, URP), а не как плоский 2D-интерфейс.
- Основные экраны — **отдельные сцены**, каждая со своим 3D-окружением,
камерой, светом и UI-слоем:
1. **Login** — вход/регистрация;
2. **Lobby** — лобби, профиль, выбор режима, очередь, магазин/история;
3. **DeckBuilder** — коллекция и конструктор колоды в одной сцене;
4. **Battle** — боевой стол.
- **Boot** — служебная сцена: поднимает `VanguardApp`, DI-контейнер,
сервисы, сеть, аудио и локализацию. Пользователю не показывается.
- Очередь, онбординг и настройки — **оверлеи внутри Lobby**, отдельными
сценами не являются.
- В Unity «отдельные окна» означают **отдельные сцены-экраны** внутри
одного окна приложения, а не несколько OS-окон.
## Что остаётся общим
Между сценами живут и не пересоздаются:
- `VanguardApp` + VContainer;
- `ApiClient`, `AuthService`, `MetaService`, `TokenStore`, `PlayerState`;
- `GameConnection` и боевое состояние;
- аудио, локализация, Addressables, настройки;
- `SceneFlow` — единая точка переходов между сценами.
Сцены отвечают за 3D-презентацию и свой UI. Сервисы не должны зависеть от
конкретной сцены.
## Статус миграции
Сцены `Login`, `Lobby`, `DeckBuilder`, `Battle` созданы;
`VanguardApp` и общие сервисы персистентны, `SceneFlow` загружает сцены.
Сейчас 3D-окружение собрано из примитивов, UI — code-generated uGUI.
Дальше: арт/модели, prefab-экраны, анимации и наполнение сцен.
Уже перенесено:
- `LoginView` → сцена **Login** (3D-фон/стол, форма поверх);
- `MetaView`/`OnboardingView`/`QueueView` → сцена **Lobby**;
- `DeckBuilderView` → сцена **DeckBuilder** (коллекция + редактор колоды);
- `BattleView` → сцена **Battle**.
Сетевые и доменные классы (`GameConnection`, `ApiClient`, `MetaService`)
перенесены без изменения контрактов. `Boot` остаётся стартовой сценой,
`VanguardApp` — персистентным composition root.
## Ограничения и следующие шаги
- Пока нет 3D-ассетов: карты показываются процедурными градиентными
артами по клану и рубашкой (имя/ранг/триггер/сила). Арт и 3D-модели
будут подключаться по `cardId` через Addressables.
- Ближайший визуальный шаг — наполнить сцены моделями/артом и перевести
UI на prefab-экраны; логика и `SceneFlow` уже готовы.
- Боевые анимации, камера и 3D-карты — после стабилизации сетевого
протокола и базового UI.