VanguardReMaster/.opencode/skills/vanguard-remaster/SKILL.md

8.0 KiB
Raw Blame History

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.
  • Сначала план, потом код: новые изменения проходят анализ DeepSeek с записью в docs/Development/IMPLEMENTATION_PLAN.md, затем реализацию Kimi. Передача — через файлы и Git, не через память модели. Детали — docs/Development/AGENT-WORKFLOW.md.

Быстрая карта проекта

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.

Проверки

# серверные тесты — только на 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 <copy> `
  -runTests -testPlatform EditMode -testResults <copy>\TestResults.xml

Smoke: Vanguard.Editor.SceneSmoke.Run / RunPlaymat; сборка: Vanguard.Editor.StandaloneBuild.BuildWindowsCli.

Дополнительные документы

  • game-rules.md — правила Classic, зоны, фазы, триггеры, стоимости, порядок эффектов, известные расхождения.
  • architecture.md — сервер/клиент/протокол, границы, источник истины, сохранение, Unity-слой.
  • card-implementation.md — YAML, AUTO/ACT/CONT, выборы, стоимости, тесты и чеклист новой карты.
  • 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, docs/Development/IMPLEMENTATION_PLAN.md, docs/Development/AGENT-WORKFLOW.md.