Go to file
MpakobecEx 99532b6e8f Stress-test 1000 bot games and fix the guard-step deadlock
GameInvariants checks card counts, unique instance ids and damage. The CLI stress command runs random legal bot games and fails on the first violation. It exposed a real bug: an optional OnGuard ability that could not be paid (or was declined) reset the step from Guard to None while the battle was still open. OfferAbility now reports Skipped/Paused/Resolved and callers continue only when needed. 1000/1000 games finish with no errors.
2026-10-21 14:03:14 +05:00
content Finish the card set: Tejas, Yaksha, back-row attacks and replay 2026-10-21 14:00:16 +05:00
docs Confirm polite 'vy' address; translation canon is closed 2026-10-21 00:16:45 +05:00
server Stress-test 1000 bot games and fix the guard-step deadlock 2026-10-21 14:03:14 +05:00
tools Propagate customer translation canon to all card texts 2026-10-21 00:04:06 +05:00
.gitattributes Base version: design docs, card catalog, implementation checklist 2026-10-20 21:15:00 +05:00
.gitignore Base version: design docs, card catalog, implementation checklist 2026-10-20 21:15:00 +05:00
DEVELOPMENT_CHECKLIST.md Keep card names in English, translate only effect text 2026-10-20 21:40:45 +05:00
IMPLEMENTATION_CHECKLIST.md Stress-test 1000 bot games and fix the guard-step deadlock 2026-10-21 14:03:14 +05:00
README.md Stress-test 1000 bot games and fix the guard-step deadlock 2026-10-21 14:03:14 +05:00
global.json Server skeleton, content pipeline and 94-card catalog 2026-10-20 21:27:45 +05:00
plan.md Base version: design docs, card catalog, implementation checklist 2026-10-20 21:15:00 +05:00

README.md

Vanguard Re:Master

Фанатский ремастер Cardfight!! Vanguard базовой эры (2011): формат Classic, сет BT01 и два триал-дека TD01/TD02.

Fan-made project. Not affiliated with Bushiroad. All card names and art belong to their respective owners.

Статус

Блок Состояние
Документация и решения готово
Каталог карт (94 / 124 принта) готово
Контент-пайплайн и валидатор готово
Игровое ядро (правила) каркас: фазы, райд, призыв, бой, драйв, урон
Сервер, клиент, лаунчер не начато

Требования

  • .NET SDK 10 (LTS). Версия зафиксирована в global.json.
  • Python 3 — только для переимпорта карт из первоисточника.

Быстрый старт

# проверить целостность контента
dotnet run --project server/src/Vanguard.Cli -- validate

# сводка по кланам, триггерам и редкостям
dotnet run --project server/src/Vanguard.Cli -- stats

# 1000 партий случайного бота с проверкой инвариантов
dotnet run --project server/src/Vanguard.Cli -- stress 1000

# тесты
dotnet test server/Vanguard.slnx

Ожидаемый вывод валидатора:

Карт: 94   Принтов: 124

OK: ошибок 0, предупреждений 0

Структура

/server/src/Vanguard.Rules        ядро правил: карты, колоды, состояние игры
/server/src/Vanguard.Content      загрузка и проверка YAML-контента
/server/src/Vanguard.Shared       общие контракты (netstandard2.1, для Unity)
/server/src/Vanguard.Cli          консольные команды
/server/tests                     тесты правил и контента
/content/sets                     карты в YAML
/content/keywords.yaml            ключевые слова и иконки
/content/translations/ru.yaml     русские тексты
/tools                            импорт и сид переводов
/docs                             правила перевода и прочие документы

Vanguard.Rules — чистая библиотека без Orleans, БД и сети. Это позволяет прогонять матчи в консоли и проверять правила до появления клиента.

Контент

Первоисточник — официальный карт-лист en.cf-vanguard.com; триггеры и редкости выгружены из вики. Пересобрать YAML:

python tools/import_cards.py

Валидатор проверяет инварианты, которые легко нарушить вручную:

  • у grade 0 щит 5000 только у Draw-триггера, иначе 10000;
  • Sentinel всегда со щитом 0;
  • параллельный принт (BT01/S01…S12) ссылается на существующий базовый принт той же карты;
  • в колоде ровно 50 карт, ≤4 копий по имени (а не по принту), ≤4 Sentinel, ≤4 Heal.

Тексты карт и иконки

Ключевые слова ([AUTO], [Counter-Blast 3], (VC/RC), <Kagero>) заменяются на иконки при отрисовке. Чтобы перевод не ломал разметку, тексты хранятся в виде шаблонов с токенами:

{auto}:{cb:2} When this unit is placed on {vc}, you may pay the cost...

Список токенов и их иконок — content/keywords.yaml. Русские тексты — content/translations/ru.yaml: заполняется только textRu. Поле nameRu существует, но пока содержит английское название — на случай, если позже решим переименовать карты. Правила перевода и спорные термины — docs/translation-rules.md.

Черновой перевод всех 66 текстов уже залит; его правит человек, после чего правила уточняются под фактические правки.

# создать файл переводов или обновить шаблоны, сохранив введённые переводы
dotnet run --project server/src/Vanguard.Cli -- translations build

# проверить заполнение и целостность токенов
dotnet run --project server/src/Vanguard.Cli -- translations check

Проверка ловит: незаполненные тексты, потерянные или лишние токены, токены, которых нет в справочнике. Карты без эффекта считаются готовыми сразу — им переводить нечего.

Документация

  • plan.md — исходный дизайн-документ.
  • DEVELOPMENT_CHECKLIST.md — решения, механики, экономика, риски.
  • IMPLEMENTATION_CHECKLIST.md — план реализации по блокам и гейтам.
  • content/cards-mvp.md — каталог карт с разбором состава сетов.