Compare commits
No commits in common. "af3fb2b621bd99dd6adccdbde66bb4694b1f5c2a" and "29822be2adc4acb85cecd0fd0f202ea4f92baccc" have entirely different histories.
af3fb2b621
...
29822be2ad
|
|
@ -5,10 +5,6 @@
|
|||
appsettings.Production.json
|
||||
secrets.json
|
||||
|
||||
# --- Python ---
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# --- .NET ---
|
||||
bin/
|
||||
obj/
|
||||
|
|
@ -50,10 +46,6 @@ client/Assets/StreamingAssets/aa/*
|
|||
client/*.log
|
||||
client/TestResults*.xml
|
||||
|
||||
# Локальный 4x-арт (251 МБ, кодом не используется) — не коммитим
|
||||
client/Assets/Vanguard/Resources/CardArt_4x/
|
||||
client/Assets/Vanguard/Resources/CardArt_4x.meta
|
||||
|
||||
# --- Unity прочее ---
|
||||
*.unitypackage
|
||||
crashlytics-build.properties
|
||||
|
|
|
|||
|
|
@ -49,8 +49,7 @@ description: Use for any work in the Vanguard ReMaster repository: Cardfight!! V
|
|||
- **После блока:** клиентские EditMode, серверные тесты (на home), `validate`,
|
||||
`translations check`, коммит и push.
|
||||
- **Сначала план, потом код:** новые изменения проходят анализ DeepSeek с
|
||||
записью в `docs/Development/IMPLEMENTATION_PLAN.md`, затем реализацию —
|
||||
её тоже выполняет DeepSeek, отдельным проходом по готовому плану.
|
||||
записью в `docs/Development/IMPLEMENTATION_PLAN.md`, затем реализацию Kimi.
|
||||
Передача — через файлы и Git, не через память модели. Детали —
|
||||
`docs/Development/AGENT-WORKFLOW.md`.
|
||||
|
||||
|
|
|
|||
|
|
@ -64,12 +64,6 @@
|
|||
|
||||
- **[D]** 3D-сцена, отдельные сцены Login/Lobby/DeckBuilder/Battle; HUD —
|
||||
uGUI; reference 1920×1080.
|
||||
- **[D]** Анимации описываются для локального игрока. Для противника
|
||||
применяются те же правила, но зеркально с его стороны поля: направление,
|
||||
сторона появления карты, наклон веера и порядок перекрытия зеркальны;
|
||||
камера также отражается относительно центра стола. Отдельные
|
||||
«противнические» анимации не делать, если это не подтверждённое
|
||||
исключение.
|
||||
- **[D]** Камера в покое фиксирована по центру поля с небольшим наклоном;
|
||||
временно двигается только `CameraDirector` в trigger-последовательности.
|
||||
- **[D]** Выбор карты/круга/зоны/цели — клик/драг по объекту; кнопки только
|
||||
|
|
@ -118,8 +112,7 @@
|
|||
|
||||
## 4. Процесс разработки
|
||||
|
||||
Формальный двухэтапный процесс (анализ → план → реализация; обе стадии
|
||||
выполняет DeepSeek, но раздельно) описан в
|
||||
Формальный двухэтапный процесс DeepSeek → Kimi описан в
|
||||
`docs/Development/AGENT-WORKFLOW.md`; активный план задачи — в
|
||||
`docs/Development/IMPLEMENTATION_PLAN.md`. Ниже — краткие правила, без
|
||||
дублирования шаблона плана.
|
||||
|
|
|
|||
24
AGENTS.md
|
|
@ -40,9 +40,8 @@
|
|||
|
||||
## Вопросы
|
||||
|
||||
- **Все вопросы задавай только через специальный инструмент `question`.**
|
||||
Это относится к любым уточнениям, выборам и открытым вопросам. Обычным
|
||||
сообщением вопрос задавай только если инструмент недоступен.
|
||||
- Для существенной неопределённости используй специальный инструмент
|
||||
`question` (если он недоступен — задай вопрос обычным сообщением).
|
||||
- Предлагай 2–4 коротких варианта с рекомендацией и возможность своего ответа.
|
||||
- Дождись ответа, прежде чем принимать зависящее от него решение.
|
||||
- Не спрашивай о том, что уже однозначно установлено кодом, документацией или
|
||||
|
|
@ -51,23 +50,22 @@
|
|||
## Двухэтапная разработка
|
||||
|
||||
- Любое пожелание, требующее изменения игры/кода, сначала проходит **анализ и
|
||||
план**, затем **реализацию**. Оба этапа выполняет DeepSeek, но раздельно:
|
||||
не начинай код в том же проходе, где анализируешь, кроме явно тривиальной
|
||||
правки, которую пользователь разрешил сделать сразу.
|
||||
план DeepSeek**, затем **реализацию Kimi**. Не начинай код без плана, кроме
|
||||
явно тривиальной правки, которую пользователь разрешил сделать сразу.
|
||||
- Активный план и журнал задач — `docs/Development/IMPLEMENTATION_PLAN.md`;
|
||||
подробный процесс — `docs/Development/AGENT-WORKFLOW.md`.
|
||||
- На этапе анализа не меняются игровой код, сцены, префабы, SO и конфиги;
|
||||
можно читать, задавать вопросы и обновлять план/документацию.
|
||||
- Перед реализацией прочитай `AGENTS.md`, Skill и раздел задачи, проверь Git и
|
||||
актуальность файлов/методов. Устаревший план не является разрешением на
|
||||
- DeepSeek на этапе анализа не меняет игровой код, сцены, префабы, SO и
|
||||
конфиги; можно читать, задавать вопросы и обновлять план/документацию.
|
||||
- Kimi перед реализацией читает `AGENTS.md`, Skill и раздел задачи, проверяет
|
||||
Git и актуальность файлов/методов. Устаревший план не является разрешением на
|
||||
изменения.
|
||||
- Передача контекста — только через файлы репозитория и Git, не через память
|
||||
модели. Если агенты в разных ветках/копиях, это фиксируется в плане.
|
||||
- Статусы пунктов: `[ ]`, `[x]`, `[!]`, `[-]`; отдельно указывается
|
||||
«Реализация» и «Проверка». `[x]` без проверки запрещён.
|
||||
- На этапе реализации не расширяй объём, не делай необязательный рефакторинг и
|
||||
не удаляй чужие изменения. При новом существенном решении пользователя —
|
||||
вопрос и остановка зависимой части.
|
||||
- Kimi не расширяет объём, не делает необязательный рефакторинг и не удаляет
|
||||
чужие изменения. При новом существенном решении пользователя — вопрос и
|
||||
остановка зависимой части.
|
||||
|
||||
## Изменения
|
||||
|
||||
|
|
|
|||
18
README.md
|
|
@ -98,22 +98,13 @@ OK: ошибок 0, предупреждений 0
|
|||
|
||||
## Контент
|
||||
|
||||
Первоисточник — официальный карт-лист `en.cf-vanguard.com`: и параметры карт,
|
||||
и арты берутся с одного сайта (`tools/import_official.py`). Пересобрать YAML
|
||||
и докачать недостающие арты:
|
||||
Первоисточник — официальный карт-лист `en.cf-vanguard.com`; триггеры и редкости
|
||||
выгружены из вики. Пересобрать YAML:
|
||||
|
||||
```powershell
|
||||
py tools/import_official.py --sets BT01,TD01,TD02
|
||||
python tools/import_cards.py
|
||||
```
|
||||
|
||||
Полезные режимы: `--list-sets` (какие сеты есть и их id), `--no-art`,
|
||||
`--dry-run`, `--limit N` для пробного прогона. На Windows, где `python` —
|
||||
заглушка Microsoft Store, используйте `py`.
|
||||
|
||||
`tools/import_cards.py` — прежний вариант (триггеры и редкости брались из вики,
|
||||
арты — с Fandom); оставлен как справка. Ручные поля из существующих YAML
|
||||
(`snipeBackRow`, `boost`, `nameRu`, `textRu`) новый импорт сохраняет.
|
||||
|
||||
Валидатор проверяет инварианты, которые легко нарушить вручную:
|
||||
|
||||
- у grade 0 щит 5000 **только** у Draw-триггера, иначе 10000;
|
||||
|
|
@ -167,8 +158,7 @@ dotnet run --project server/src/Vanguard.Cli -- translations check
|
|||
- `IMPLEMENTATION_CHECKLIST.md` — исторический план по блокам и гейтам.
|
||||
- `docs/Development/IMPLEMENTATION_PLAN.md` — активный журнал задач и шаблон
|
||||
плана.
|
||||
- `docs/Development/AGENT-WORKFLOW.md` — двухэтапный процесс: анализ → реализация
|
||||
(обе стадии на DeepSeek).
|
||||
- `docs/Development/AGENT-WORKFLOW.md` — двухэтапный процесс DeepSeek → Kimi.
|
||||
- `docs/HANDOFF.md` — состояние на конец сессии и порядок следующих шагов.
|
||||
- `docs/protocol.md` — протокол матча: кадры, интенты, события, таймеры, реконнект.
|
||||
- `docs/game-rules.md` — конспект правил и сверка с текущей реализацией.
|
||||
|
|
|
|||
|
|
@ -84,7 +84,6 @@ MonoBehaviour:
|
|||
m_SupportScreenSpaceLensFlare: 1
|
||||
m_GPUResidentDrawerMode: 0
|
||||
m_SmallMeshScreenPercentage: 0
|
||||
m_ShadowSmallMeshScreenPercentages: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
|
||||
m_ShadowType: 1
|
||||
m_LocalShadowsSupported: 0
|
||||
|
|
@ -101,18 +100,18 @@ MonoBehaviour:
|
|||
m_Keys: []
|
||||
m_Values:
|
||||
m_PrefilteringModeMainLightShadows: 3
|
||||
m_PrefilteringModeAdditionalLight: 0
|
||||
m_PrefilteringModeAdditionalLightShadows: 2
|
||||
m_PrefilteringModeAdditionalLight: 4
|
||||
m_PrefilteringModeAdditionalLightShadows: 0
|
||||
m_PrefilterXRKeywords: 1
|
||||
m_PrefilteringModeForwardPlus: 2
|
||||
m_PrefilteringModeForwardPlus: 1
|
||||
m_PrefilteringModeDeferredRendering: 0
|
||||
m_PrefilteringModeScreenSpaceOcclusion: 2
|
||||
m_PrefilteringModeScreenSpaceReflection: 0
|
||||
m_PrefilteringModeScreenSpaceOcclusion: 1
|
||||
m_PrefilteringModeScreenSpaceReflection: 1
|
||||
m_PrefilterWriteSmoothness: 1
|
||||
m_PrefilterDebugKeywords: 1
|
||||
m_PrefilterWriteRenderingLayers: 1
|
||||
m_PrefilterWriteRenderingLayers: 0
|
||||
m_PrefilterHDROutput: 1
|
||||
m_PrefilterAlphaOutput: 1
|
||||
m_PrefilterAlphaOutput: 0
|
||||
m_PrefilterSSAODepthNormals: 0
|
||||
m_PrefilterSSAOSourceDepthLow: 1
|
||||
m_PrefilterSSAOSourceDepthMedium: 1
|
||||
|
|
@ -124,23 +123,20 @@ MonoBehaviour:
|
|||
m_PrefilterSSAOSampleCountHigh: 1
|
||||
m_PrefilterDBufferMRT1: 1
|
||||
m_PrefilterDBufferMRT2: 1
|
||||
m_PrefilterDBufferMRT3: 1
|
||||
m_PrefilterSoftShadowsQualityLow: 1
|
||||
m_PrefilterSoftShadowsQualityMedium: 1
|
||||
m_PrefilterSoftShadowsQualityHigh: 1
|
||||
m_PrefilterDBufferMRT3: 0
|
||||
m_PrefilterSoftShadowsQualityLow: 0
|
||||
m_PrefilterSoftShadowsQualityMedium: 0
|
||||
m_PrefilterSoftShadowsQualityHigh: 0
|
||||
m_PrefilterSoftShadows: 0
|
||||
m_PrefilterScreenCoord: 1
|
||||
m_PrefilterScreenSpaceIrradiance: 1
|
||||
m_PrefilterScreenSpaceIrradiance: 0
|
||||
m_PrefilterNativeRenderPass: 1
|
||||
m_PrefilterUseLegacyLightmaps: 0
|
||||
m_PrefilterBicubicLightmapSampling: 1
|
||||
m_PrefilterBicubicLightmapSampling: 0
|
||||
m_PrefilterReflectionProbeRotation: 0
|
||||
m_PrefilterReflectionProbeBlending: 0
|
||||
m_PrefilterReflectionProbeBoxProjection: 0
|
||||
m_PrefilterReflectionProbeAtlas: 0
|
||||
m_PrefilterPointSamplingUpsampling: 1
|
||||
m_Light2DPrefilteringMode: 0
|
||||
m_Light2DKeptVariantCombos: []
|
||||
m_ShaderVariantLogLevel: 0
|
||||
m_ShadowCascades: 0
|
||||
m_Textures:
|
||||
|
|
|
|||
|
|
@ -72,22 +72,7 @@ MonoBehaviour:
|
|||
- rid: 6588237625532874761
|
||||
- rid: 6588237625532874762
|
||||
m_RuntimeSettings:
|
||||
m_List:
|
||||
- rid: 6852985685364965378
|
||||
- rid: 6852985685364965380
|
||||
- rid: 6852985685364965381
|
||||
- rid: 6852985685364965384
|
||||
- rid: 6852985685364965392
|
||||
- rid: 6852985685364965394
|
||||
- rid: 8712630790384254976
|
||||
- rid: 4284062438471237637
|
||||
- rid: 5747374308340793346
|
||||
- rid: 5747374308340793347
|
||||
- rid: 5747374308340793348
|
||||
- rid: 6588237625532874753
|
||||
- rid: 6588237625532874756
|
||||
- rid: 6588237625532874759
|
||||
- rid: 6588237625532874761
|
||||
m_List: []
|
||||
m_AssetVersion: 11
|
||||
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
||||
m_RenderingLayerNames:
|
||||
|
|
|
|||
|
|
@ -115,21 +115,17 @@ namespace Vanguard.Editor
|
|||
|
||||
var active = SceneManager.GetActiveScene().name;
|
||||
var environment = GameObject.Find("Vanguard 3D Environment");
|
||||
var backdrop = GameObject.Find("LoginBackdrop");
|
||||
var login = GameObject.Find("LoginScreen");
|
||||
var lobby = GameObject.Find("MetaScreen");
|
||||
var onboarding = GameObject.Find("OnboardingScreen");
|
||||
var isLogin = active == SceneFlow.Login;
|
||||
var isLobby = active == SceneFlow.Lobby;
|
||||
var success = (isLogin || isLobby)
|
||||
&& (login != null || lobby != null || onboarding != null)
|
||||
&& (isLogin ? backdrop != null : environment != null);
|
||||
var success = environment != null
|
||||
&& (active == SceneFlow.Login || active == SceneFlow.Lobby)
|
||||
&& (login != null || lobby != null || onboarding != null);
|
||||
|
||||
Debug.Log(
|
||||
"SCENE_SMOKE success=" + success
|
||||
+ " active=" + active
|
||||
+ " env=" + (environment != null)
|
||||
+ " backdrop=" + (backdrop != null)
|
||||
+ " login=" + (login != null)
|
||||
+ " lobby=" + (lobby != null)
|
||||
+ " onboarding=" + (onboarding != null)
|
||||
|
|
|
|||
|
|
@ -28,25 +28,15 @@ MonoBehaviour:
|
|||
intercept: 1.9
|
||||
perfectGuard: 2
|
||||
inputLockTail: 0.15
|
||||
eventPause: 1.5
|
||||
postDrivePause: 1.5
|
||||
postTriggerPause: 1.5
|
||||
postDamagePause: 1.5
|
||||
arrowShowDuration: 0.25
|
||||
arrowHideDuration: 0.2
|
||||
moveDuration: 0.8
|
||||
importantMoveDuration: 1.3
|
||||
moveDelayBetweenCards: 0.22
|
||||
moveDuration: 0.5
|
||||
importantMoveDuration: 0.9
|
||||
moveDelayBetweenCards: 0.18
|
||||
arcHeight: 0.45
|
||||
introOverheadHold: 1.5
|
||||
introCameraMoveDuration: 1
|
||||
introMainHold: 1.5
|
||||
introDrawDuration: 0.6
|
||||
cameraZoomDuration: 0.5
|
||||
vanguardRevealDuration: 0.8
|
||||
triggerRevealDuration: 0.35
|
||||
triggerRevealHold: 0.75
|
||||
cameraReturnDuration: 0.5
|
||||
cameraZoomDuration: 0.35
|
||||
triggerRevealHold: 1.2
|
||||
cameraReturnDuration: 0.4
|
||||
cameraRezoomDuration: 0.3
|
||||
growDuration: 0.35
|
||||
dashScrollSpeed: 1.5
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 364 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 381 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 418 KiB |
|
After Width: | Height: | Size: 465 KiB |
|
Before Width: | Height: | Size: 422 KiB |
|
After Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 412 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 426 KiB |
|
After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 391 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 396 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 400 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 466 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 443 KiB |
|
After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 393 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 356 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 406 KiB |
|
After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 409 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 383 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 452 KiB |
|
After Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 353 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 398 KiB |
|
After Width: | Height: | Size: 212 KiB |
|
Before Width: | Height: | Size: 455 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 386 KiB |
|
After Width: | Height: | Size: 368 KiB |
|
Before Width: | Height: | Size: 349 KiB |
|
After Width: | Height: | Size: 399 KiB |
|
Before Width: | Height: | Size: 400 KiB |
|
After Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 393 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 435 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 393 KiB |
|
After Width: | Height: | Size: 184 KiB |
|
Before Width: | Height: | Size: 353 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 420 KiB |
|
After Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 410 KiB |
|
After Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 380 KiB |
|
After Width: | Height: | Size: 192 KiB |