3.8 KiB
3.8 KiB
Клиент: визуальное направление
Статус: зафиксировано 2026-10-21. Это решение для клиента Unity;
серверные контракты и Vanguard.Rules не меняются.
Решение
- Клиент делаем в 3D (Unity 6, URP), а не как плоский 2D-интерфейс.
- Основные экраны — отдельные сцены, каждая со своим 3D-окружением,
камерой, светом и UI-слоем:
- Login — вход/регистрация;
- Lobby — лобби, профиль, выбор режима, очередь, магазин/история;
- Collection — коллекция карт;
- DeckBuilder — конструктор колоды;
- Battle — боевой стол.
- Boot — служебная сцена: поднимает
VanguardApp, DI-контейнер, сервисы, сеть, аудио и локализацию. Пользователю не показывается. - Очередь, онбординг и настройки — оверлеи внутри Lobby, отдельными сценами не являются.
- В Unity «отдельные окна» означают отдельные сцены-экраны внутри одного окна приложения, а не несколько OS-окон.
Что остаётся общим
Между сценами живут и не пересоздаются:
VanguardApp+ VContainer;ApiClient,AuthService,MetaService,TokenStore,PlayerState;GameConnectionи боевое состояние;- аудио, локализация, Addressables, настройки;
SceneFlow— единая точка переходов между сценами.
Сцены отвечают за 3D-презентацию и свой UI. Сервисы не должны зависеть от конкретной сцены.
План миграции с текущего gray-box
Сейчас работает один runtime-Canvas (AppRootView) со всеми экранами —
это функциональный каркас. Его сохраняем как основу логики и постепенно
разносим:
LoginView→ сцена Login (3D-фон/стол, форма поверх);MetaView→ сцена Lobby (3D-холл, панель профиля и входы в разделы);CollectionView→ сцена Collection (3D-витрина/альбом карт);DecksView+ будущий декбилдер → сцена DeckBuilder (3D-стол, стопка колоды, карты, фильтры);QueueView→ оверлей в Lobby;BattleView→ сцена Battle (3D-стол, зоны, карты, камера, UI рук и таймера).
Сетевые и доменные классы (GameConnection, ApiClient, MetaService)
переносятся без изменения контрактов. Сцены подключаются через
SceneFlow; Boot остаётся загруженной/персистентной.
Ограничения и следующие шаги
- Пока нет 3D-ассетов: карты в gray-box показываются по
printingId. Арт и 3D-модели будут подключаться поcardIdчерез Addressables. - Ближайший визуальный шаг — создать пустые сцены Login/Lobby/Collection/
DeckBuilder/Battle, добавить
SceneFlowи перенести Login/Lobby. - Боевые анимации, камера и 3D-карты — после стабилизации сетевого протокола и базового UI.