VanguardReMaster/client
MpakobecEx f2ae6b9e4f art: официальные PNG вместо Fandom JPG (124 принта)
- источник: en.cf-vanguard.com, /images/cardlist/{set}/{CODE}.png

- 350x511 PNG; старые JPG были 350x514, разрешение не потеряно

- .meta сохранены: GUID и настройки импорта перенесены с jpg на png

- 123 jpg удалены, 124 png добавлены, bt01_s07 перезаписан
2026-10-31 00:10:00 +05:00
..
.vscode Add Unity client skeleton with login and profile 2026-10-21 16:40:40 +05:00
Assets art: официальные PNG вместо Fandom JPG (124 принта) 2026-10-31 00:10:00 +05:00
Packages tooling/docs: MCP for Unity, процесс DeepSeek и план сцен/3D/анимаций 2026-10-30 02:34:48 +05:00
ProjectSettings client/server: анимации 3D-поля, HUD и правила (WIP) 2026-10-30 02:34:36 +05:00
README.md Show vanguard, rear-guard and guard cards face up 2026-10-22 03:17:41 +05:00

README.md

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, закрытие и переподключение.
  • Боевой экран: доска, рука, часы, кнопки всех легальных интентов, сдача с подтверждением и экран результата.
  • Боевой UX: клик по картам/зонам, подсветка целей, сгруппированные действия, выбор силы/эффекта триггера, журнал событий и подсказки; event-анимации с очередью и скипом.
  • Карты в бою и коллекции: реальные арты, рамка по клану, имя, ранг, триггер, сила/крит, REST поворотом на бок и рубашка для скрытых карт; call/ride-въезд, пульс атаки и призрак ухода в дроп.
  • Зона урона: видимые карты на боку; heal выбирает карту урона, Counter Blast принимает выбранную открытую карту. Маллиган — выбор карт в руке с обменом и добиром до пяти. Карты V/R и круга защиты открыты, в защите показывается ряд карт.
  • Реальные арты: CardImageService ищет Resources/CardArt/{imageKey}; imageKey приходит из /api/cards. Скачаны все 124 арта; импорт — tools/import_card_art.py.
  • Локализация RU/EN: Localization.cs (Loc + LocalizedText), переключатель в Login/Lobby, сохранение в PlayerPrefs; имена и тексты карт берутся из nameRu/nameEn и textRu/textEn.
  • Экран входа и главный экран с балансами, MMR и переходами в разделы.

Что дальше

  1. Drive/damage-анимации карт и стола, звук, ускорение/скип.
  2. Реконнект на всех шагах и аккуратная обработка таймаутов.
  3. Декбилдер: drag&drop, live-валидация, редкость/тип/арт, пресеты.
  4. Настройки (язык уже есть), 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 пока не добавлен; текущие анимации карт — собственные корутины/тики.
  • Мета-экраны — заглушки: сеть и авторизация настоящие, разделы следующие.
  • В бою нет звука и отдельных drive/damage-анимаций; остальное работает.
  • GameConnection использует System.Net.WebSockets.ClientWebSocket (Windows/десктоп first). Для WebGL понадобится другой транспорт или нативный WebSocket-плагин.

Проверки

EditMode:

& '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-фон и экран):

& 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' `
  -batchmode -nographics -projectPath client `
  -executeMethod Vanguard.Editor.SceneSmoke.Run

Тесты не ходят в сеть: проверяются composition root, создание Canvas, экранов, импорт арта, локализация (статические строки, динамика, live-переключение) и рендер боевой доски с уроном/rest. Сейчас 4/4.