Add compact session state handoff
CI / test (push) Has been cancelled
Details
CI / test (push) Has been cancelled
Details
This commit is contained in:
parent
6ed0998078
commit
8975b2de44
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
> Fan-made project. Not affiliated with Bushiroad. All card names and art belong to their respective owners.
|
||||
|
||||
> Текущая оперативная сводка — [`docs/SESSION-STATE.md`](docs/SESSION-STATE.md).
|
||||
|
||||
## Статус
|
||||
|
||||
| Блок | Состояние |
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
# Передача сессии
|
||||
|
||||
Состояние проекта на **21 октября 2026**. Документ нужен, чтобы новая сессия
|
||||
продолжила работу без повторного разбора истории.
|
||||
продолжила работу без повторного разбора истории. Краткая оперативная
|
||||
сводка — `docs/SESSION-STATE.md`; этот файл хранит подробную историю.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -13,16 +14,16 @@ MVP: бустер **BT01** + триал-деки **TD01/TD02** — 94 карты
|
|||
Стек:
|
||||
|
||||
- сервер — **.NET 10**, **Orleans** (опционально), PostgreSQL, Redis;
|
||||
- клиент — **Unity 6** (ещё не начат);
|
||||
- клиент — **Unity 6000.6.6f1**, URP, 3D-сцены (каркас готов);
|
||||
- лаунчер — **WPF** (ещё не начат);
|
||||
- контент — YAML + C#-скрипты карт;
|
||||
- транспорт — WebSocket/TCP + MessagePack (решение зафиксировано, кода ещё нет).
|
||||
- транспорт — **WebSocket + MessagePack** (реализован в сервере и клиенте).
|
||||
|
||||
Репозиторий:
|
||||
|
||||
- ветка `master`;
|
||||
- remote `ssh://git@192.168.31.158:2222/mpakobecex/VanguardReMaster.git`;
|
||||
- последний коммит на момент передачи — **`99532b6`**;
|
||||
- актуальный HEAD смотреть через `git log -1` (на момент записи — `6ed0998`);
|
||||
- рабочее дерево чистое.
|
||||
|
||||
Главные принципы:
|
||||
|
|
@ -38,15 +39,16 @@ MVP: бустер **BT01** + триал-деки **TD01/TD02** — 94 карты
|
|||
|
||||
| Проверка | Результат |
|
||||
|---|---|
|
||||
| Тесты | **175/175** (131 правила/контракты + 44 сервер) |
|
||||
| Тесты сервера | **175/175** (131 правила/контракты + 44 сервер) |
|
||||
| `validate` | 0 ошибок, 0 предупреждений |
|
||||
| `translations check` | 94/94 |
|
||||
| `stress 1000` | 1000/1000 партий, 0 ошибок |
|
||||
| Карты | **94/94** (66 с текстом + 28 ванильных) |
|
||||
| Протокол и контракты | `docs/protocol.md`, `Vanguard.Shared` готовы |
|
||||
| Сервер | сеть, матчмейкинг, PostgreSQL + Redis, Docker |
|
||||
| Сервер | сеть, матчмейкинг, PostgreSQL + Redis, Orleans, Docker |
|
||||
| Мета-API | JWT, коллекция, колоды, магазин, экономика, история, реплеи |
|
||||
| Клиент / лаунчер | не начаты |
|
||||
| Клиент | Unity 6.6, 3D-сцены Login/Lobby/Collection/DeckBuilder/Battle, логин/коллекция/колоды/очередь/gray-box бой |
|
||||
| Лаунчер | не начат |
|
||||
|
||||
Блок «Игровое ядро» из `IMPLEMENTATION_CHECKLIST.md` закрыт по его критериям:
|
||||
боты доигрывают 1000 партий, инварианты держатся, реплей воспроизводится
|
||||
|
|
@ -77,6 +79,18 @@ OK: ошибок 0, предупреждений 0
|
|||
Партий: 1000, завершено: 1000, ошибок: 0
|
||||
```
|
||||
|
||||
Клиент (Unity):
|
||||
|
||||
```powershell
|
||||
& 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' `
|
||||
-batchmode -nographics -projectPath client `
|
||||
-runTests -testPlatform EditMode -testResults client\TestResults.xml
|
||||
|
||||
& 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' `
|
||||
-batchmode -nographics -projectPath client `
|
||||
-executeMethod Vanguard.Editor.SceneSmoke.Run
|
||||
```
|
||||
|
||||
Сервер локально:
|
||||
|
||||
```powershell
|
||||
|
|
@ -510,7 +524,7 @@ CI подключён и проходит; серверный блок закр
|
|||
Addressables, Localization, Newtonsoft.Json, VContainer (OpenUPM);
|
||||
- визуальное направление зафиксировано: **3D**, отдельные сцены-экраны
|
||||
Login/Lobby/Collection/DeckBuilder/Battle (`docs/client-visual-direction.md`);
|
||||
текущий единый Canvas — временный gray-box;
|
||||
сцены и `SceneFlow` уже созданы, UI пока code-generated gray-box;
|
||||
- сцена `Boot` + runtime-инициализатор, поэтому клиент стартует и в пустой
|
||||
сцене;
|
||||
- composition root на VContainer: `AppConfig`, `TokenStore`, `ApiClient`,
|
||||
|
|
@ -559,7 +573,7 @@ CI подключён и проходит; серверный блок закр
|
|||
**Зафиксированное визуальное направление** — `docs/client-visual-direction.md`:
|
||||
3D-клиент на URP, отдельные сцены-экраны Login / Lobby / Collection /
|
||||
DeckBuilder / Battle; Boot и общие сервисы остаются персистентными.
|
||||
Текущий единый Canvas — временный gray-box, его разносим по сценам.
|
||||
Сцены и `SceneFlow` уже созданы; UI пока code-generated gray-box.
|
||||
|
||||
- Unity 6 LTS, URP, Addressables, Input System, Localization, DOTween.
|
||||
- VContainer, `ApiClient`, `GameConnection`, `SceneFlow`.
|
||||
|
|
@ -586,16 +600,14 @@ DeckBuilder / Battle; Boot и общие сервисы остаются пер
|
|||
|
||||
## 8. Порядок действий в новой сессии
|
||||
|
||||
1. Прочитать `docs/HANDOFF.md`, `IMPLEMENTATION_CHECKLIST.md`, `README.md`.
|
||||
1. Прочитать `docs/SESSION-STATE.md`, `docs/HANDOFF.md`,
|
||||
`IMPLEMENTATION_CHECKLIST.md`, `README.md`.
|
||||
2. Прогнать проверки из раздела 3.
|
||||
3. Следующий блок — **клиент** (Unity): 3D-сцены `Login`, `Lobby`,
|
||||
`Collection`, `DeckBuilder`, `Battle`; `Boot` — служебная сцена.
|
||||
`ApiClient`, `GameConnection`, логин, коллекция, декбилдер, магазин,
|
||||
очередь, история и реплей. Визуальное решение —
|
||||
`docs/client-visual-direction.md`. Сервер и мета-API готовы:
|
||||
`docs/protocol.md`, `docs/server-api.md`, `Vanguard.Shared`.
|
||||
4. CI и Orleans закрыты; следующий блок — клиент. Перед началом: проверить
|
||||
3. Следующий блок — клиент: магазин/бустеры в Lobby и история/реплей,
|
||||
затем полный декбилдер и 3D-наполнение сцен. Сервер и мета-API готовы:
|
||||
`docs/protocol.md`, `docs/server-api.md`, `Vanguard.Shared`.
|
||||
4. Перед началом сверить `docs/client-visual-direction.md`: 3D-сцены,
|
||||
`Boot` и общие сервисы персистентны.
|
||||
5. После каждого блока: тесты, `validate`, `translations check`, коммит, push.
|
||||
6. Не ломать `Vanguard.Rules`: сервер должен зависеть от него, а не наоборот.
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,135 @@
|
|||
# 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`):
|
||||
|
||||
```bash
|
||||
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`.
|
||||
|
||||
## Проверки клиента
|
||||
|
||||
```powershell
|
||||
# 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` пересобирает сцены:
|
||||
|
||||
```powershell
|
||||
& '...\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`.
|
||||
Loading…
Reference in New Issue