|
CI / test (push) Successful in 2m8s
Details
|
||
|---|---|---|
| .. | ||
| .vscode | ||
| Assets | ||
| Packages | ||
| ProjectSettings | ||
| README.md | ||
README.md
Vanguard ReMaster — Unity client
Клиент на Unity 6000.6.6f1 (Unity 6), URP. Пока это каркас: авторизация, восстановление сессии и главный экран профиля.
Как открыть
- Unity Hub → Add project from disk → папка
client. - Открыть проект редактором 6000.6.6f1.
- Первый импорт скачает пакеты (URP, Input System, Addressables, Localization, Newtonsoft.Json, VContainer с OpenUPM).
- Открыть
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 и переходами в разделы.
Что дальше
- Drive/damage-анимации карт и стола, звук, ускорение/скип.
- Реконнект на всех шагах и аккуратная обработка таймаутов.
- Декбилдер: drag&drop, live-валидация, редкость/тип/арт, пресеты.
- Настройки (язык уже есть), 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.