VanguardReMaster/README.md

118 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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** — только для переимпорта карт из первоисточника.
## Быстрый старт
```powershell
# проверить целостность контента
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:
```powershell
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 текстов уже залит; его правит человек, после чего
правила уточняются под фактические правки.
```powershell
# создать файл переводов или обновить шаблоны, сохранив введённые переводы
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` — план реализации по блокам и гейтам.
- `docs/HANDOFF.md` — состояние на конец сессии и порядок следующих шагов.
- `content/cards-mvp.md` — каталог карт с разбором состава сетов.