# Vanguard ReMaster — Unity client Клиент на **Unity 6000.6.6f1** (Unity 6), URP. Пока это каркас: авторизация, восстановление сессии и главный экран профиля. ## Как открыть 1. Unity Hub → **Add project from disk** → папка `client`. 2. Открыть проект редактором **6000.6.6f1**. 3. Первый импорт скачает пакеты (URP, Input System, Addressables, Localization, Newtonsoft.Json, VContainer с OpenUPM). 4. Открыть `Assets/Scenes/Boot.unity` и нажать Play. Если Unity предложит включить новый Input System — согласиться (в проекте уже `activeInputHandler: 1`). ## Сервер В форме входа по умолчанию стоит стенд: ``` http://192.168.31.158:18080 ``` Адрес можно изменить прямо в поле и сохранить: он пишется в `PlayerPrefs`. Локальный сервер: ``` http://localhost:5080 ``` Аккаунт создаётся кнопкой «Создать аккаунт»; имя 3–32 символа, пароль 8–128. Пароль от реального аккаунта в dev-клиенте не использовать. ## Визуальное направление Клиент делаем в **3D** на URP. Основные экраны — отдельные сцены: **Login**, **Lobby**, **DeckBuilder**, **Battle**. `DeckBuilder` совмещает коллекцию и редактор колоды. `Boot` — служебная сцена с общими сервисами; очередь и онбординг — оверлеи Lobby. Текущий единый Canvas — временный gray-box, его разносим по сценам. Полное решение — `docs/client-visual-direction.md`. ## Что уже есть - `ClientBootstrap` — запуск без привязки к сцене. - DI на VContainer: `AppConfig`, `TokenStore`, `ApiClient`, `AuthService`, `MetaService`, `PlayerState`, `SceneFlow`. - HTTP-клиент на `UnityWebRequest` + Newtonsoft.Json, разбор `ApiError`. - Логин, регистрация, refresh, `/me`, выход. - Восстановление сессии по refresh-токену при старте. - Онбординг: две триал-деки из `/api/store`, выбор одной, 50 карт и 5 токенов. - Коллекция и колоды: карточная сетка, сортировка клан→ранг→имя, фильтры, статистика по рангам, добавление/удаление карт кликом. - ПКМ по карте — оверлей с картой, способностями, разбором в пыль и крафтом за пыль. - Магазин в Lobby: бустер за Gold/токен, показ 5 карт, покупка второй триал-деки. - История матчей: список результатов, награды, MMR; просмотр реплея по кадрам и событиям. - Очередь: classic-ranked, опрос статуса, отмена, тикет и переход в бой. - Тренировка с ботом: casual-матч против серверного случайного бота, без истории/MMR/наград. - `GameConnection`: WebSocket + MessagePack, handshake, snapshot/events, интенты, ответы на ping, закрытие и переподключение. - Боевой gray-box: доска, рука, часы, кнопки всех легальных интентов, сдача с подтверждением и экран результата. - Экран входа и главный экран с балансами, MMR и переходами в разделы. ## Что дальше 1. Довести боевой UI: арты карт, зоны, анимации, скип/ускорение. 2. Реконнект на всех шагах и аккуратная обработка таймаутов. 3. Декбилдер: drag&drop, live-валидация, редкость/тип/арт, пресеты. 4. Локализация RU/EN, настройки, DOTween-анимации. ## Плагины `Assets/Plugins/Vanguard.Shared` — сборка `Vanguard.Shared` из `server/src/Vanguard.Shared` (netstandard2.1). В ней DTO протокола, MessagePack-сериализатор и юнион-кадры. `Assets/Plugins/MessagePack` — MessagePack 3.1.12 и его runtime-зависимости (netstandard2.1), MIT. При изменении протокола пересобрать `Vanguard.Shared` на серверной стороне и заменить DLL в `Assets/Plugins/Vanguard.Shared`. ## Ограничения каркаса - Для dev-стенда включён HTTP: Project Settings → Player → **Allow downloads over HTTP = Always** (`insecureHttpOption: 2`). Для релиза нужен HTTPS и это значение вернуть в «Not allowed». - Токены лежат в `PlayerPrefs` — только для разработки; для релиза нужно защищённое хранилище. - Текущий UI собран кодом на uGUI; каждая сцена имеет свой Canvas. Префабы/UI Toolkit подключим, когда появятся макеты. - DOTween пока не добавлен; анимации UI — после перехода на сцены. - Мета-экраны — заглушки: сеть и авторизация настоящие, разделы следующие. - Бой — gray-box: карты показываются по `printingId`, без артов и анимаций; действия — кнопки всех `MatchView.LegalIntents`. - `GameConnection` использует `System.Net.WebSockets.ClientWebSocket` (Windows/десктоп first). Для WebGL понадобится другой транспорт или нативный WebSocket-плагин. ## Проверки EditMode: ```powershell & 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' ` -batchmode -nographics -projectPath client ` -runTests -testPlatform EditMode ` -testResults client\TestResults.xml ``` Smoke сцен (входит в Play Mode, открывает Boot → Login, проверяет 3D-фон и экран): ```powershell & 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' ` -batchmode -nographics -projectPath client ` -executeMethod Vanguard.Editor.SceneSmoke.Run ``` Тесты не ходят в сеть: проверяются composition root, создание Canvas, экранов и 3D-окружения.