19 lines
2.9 KiB
Markdown
19 lines
2.9 KiB
Markdown
# Combat Logic — Review Log
|
|
|
|
## Review — 2026-04-27 — Verdict: NEEDS REVISION (revised same session)
|
|
|
|
Scope signal: M
|
|
Specialists: game-designer (critic), systems-designer (analyst), qa-lead (test-engineer), unity-specialist (architect), performance-analyst (general-purpose)
|
|
Blocking items: 13 | Recommended: 9
|
|
|
|
Summary: The hit-detection infrastructure (shapes, pipeline, edge cases, events) was solid, but three fundamental gaps blocked implementation: (1) the Player Fantasy described a parry mechanic that didn't exist in the design, (2) pure RNG crit contradicted the "Skill Over Stats" pillar, and (3) cross-system contracts (EnemyState, Vector3 boundary, AttackData construction, Blood Energy bridge) were undefined. All 13 blockers were resolved in the same session via targeted additions: full parry subsystem, positional crit system, defined structs, L0/L1 boundary contracts, spatial grid, and NonAlloc memory pattern. Form dimensions rebalanced (Mist 3.8, Wolf width 1.0, Human angle 100°).
|
|
|
|
## Review — 2026-04-27 — Verdict: APPROVED (revised same session after re-review)
|
|
|
|
Scope signal: L (multi-system integration, 3+ formulas, requires CombatCoordinator ADR)
|
|
Specialists: critic (game design), analyst (systems/math), qa-tester (AC review), general-purpose (feel/UX/audio), general-purpose (performance/data contracts)
|
|
Blocking items: 6 (all resolved) | Recommended: 14 (all resolved)
|
|
|
|
Summary: Six blocking data contract issues and fourteen major design gaps were identified across five specialist reviews. Critical architectural findings: (1) AttackData didn't distinguish player from enemy attacks — resolved by adding AttackSource enum, AttackGroupId, PlayerState struct, and InnerCritRadius; (2) parry nullification was impossible in the single-pass batch pipeline — resolved by restructuring to a two-phase pipeline (parry phase → damage phase) with a new CombatCoordinator L0 component; (3) parry timing management violated ADR-001 L0/L1 boundary — resolved by moving parry state into Combat Logic with ActivateParry(); (4) EnemyState ownership and FacingAngle pipeline were undefined — resolved as shared data contract with Enemy AI as data source; (5) parry input model was ambiguous (hold vs press) — resolved to press-for-window model; (6) multihit parry behavior was unspecified — resolved to one-parry-counters-all with single riposte. Additional fixes: parry stagger extended from 0.3s to 0.45s (exceeds Human 0.4s attack windup), Mist inner-radius crit zone gets a visible inner ring, combined clamping clarified as clamp(flanking+stat, 0, 1.0), 13 new ACs added (total: 33), spatial grid cell size added as tuning knob, AttackStyle contract extended with CritChanceStat/CritMultiplier/KnockbackForce defaults, CombatCoordinator dependency documented. GDD is now implementation-ready with all data contracts, pipeline phases, and edge cases fully specified.
|
|
Prior verdict resolved: Yes (6 blockers from re-review resolved in same session)
|