--- name: Vanguard ReMaster description: Use for any work in the Vanguard ReMaster repository: Cardfight!! Vanguard rules and card abilities, Vanguard.Rules/GameEngine, WebSocket+MessagePack protocol and server, Unity 6 3D client and uGUI, tests, deployment, or project conventions. --- # Vanguard ReMaster Фанатский ремейк Cardfight!! Vanguard базовой эры: формат **Classic** (BT01 + TD01/TD02), сервер на .NET 10 и Unity-клиент 6.6.6f1. Это рабочая база правил проекта, а не пересказ официального компендиума. ## Как пользоваться 1. Перед задачей читай `docs/SESSION-STATE.md`, затем `docs/HANDOFF.md` и `docs/client-visual-direction.md`. 2. Для правил/карт/эффектов открывай `game-rules.md` и `card-implementation.md`. 3. Для сервера, клиента, протокола и зависимостей — `architecture.md`. 4. Для процесса, антипаттернов и открытых вопросов — `workflow-and-decisions.md`. 5. Не читай все документы сразу, если задача узкая. Не пересказывай их в ответе. Статусы в документах: - **[D]** — подтверждённое пользователем решение; - **[C]** — фактическое устройство проекта (код/конфиг); - **[O]** — открытый вопрос или незавершённая часть. ## Критические правила - **Источник истины — сервер.** `GameEngine`/`MatchGrain` меняют состояние; клиент только отправляет `IntentPayload` и рисует `MatchView`. - **Не выдумывай правила и API.** Если правило не подтверждено, это `[O]`, а не «как в Vanguard обычно». - **Сначала вопрос, потом решение.** Для существенной неопределённости используй инструмент `question` с 2–4 вариантами. - **Минимальные изменения.** Не переписывай работающие системы, не создавай дубликаты, не меняй сцены/префабы без причины. - **Геймплей вручную проверяет пользователь.** Автотесты и smoke — да; собственное прохождение не выдавай за приёмку. - **Сервер проверяется только на `ssh home`/Docker.** Локальный `dotnet` и Docker на рабочем ПК не запускать. - **Unity batch — только в копии проекта без `Library`.** - **Выбор объектов — клик/драг по карте, кругу, зоне или полю.** Кнопки — только глобальные действия и подтверждения. - **Одна текстовая способность — одна реализация.** `CardScript`, общий движок или флаг данных. Текст без реализации — баг. - **После блока:** клиентские EditMode, серверные тесты (на home), `validate`, `translations check`, коммит и push. ## Быстрая карта проекта ```text content/ YAML карт, переводы, ключевые слова, триал-деки, шансы docs/ правила, протокол, API, аудит способностей, состояние server/src/Vanguard.Rules чистое ядро: карты, колоды, GameEngine server/src/Vanguard.Shared DTO, MessagePack, проекции (netstandard2.1 + net10) server/src/Vanguard.Content загрузка/валидация YAML server/src/Vanguard.Server ASP.NET, auth/meta, матчи, Orleans, WebSocket server/tests правила и сервер/E2E client/Assets/Vanguard/Runtime Unity: Api/Auth/State/Meta/Battle/Board3D/UI/App client/Assets/Vanguard/Editor SceneBuilder, StandaloneBuild, SceneSmoke client/Assets/Vanguard/Tests EditMode ``` Ключевые классы: `GameEngine`, `GameState`, `CardScripts.Default`, `MatchGrain`, `MatchProjection`, `GameConnection`, `BattleView`, `GameBoard3D`, `Card3D`, `CardMoveAnimator`, `CameraDirector`, `TriggerCheckSequence`, `ArrowDirector`, `InputLockService`. ## Текущие подтверждённые ограничения - Формат — **Classic**, не Standard/Premium/G. Ride Deck, Persona Ride, Stride, Gift, Legion, Front/Over-триггеры и G-зона не входят в текущую игру. - Смешивать кланы в колоде **можно**; эффекты с условием клана могут не сработать. `DeckValidator` этого не запрещает. - 50 карт, 16 триггеров, ≤4 копий по `nameId`, ≤4 Heal, ≤4 Sentinel; в коллекции лимита копий нет. - Верхний `CombatStats` strip — допустимый HUD; world-space Power/Shield ещё не сделаны. - Отдельный `CostPaymentOverlay` для multi-target стоимости **требуется**, но пока реализован только выбор Counter Blast в панели «Действия». - `AttackResolutionQueue` — требование на будущее, сейчас бой имеет одну цель. - `DropZoneFaceDown` существует в конфиге; по Classic default `false`. ## Проверки ```powershell # серверные тесты — только на home ssh home "docker run --rm -v ~/VanguardReMaster-test:/src -w /src \ mcr.microsoft.com/dotnet/sdk:10.0 dotnet test server/Vanguard.slnx" # контент ssh home "docker run --rm -v ~/VanguardReMaster:/src -w /src \ mcr.microsoft.com/dotnet/sdk:10.0 dotnet run --project server/src/Vanguard.Cli -- validate" ssh home "docker run --rm -v ~/VanguardReMaster:/src -w /src \ mcr.microsoft.com/dotnet/sdk:10.0 dotnet run --project server/src/Vanguard.Cli -- translations check" # клиентская копия & 'C:\Program Files\Unity\Hub\Editor\6000.6.6f1\Editor\Unity.exe' ` -batchmode -nographics -projectPath ` -runTests -testPlatform EditMode -testResults \TestResults.xml ``` Smoke: `Vanguard.Editor.SceneSmoke.Run` / `RunPlaymat`; сборка: `Vanguard.Editor.StandaloneBuild.BuildWindowsCli`. ## Дополнительные документы - [game-rules.md](game-rules.md) — правила Classic, зоны, фазы, триггеры, стоимости, порядок эффектов, известные расхождения. - [architecture.md](architecture.md) — сервер/клиент/протокол, границы, источник истины, сохранение, Unity-слой. - [card-implementation.md](card-implementation.md) — YAML, AUTO/ACT/CONT, выборы, стоимости, тесты и чеклист новой карты. - [workflow-and-decisions.md](workflow-and-decisions.md) — решения, процесс, антипаттерны, известные ошибки и открытые вопросы. Связанные документы репозитория: `docs/game-rules.md`, `docs/ability-implementation.md`, `docs/protocol.md`, `docs/server-api.md`, `docs/client-visual-direction.md`, `docs/translation-rules.md`.