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.
|
> 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**. Документ нужен, чтобы новая сессия
|
Состояние проекта на **21 октября 2026**. Документ нужен, чтобы новая сессия
|
||||||
продолжила работу без повторного разбора истории.
|
продолжила работу без повторного разбора истории. Краткая оперативная
|
||||||
|
сводка — `docs/SESSION-STATE.md`; этот файл хранит подробную историю.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -13,16 +14,16 @@ MVP: бустер **BT01** + триал-деки **TD01/TD02** — 94 карты
|
||||||
Стек:
|
Стек:
|
||||||
|
|
||||||
- сервер — **.NET 10**, **Orleans** (опционально), PostgreSQL, Redis;
|
- сервер — **.NET 10**, **Orleans** (опционально), PostgreSQL, Redis;
|
||||||
- клиент — **Unity 6** (ещё не начат);
|
- клиент — **Unity 6000.6.6f1**, URP, 3D-сцены (каркас готов);
|
||||||
- лаунчер — **WPF** (ещё не начат);
|
- лаунчер — **WPF** (ещё не начат);
|
||||||
- контент — YAML + C#-скрипты карт;
|
- контент — YAML + C#-скрипты карт;
|
||||||
- транспорт — WebSocket/TCP + MessagePack (решение зафиксировано, кода ещё нет).
|
- транспорт — **WebSocket + MessagePack** (реализован в сервере и клиенте).
|
||||||
|
|
||||||
Репозиторий:
|
Репозиторий:
|
||||||
|
|
||||||
- ветка `master`;
|
- ветка `master`;
|
||||||
- remote `ssh://git@192.168.31.158:2222/mpakobecex/VanguardReMaster.git`;
|
- 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 предупреждений |
|
| `validate` | 0 ошибок, 0 предупреждений |
|
||||||
| `translations check` | 94/94 |
|
| `translations check` | 94/94 |
|
||||||
| `stress 1000` | 1000/1000 партий, 0 ошибок |
|
| `stress 1000` | 1000/1000 партий, 0 ошибок |
|
||||||
| Карты | **94/94** (66 с текстом + 28 ванильных) |
|
| Карты | **94/94** (66 с текстом + 28 ванильных) |
|
||||||
| Протокол и контракты | `docs/protocol.md`, `Vanguard.Shared` готовы |
|
| Протокол и контракты | `docs/protocol.md`, `Vanguard.Shared` готовы |
|
||||||
| Сервер | сеть, матчмейкинг, PostgreSQL + Redis, Docker |
|
| Сервер | сеть, матчмейкинг, PostgreSQL + Redis, Orleans, Docker |
|
||||||
| Мета-API | JWT, коллекция, колоды, магазин, экономика, история, реплеи |
|
| Мета-API | JWT, коллекция, колоды, магазин, экономика, история, реплеи |
|
||||||
| Клиент / лаунчер | не начаты |
|
| Клиент | Unity 6.6, 3D-сцены Login/Lobby/Collection/DeckBuilder/Battle, логин/коллекция/колоды/очередь/gray-box бой |
|
||||||
|
| Лаунчер | не начат |
|
||||||
|
|
||||||
Блок «Игровое ядро» из `IMPLEMENTATION_CHECKLIST.md` закрыт по его критериям:
|
Блок «Игровое ядро» из `IMPLEMENTATION_CHECKLIST.md` закрыт по его критериям:
|
||||||
боты доигрывают 1000 партий, инварианты держатся, реплей воспроизводится
|
боты доигрывают 1000 партий, инварианты держатся, реплей воспроизводится
|
||||||
|
|
@ -77,6 +79,18 @@ OK: ошибок 0, предупреждений 0
|
||||||
Партий: 1000, завершено: 1000, ошибок: 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
|
```powershell
|
||||||
|
|
@ -510,7 +524,7 @@ CI подключён и проходит; серверный блок закр
|
||||||
Addressables, Localization, Newtonsoft.Json, VContainer (OpenUPM);
|
Addressables, Localization, Newtonsoft.Json, VContainer (OpenUPM);
|
||||||
- визуальное направление зафиксировано: **3D**, отдельные сцены-экраны
|
- визуальное направление зафиксировано: **3D**, отдельные сцены-экраны
|
||||||
Login/Lobby/Collection/DeckBuilder/Battle (`docs/client-visual-direction.md`);
|
Login/Lobby/Collection/DeckBuilder/Battle (`docs/client-visual-direction.md`);
|
||||||
текущий единый Canvas — временный gray-box;
|
сцены и `SceneFlow` уже созданы, UI пока code-generated gray-box;
|
||||||
- сцена `Boot` + runtime-инициализатор, поэтому клиент стартует и в пустой
|
- сцена `Boot` + runtime-инициализатор, поэтому клиент стартует и в пустой
|
||||||
сцене;
|
сцене;
|
||||||
- composition root на VContainer: `AppConfig`, `TokenStore`, `ApiClient`,
|
- composition root на VContainer: `AppConfig`, `TokenStore`, `ApiClient`,
|
||||||
|
|
@ -559,7 +573,7 @@ CI подключён и проходит; серверный блок закр
|
||||||
**Зафиксированное визуальное направление** — `docs/client-visual-direction.md`:
|
**Зафиксированное визуальное направление** — `docs/client-visual-direction.md`:
|
||||||
3D-клиент на URP, отдельные сцены-экраны Login / Lobby / Collection /
|
3D-клиент на URP, отдельные сцены-экраны Login / Lobby / Collection /
|
||||||
DeckBuilder / Battle; Boot и общие сервисы остаются персистентными.
|
DeckBuilder / Battle; Boot и общие сервисы остаются персистентными.
|
||||||
Текущий единый Canvas — временный gray-box, его разносим по сценам.
|
Сцены и `SceneFlow` уже созданы; UI пока code-generated gray-box.
|
||||||
|
|
||||||
- Unity 6 LTS, URP, Addressables, Input System, Localization, DOTween.
|
- Unity 6 LTS, URP, Addressables, Input System, Localization, DOTween.
|
||||||
- VContainer, `ApiClient`, `GameConnection`, `SceneFlow`.
|
- VContainer, `ApiClient`, `GameConnection`, `SceneFlow`.
|
||||||
|
|
@ -586,16 +600,14 @@ DeckBuilder / Battle; Boot и общие сервисы остаются пер
|
||||||
|
|
||||||
## 8. Порядок действий в новой сессии
|
## 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.
|
2. Прогнать проверки из раздела 3.
|
||||||
3. Следующий блок — **клиент** (Unity): 3D-сцены `Login`, `Lobby`,
|
3. Следующий блок — клиент: магазин/бустеры в Lobby и история/реплей,
|
||||||
`Collection`, `DeckBuilder`, `Battle`; `Boot` — служебная сцена.
|
затем полный декбилдер и 3D-наполнение сцен. Сервер и мета-API готовы:
|
||||||
`ApiClient`, `GameConnection`, логин, коллекция, декбилдер, магазин,
|
|
||||||
очередь, история и реплей. Визуальное решение —
|
|
||||||
`docs/client-visual-direction.md`. Сервер и мета-API готовы:
|
|
||||||
`docs/protocol.md`, `docs/server-api.md`, `Vanguard.Shared`.
|
|
||||||
4. CI и Orleans закрыты; следующий блок — клиент. Перед началом: проверить
|
|
||||||
`docs/protocol.md`, `docs/server-api.md`, `Vanguard.Shared`.
|
`docs/protocol.md`, `docs/server-api.md`, `Vanguard.Shared`.
|
||||||
|
4. Перед началом сверить `docs/client-visual-direction.md`: 3D-сцены,
|
||||||
|
`Boot` и общие сервисы персистентны.
|
||||||
5. После каждого блока: тесты, `validate`, `translations check`, коммит, push.
|
5. После каждого блока: тесты, `validate`, `translations check`, коммит, push.
|
||||||
6. Не ломать `Vanguard.Rules`: сервер должен зависеть от него, а не наоборот.
|
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