VanguardReMaster/docs/SESSION-STATE.md

6.9 KiB
Raw Blame History

Vanguard ReMaster — состояние сессии

Дата: 2026-10-21
HEAD: 6ed0998 (клиент переведён на 3D-сцены)
Коротко: сервер готов, клиент — рабочий каркас с 3D-сценами.

Сервер

  • .NET 10 / ASP.NET Core, EF Core, PostgreSQL, Redis, опциональный Orleans.
  • Реализовано: auth/JWT, онбординг, коллекция, колоды, магазин, экономика, матчмейкинг, WebSocket-матч, история, реплеи.
  • Orleans включается Orleans:Enabled; в compose включён. Один silo, in-process реестр соединений.
  • Тесты: 131 правил + 44 серверных, CI зелёный.
  • Стенд: http://192.168.31.158:18080, /health → ok.
  • Документация: docs/server-api.md, docs/protocol.md, docs/HANDOFF.md.

Клиент

  • Unity 6000.6.6f1, URP; проект в client/.
  • Пакеты: URP, Input System, Addressables, Localization, Newtonsoft.Json, VContainer (OpenUPM).
  • Визуальное направление: 3D, отдельные сцены-экраны: Login, Lobby, Collection, DeckBuilder, Battle. Boot — стартовая служебная сцена; VanguardApp персистентный.
  • Переходы — SceneFlow; очередь/онбординг — оверлеи Lobby.
  • 3D-окружение сейчас из примитивов (SceneEnvironment): камера, свет, пол, тематические кубы. UI — code-generated uGUI, пока gray-box.
  • Сервисы: ApiClient, AuthService, MetaService, TokenStore, PlayerState, GameConnection.
  • Работает: логин/регистрация/refresh, онбординг, коллекция с разбором, список/удаление/автосборка колоды, очередь, WebSocket-матч (snapshot, интенты, маллиган, сдача, GameFinished), таймер, результат.
  • Не готово: полноценный декбилдер, магазин/бустеры, история/реплей в UI, арты/модели/анимации, локализация RU/EN, настройки, DOTween.

Запуск

Сервер (на ssh home):

cd ~/VanguardReMaster
docker compose up -d --build
curl http://127.0.0.1:18080/health

Клиент:

  1. Unity Hub → client, редактор 6000.6.6f1.
  2. Открыть Assets/Scenes/Boot.unity, Play.
  3. Стенд по умолчанию — http://192.168.31.158:18080.

Проверки клиента

# EditMode
& 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' `
  -batchmode -nographics -projectPath client `
  -runTests -testPlatform EditMode -testResults client\TestResults.xml

# Boot → Login + 3D environment
& 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' `
  -batchmode -nographics -projectPath client `
  -executeMethod Vanguard.Editor.SceneSmoke.Run

SceneSmoke заменяет PlayMode-тест загрузки сцен: Single-загрузка сцены ломает стандартный PlayMode test runner. SceneBuilder пересобирает сцены:

& '...\Unity.exe' -batchmode -nographics -projectPath client `
  -executeMethod Vanguard.Editor.SceneBuilder.BuildAll

Ключевые файлы клиента

client/Assets/Vanguard/Runtime/App/
  VanguardApp.cs            composition root, персистентный
  SceneFlow.cs              переходы Login/Lobby/Collection/DeckBuilder/Battle
  SceneEnvironment.cs       3D-фон сцен
  SceneControllerBase.cs
  LoginSceneController.cs
  LobbySceneController.cs
  CollectionSceneController.cs
  DeckBuilderSceneController.cs
  BattleSceneController.cs
client/Assets/Vanguard/Runtime/UI/
  LoginView.cs  MetaView.cs  OnboardingView.cs
  CollectionView.cs  DecksView.cs  QueueView.cs  BattleView.cs
  UiKit.cs
client/Assets/Vanguard/Runtime/Battle/GameConnection.cs
client/Assets/Vanguard/Runtime/Api/ApiClient.cs + ApiContracts.cs
client/Assets/Vanguard/Editor/SceneBuilder.cs + SceneSmoke.cs
client/Assets/Vanguard/Scenes/*.unity
client/Assets/Plugins/Vanguard.Shared + MessagePack

Решения

  • 3D-визуал, отдельные сцены; подробно — docs/client-visual-direction.md.
  • Boot не показывается; VanguardApp/сервисы не пересоздаются.
  • Очередь — оверлей Lobby; DeckBuilder «В бой» возвращает в Lobby с выбранной колодой в SceneFlow.PendingQueueDeck.
  • Токены в PlayerPrefs — dev; для релиза защищённое хранилище.
  • HTTP разрешён только для dev (insecureHttpOption: 2); для релиза HTTPS.
  • GameConnection использует System.Net.WebSockets.ClientWebSocket (Windows/десктоп first); WebGL потребует другого транспорта.
  • Сервер авторитарный; клиент отправляет только интенты, скрытые данные не покидают сервер.

Следующие шаги

  1. Магазин в Lobby: GET /api/store, бустер за Gold/токен, показ 5 карт, покупка второй триал-деки; балансы через MetaService.
  2. История матчей и реплей: GET /api/matches, GET /api/replays/{id}.
  3. Полный декбилдер: фильтры, счётчики, валидация.
  4. 3D-наполнение: модели/арт, prefab-экраны, камера/анимации боя.
  5. Локализация RU/EN, настройки, DOTween.
  6. Лаунчер WPF.

Подводные камни

  • Не запускать dotnet/Docker на рабочем ПК; сервер проверяется на ssh home.
  • В Unity нельзя открыть два экземпляра одного проекта: для batch-проверок делать копию проекта (без Library) или закрывать редактор.
  • Сцены ссылаются на скрипты по GUID; при копировании сцен копировать и .meta контроллеров.
  • Vanguard.Shared.dll — netstandard2.1 + MessagePack 3.1.12; при изменении протокола пересобрать DLL и заменить в client/Assets/Plugins.
  • UiKit.CreateCanvas по умолчанию не персистентный: Canvas принадлежит сцене; EventSystem остаётся персистентным.
  • Сцена Boot должна быть первой в Build Settings; сейчас там Boot, Login, Lobby, Collection, DeckBuilder, Battle.