@zigrivers/scaffold 3.5.0 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/content/knowledge/game/game-ai-patterns.md +26 -1
- package/content/knowledge/game/game-asset-pipeline.md +7 -3
- package/content/knowledge/game/game-audio-design.md +3 -1
- package/content/knowledge/game/game-design-document.md +9 -0
- package/content/knowledge/game/game-domain-patterns.md +2 -0
- package/content/knowledge/game/game-engine-selection.md +2 -2
- package/content/knowledge/game/game-input-systems.md +22 -0
- package/content/knowledge/game/game-level-content-design.md +28 -0
- package/content/knowledge/game/game-networking.md +2 -0
- package/content/knowledge/game/game-performance-budgeting.md +11 -0
- package/content/knowledge/game/game-save-systems.md +1 -1
- package/content/knowledge/game/game-ui-patterns.md +2 -0
- package/content/knowledge/game/game-vr-ar-design.md +1 -1
- package/content/knowledge/review/review-game-ui.md +293 -0
- package/content/pipeline/architecture/netcode-spec.md +1 -1
- package/content/pipeline/architecture/review-netcode.md +3 -3
- package/content/pipeline/foundation/performance-budgets.md +1 -1
- package/content/pipeline/pre/game-design-document.md +1 -0
- package/content/pipeline/quality/playtest-plan.md +2 -1
- package/content/pipeline/specification/art-bible.md +2 -2
- package/content/pipeline/specification/audio-design.md +2 -1
- package/content/pipeline/specification/content-structure-design.md +1 -0
- package/content/pipeline/specification/economy-design.md +1 -0
- package/content/pipeline/specification/review-economy.md +2 -2
- package/content/pipeline/specification/review-game-ui.md +7 -7
- package/content/pipeline/specification/save-system-spec.md +1 -1
- package/package.json +1 -1
|
@@ -14,7 +14,7 @@ Game AI systems exist on a spectrum from simple to complex:
|
|
|
14
14
|
|
|
15
15
|
- **Finite State Machines (FSM)**: States with explicit transitions. Simple, predictable, easy to debug. Falls apart when state count grows large. Best for simple enemies, UI, and game state management.
|
|
16
16
|
- **Behavior Trees (BT)**: Hierarchical task decomposition. Moderate complexity, highly readable, industry standard for action game AI. Used in Halo, Unreal Engine's default AI, most AAA combat AI.
|
|
17
|
-
- **Goal-Oriented Action Planning (GOAP)**: Agents define goals, planner finds action sequences to achieve them. More autonomous, harder to control. Used in F.E.A.R.,
|
|
17
|
+
- **Goal-Oriented Action Planning (GOAP)**: Agents define goals, planner finds action sequences to achieve them. More autonomous, harder to control. Used in F.E.A.R., Tomb Raider (2013 reboot).
|
|
18
18
|
- **Utility AI**: Score every possible action and pick the highest-scoring one. Extremely flexible, non-linear priority. Used in The Sims, Infinite Axis Utility System. Harder to predict and debug.
|
|
19
19
|
|
|
20
20
|
Each system has a sweet spot. Do not use GOAP for a platformer enemy that runs left and right. Do not use an FSM for an open-world companion that must react to hundreds of situations.
|
|
@@ -540,3 +540,28 @@ AI bugs are hard to reproduce because they depend on runtime state. Build debugg
|
|
|
540
540
|
- **Freeze and inspect**: Ability to pause the game and inspect any NPC's full AI state (current BT node, GOAP plan, utility scores, perception targets)
|
|
541
541
|
- **Record and replay**: Capture AI inputs (world state each frame) and replay to reproduce bugs deterministically
|
|
542
542
|
- **Slow motion**: Run the game at 0.25x speed to observe AI decision-making in real time
|
|
543
|
+
|
|
544
|
+
## Genre-Specific AI Patterns
|
|
545
|
+
|
|
546
|
+
### Strategy Game AI
|
|
547
|
+
|
|
548
|
+
Strategy AI operates on longer time horizons than action AI. Key patterns:
|
|
549
|
+
|
|
550
|
+
- **Influence Maps**: 2D grid overlays tracking resource density, threat level, territory control. Update per turn or every N seconds. Used for build placement decisions, army movement, and resource prioritization.
|
|
551
|
+
- **Build Order Planning**: Decision trees or scripted sequences for early-game economy. At higher difficulty, use Monte Carlo Tree Search (MCTS) to evaluate build paths 10-20 turns ahead.
|
|
552
|
+
- **Opponent Modeling**: Track player tendencies (aggressive/defensive/economic) and adapt strategy. Simple approach: weighted counter-strategy table. Advanced: maintain belief state of opponent's hidden information.
|
|
553
|
+
|
|
554
|
+
### Turn-Based AI
|
|
555
|
+
|
|
556
|
+
- **Minimax with Alpha-Beta Pruning**: Standard for two-player zero-sum games (chess, checkers). Search depth 4-8 plies for real-time-constrained turns. Evaluation function must be fast (<1ms per position).
|
|
557
|
+
- **Monte Carlo Tree Search (MCTS)**: Preferred for games with large branching factors (Go, complex card games). Run 1,000-10,000 simulations per decision within the time budget. UCB1 exploration constant: typically 1.0-1.4.
|
|
558
|
+
|
|
559
|
+
### Racing AI
|
|
560
|
+
|
|
561
|
+
- **Racing Line Following**: Precompute optimal racing line as spline control points. AI follows line with rubber-banding: if too far ahead, reduce throttle by 5-15%; if behind, increase by 10-20%. Expose difficulty parameter controlling how closely AI follows the optimal line.
|
|
562
|
+
- **Overtaking Decision**: Distance-to-corner, speed differential, and track width determine whether to attempt pass. Use simple cost function: `overtake_score = speed_advantage * track_width / distance_to_corner`.
|
|
563
|
+
|
|
564
|
+
### Simulation/Management AI
|
|
565
|
+
|
|
566
|
+
- **Need-Based Scheduling**: NPCs maintain need queues (hunger, rest, social). Highest-urgency need drives behavior selection. Satisfaction decay rates define personality: fast hunger decay = always eating. Based on Sims-style utility curves.
|
|
567
|
+
- **Agent Scheduling**: For city-builder NPCs: pathfind to workplace at shift start, return home at shift end. Use job queue with priority: emergency > assigned work > idle tasks. Budget 0.5-1ms per agent per tick for 100+ simultaneous agents.
|
|
@@ -55,7 +55,7 @@ The pipeline typically involves multiple DCC tools in sequence:
|
|
|
55
55
|
|
|
56
56
|
- **3D Modeling**: Maya (industry standard, USD support), Blender (free, growing adoption), 3ds Max (legacy, architectural viz)
|
|
57
57
|
- **Sculpting**: ZBrush (high-poly sculpting, retopo), Blender (integrated sculpt mode)
|
|
58
|
-
- **Texturing**: Substance 3D Painter (PBR texturing standard), Substance Designer (procedural materials), Quixel
|
|
58
|
+
- **Texturing**: Substance 3D Painter (PBR texturing standard), Substance Designer (procedural materials), Quixel Bridge (Mixer was discontinued in 2024; the Megascans library and Bridge integration remain active in Unreal)
|
|
59
59
|
- **VFX/Procedural**: Houdini (procedural generation, destruction, terrain), EmberGen (real-time fluid sim for VFX textures)
|
|
60
60
|
- **2D Art**: Photoshop, Aseprite (pixel art), Krita (free painting)
|
|
61
61
|
- **Audio**: FMOD Studio / Wwise (integration middleware), Audacity (editing), Reaper (DAW)
|
|
@@ -256,7 +256,11 @@ Each DCC tool in the pipeline needs documented export settings to ensure consist
|
|
|
256
256
|
|
|
257
257
|
**Blender to FBX export settings:**
|
|
258
258
|
- Scale: 1.0 (ensure Blender scene scale matches engine units — 1 unit = 1 meter for Unreal, 1 unit = 1 meter for Unity)
|
|
259
|
-
- Forward axis
|
|
259
|
+
- Forward axis per engine:
|
|
260
|
+
- Unreal: -Y Forward, Z Up
|
|
261
|
+
- Unity: use FBX exporter 'Z Forward' setting — Unity converts to Y-Up left-handed on import
|
|
262
|
+
- Godot: -Z Forward, Y Up (right-handed)
|
|
263
|
+
Verify axis settings with a test cube export before committing to a convention. A single wrong axis setting affects every asset in the pipeline.
|
|
260
264
|
- Apply Modifiers: Yes
|
|
261
265
|
- Mesh: Triangulate Faces enabled for guaranteed triangle counts
|
|
262
266
|
- Armature: only include deform bones (exclude IK targets, helper bones)
|
|
@@ -288,7 +292,7 @@ Channel packing stores multiple grayscale maps in the RGBA channels of a single
|
|
|
288
292
|
**Compression formats by platform:**
|
|
289
293
|
- **PC/Console**: BC7 (high quality, 8 bpp) for albedo/normal, BC5 for 2-channel normals, BC4 for grayscale masks
|
|
290
294
|
- **Android**: ASTC (adaptive block sizes: 4x4 for high quality, 8x8 for lower quality/smaller size), ETC2 for broad compatibility
|
|
291
|
-
- **iOS**: ASTC (
|
|
295
|
+
- **iOS**: ASTC (required for all Metal-capable devices, iPhone 6 and later). PVRTC is deprecated — Apple dropped dedicated PVRTC hardware decompression in recent GPU generations. Do not use PVRTC for new projects.
|
|
292
296
|
- **Nintendo Switch**: ASTC is the primary format
|
|
293
297
|
|
|
294
298
|
**MIP map policy:**
|
|
@@ -22,7 +22,7 @@ Both Wwise and FMOD are professional audio middleware that replace the engine's
|
|
|
22
22
|
|
|
23
23
|
**Wwise:**
|
|
24
24
|
- Steeper learning curve; full productivity takes weeks of training
|
|
25
|
-
- More complex licensing (free under
|
|
25
|
+
- More complex licensing (free for non-commercial use and projects under revenue thresholds set by Audiokinetic; commercial pricing based on project budget tier — verify current thresholds at audiokinetic.com as these shift periodically)
|
|
26
26
|
- Industry standard for AAA — most senior audio programmers have Wwise experience
|
|
27
27
|
- Superior spatial audio with Wwise Spatial Audio including room/portal modeling
|
|
28
28
|
- More powerful interactive music system (Music Segments, Stingers, Transitions)
|
|
@@ -108,6 +108,8 @@ Adaptive music responds to gameplay state in real-time, creating a dynamic sound
|
|
|
108
108
|
|
|
109
109
|
**Implementation pattern:**
|
|
110
110
|
|
|
111
|
+
The following example uses Unity + FMOD, but the pattern is engine-agnostic: create a persistent music event, drive parameters (intensity, danger) from gameplay state, and smooth parameter transitions. In Unreal, use FMOD or Wwise UE plugin with Blueprint-exposed parameters. In Godot, use AudioStreamPlayer with custom properties driven by game state, or integrate FMOD via GDNative. The core pattern — a persistent music controller receiving gameplay state updates — is identical across engines.
|
|
112
|
+
|
|
111
113
|
```csharp
|
|
112
114
|
// Adaptive music controller — vertical layering with FMOD parameters
|
|
113
115
|
// Attach to a persistent game object that survives scene loads
|
|
@@ -39,6 +39,15 @@ The core loop is the fundamental cycle of actions the player repeats most freque
|
|
|
39
39
|
|
|
40
40
|
A core loop is healthy when: every action has visible feedback within 200ms, outcomes feel proportional to skill/effort, and the loop itself is satisfying even without meta-progression.
|
|
41
41
|
|
|
42
|
+
### Genre-Specific Loop Patterns
|
|
43
|
+
|
|
44
|
+
The Input → Rules → Outcome → Feedback model applies universally, but timing and metrics vary by genre:
|
|
45
|
+
|
|
46
|
+
- **Turn-based loop**: Observe → Plan → Commit → Resolve → Evaluate. Feedback latency is irrelevant; decision quality and information clarity are the metrics. Each turn should present a meaningful choice with visible consequences.
|
|
47
|
+
- **Narrative loop**: Read/Watch → Choice → Consequence → Reveal → React. Pacing metric: decision points every 5-10 minutes of content. Consequence visibility: player should understand within 1-2 scenes how their choice affected the narrative.
|
|
48
|
+
- **Management loop**: Monitor → Prioritize → Allocate → Wait → Evaluate. Session metric: one complete evaluate cycle per 15-30 minutes. Feedback: dashboard showing resource trends, not just current values.
|
|
49
|
+
- **Puzzle loop**: Observe state → Hypothesize → Test → Success/Adjust. 'Aha moment' density: 1-2 per puzzle. Difficulty curve: each puzzle should be solvable in 1-5 minutes at target difficulty.
|
|
50
|
+
|
|
42
51
|
### Mechanics Documentation
|
|
43
52
|
|
|
44
53
|
Every mechanic in the GDD must be documented with four components: inputs (what the player controls), rules (how the system resolves actions), outputs (what changes), and feedback (how the player perceives the change). Mechanics without all four components are incomplete and will be implemented inconsistently.
|
|
@@ -28,6 +28,8 @@ Games are split into two architectural layers that demand different modeling app
|
|
|
28
28
|
|
|
29
29
|
**Do NOT mix these within a layer.** ECS in the meta-game layer creates anemic data bags with scattered business logic. DDD in the simulation layer creates cache-hostile object graphs that kill frame rates. Each paradigm is correct for its layer and wrong for the other.
|
|
30
30
|
|
|
31
|
+
**Engine architecture note:** The pure ECS pattern (entities as IDs, components as data bags, systems as external functions) applies directly to ECS-first frameworks: Unity DOTS, Bevy, Flecs, and custom engines. Unreal Engine uses an Actor-Component model where Actors own Components with behavior — this is closer to OOP with composition than data-oriented ECS. Do not force pure ECS onto Unreal; instead, use Unreal's native Actor-Component model for gameplay systems and apply DDD patterns to meta-game layers (GameInstance, subsystems, save state). Godot uses a Node/Scene composition model with signals — apply the simulation/meta-game separation principle using Godot's native patterns rather than importing ECS concepts.
|
|
32
|
+
|
|
31
33
|
### Game State Machines
|
|
32
34
|
|
|
33
35
|
State machines are the universal pattern in game development. They appear at every scale:
|
|
@@ -106,7 +106,7 @@ criteria:
|
|
|
106
106
|
|
|
107
107
|
- name: "License Cost"
|
|
108
108
|
weight: 2
|
|
109
|
-
unity: 3 # Free tier, then subscription; runtime fee
|
|
109
|
+
unity: 3 # Free tier (Unity Personal), then subscription (Plus/Pro); runtime fee rescinded September 2024, reverted to seat-based licensing
|
|
110
110
|
unreal: 4 # Free until $1M revenue, then 5% royalty
|
|
111
111
|
godot: 5 # MIT license, completely free forever
|
|
112
112
|
custom: 5 # No license cost (but massive dev cost)
|
|
@@ -126,7 +126,7 @@ criteria:
|
|
|
126
126
|
|
|
127
127
|
**Weaknesses:**
|
|
128
128
|
- Rendering quality historically trails Unreal for AAA-grade visuals (HDRP narrows this gap)
|
|
129
|
-
- Runtime fee
|
|
129
|
+
- Runtime fee was announced September 2023, rescinded September 2024 under new leadership with return to seat-based licensing — but the episode damaged developer trust and prompted some studios to migrate to other engines
|
|
130
130
|
- Legacy code and architectural debt in some subsystems (old Input System, UI systems, networking)
|
|
131
131
|
- DOTS/ECS is powerful but has had a long and unstable development path
|
|
132
132
|
|
|
@@ -355,3 +355,25 @@ Input latency is the time from the player pressing a button to the corresponding
|
|
|
355
355
|
- Use "late latch" techniques: update camera/aim after the final input poll, just before GPU submission
|
|
356
356
|
- On PC, support NVIDIA Reflex / AMD Anti-Lag for driver-level latency reduction
|
|
357
357
|
- Measure with a high-speed camera (240+ fps) pointed at the display while pressing a button connected to an LED — count frames between LED and screen change
|
|
358
|
+
|
|
359
|
+
## Genre-Specific Input Patterns
|
|
360
|
+
|
|
361
|
+
### Touch and Mobile Input
|
|
362
|
+
|
|
363
|
+
Beyond minimum target sizes (44x44pt iOS, 48x48dp Android), mobile games need:
|
|
364
|
+
|
|
365
|
+
- **Virtual joystick**: Floating (appears at touch point) preferred over fixed. Dead zone: 10-15% of joystick radius. Visual feedback: thumb indicator follows touch position.
|
|
366
|
+
- **Gesture recognition**: Swipe threshold 50-100px to distinguish from taps. Multi-touch: track up to 5 simultaneous touches for action games, 2 for casual.
|
|
367
|
+
- **Auto-play patterns**: Common in mobile RPGs — tap to toggle auto-battle with manual override for skills. Implement as a state machine: Manual → Auto → Manual on any input.
|
|
368
|
+
- **Portrait vs landscape**: Design thumb-zone heat maps for each orientation. Critical actions within 60px of bottom corners.
|
|
369
|
+
|
|
370
|
+
### Strategy and Management Input
|
|
371
|
+
|
|
372
|
+
- **Box-select**: Click-drag rectangle, select all units inside. Add to selection with Shift+click. Deselect with right-click on empty space.
|
|
373
|
+
- **Command queuing**: Shift+right-click appends to command queue. Display queue as waypoint markers. Max queue depth: 10-20 commands.
|
|
374
|
+
- **Camera controls**: Edge scroll (mouse at screen edge), WASD pan, middle-mouse drag. Zoom: scroll wheel with min/max zoom limits. Minimap click-to-jump.
|
|
375
|
+
|
|
376
|
+
### Turn-Based Input
|
|
377
|
+
|
|
378
|
+
- **Select-confirm pattern**: Click to select, click again to confirm. Show preview of action result before confirmation. Undo: allow undo of last action if turn is not yet submitted.
|
|
379
|
+
- **Hover-preview**: On hover, show range/area-of-effect highlight. On select, show detailed outcome prediction.
|
|
@@ -453,3 +453,31 @@ Every level should have a design document before construction begins.
|
|
|
453
453
|
- **Audio direction notes**: Ambient soundscape, music transitions, key audio events
|
|
454
454
|
- **Unique mechanics**: Any level-specific mechanics (vehicles, zero-gravity, underwater) with design notes
|
|
455
455
|
- **Dependencies**: What player abilities are required? What story prerequisites must be met?
|
|
456
|
+
|
|
457
|
+
## 2D and Non-3D Level Design
|
|
458
|
+
|
|
459
|
+
### 2D Platformer Metrics
|
|
460
|
+
|
|
461
|
+
The design unit for 2D platformers is the screen or screen segment, not 3D meters:
|
|
462
|
+
|
|
463
|
+
- **Screen dimensions**: Design at target resolution (e.g., 1920x1080). One screen = one design unit.
|
|
464
|
+
- **Tile grid**: Standard tile size 16x16, 32x32, or 64x64 pixels. Character occupies 1-2 tiles wide, 2-3 tiles tall.
|
|
465
|
+
- **Jump arc**: Defined by initial velocity and gravity. Standard platformer: peak height = 3-5 tiles, horizontal distance = 4-8 tiles. Coyote time: 6-10 frames (100-167ms at 60fps).
|
|
466
|
+
- **Platform spacing**: Safe gap = 60-80% of max jump distance. Challenge gap = 85-95%. Death gap = 100%+.
|
|
467
|
+
- **Enemy placement**: One new mechanic or enemy per 3-5 screens. Tutorial screens introduce mechanics in isolation before combining.
|
|
468
|
+
|
|
469
|
+
### Tile-Based Level Design
|
|
470
|
+
|
|
471
|
+
For grid-based games (roguelikes, tactics, puzzle games):
|
|
472
|
+
|
|
473
|
+
- **Room generation**: Define room templates as rectangles with connection points. Minimum room size: 5x5 tiles. Maximum: 15x15 for tactical games. Connect rooms via corridors 1-3 tiles wide.
|
|
474
|
+
- **Difficulty distribution**: In procedural dungeon generation, difficulty increases with distance from start. Use weighted room selection: rooms with harder enemies have higher weight at greater distances.
|
|
475
|
+
- **Puzzle stage design**: Each stage introduces one new mechanic. Progression: tutorial (1 mechanic, 1 solution), practice (1 mechanic, multiple applications), combination (2+ mechanics together), mastery (all mechanics under constraint).
|
|
476
|
+
|
|
477
|
+
### Non-Spatial Content Design
|
|
478
|
+
|
|
479
|
+
For games without spatial levels (card games, visual novels, management sims):
|
|
480
|
+
|
|
481
|
+
- **Card game stage progression**: Introduce card types gradually. New card pool expansion every 3-5 encounters. Total card pool at launch: 100-300 for competitive, 50-100 for single-player.
|
|
482
|
+
- **Visual novel branching**: Key decision points every 5-10 minutes of reading. Total playthrough length: 2-4 hours per route. Route count: 3-5 for manageable scope. Flag variable tracking: use boolean flags + integer counters, avoid floating-point relationship values.
|
|
483
|
+
- **Management sim progression**: Unlock new building/unit types every 15-30 minutes of play. Each unlock should enable at least one new strategy the player couldn't execute before.
|
|
@@ -313,6 +313,8 @@ Lockstep is an alternative to client-server prediction that is deterministic: al
|
|
|
313
313
|
**Requirements:**
|
|
314
314
|
- The simulation must be perfectly deterministic: same inputs must produce bit-identical outputs on all platforms
|
|
315
315
|
- Floating-point determinism is extremely hard across different CPUs and compilers — many lockstep games use fixed-point math
|
|
316
|
+
|
|
317
|
+
**Fixed-point math implementation:** Use a Q16.16 or Q32.32 fixed-point representation for all game state calculations in lockstep systems. Libraries: libfixmath (C), FixedMath.Net (C#). All trigonometric functions must use lookup tables or polynomial approximations — never call platform math libraries (sin, cos, sqrt) as these are not deterministic across platforms. Performance cost: fixed-point is typically 2-5x slower than hardware float but eliminates desync bugs entirely.
|
|
316
318
|
- A single desync (one client computes a different result) is catastrophic — desyncs must be detected (via state hash comparison) and recovered from (resync or disconnect)
|
|
317
319
|
|
|
318
320
|
**Rollback networking (GGPO):**
|
|
@@ -52,6 +52,15 @@ Memory budgets must be subdivided by subsystem: textures (typically 40–60% of
|
|
|
52
52
|
- **Shader complexity**: Measure in GPU ms per material; flag any material exceeding 0.5 ms in isolation
|
|
53
53
|
- **Post-processing**: Budget 2–4 ms total for all post-process effects combined
|
|
54
54
|
|
|
55
|
+
### 2D and Non-3D Performance Budgets
|
|
56
|
+
|
|
57
|
+
2D games have different bottlenecks than 3D:
|
|
58
|
+
|
|
59
|
+
- **Sprite batch count**: Target 50-200 draw calls. Each atlas page = 1 batch. Minimize atlas count by grouping co-rendered sprites.
|
|
60
|
+
- **Fill rate**: Overdraw from layered sprites is the primary 2D GPU cost. Target < 4x overdraw. Transparent sprites are expensive — use opaque where possible.
|
|
61
|
+
- **Particle count (2D VFX)**: Budget 200-500 active particles for mobile, 1,000-2,000 for PC.
|
|
62
|
+
- **UI-heavy games** (visual novels, card games): UI element count < 500 visible, text rendering budget < 2ms, animation/tween count < 100 simultaneous.
|
|
63
|
+
|
|
55
64
|
### Loading Time Targets
|
|
56
65
|
|
|
57
66
|
- **Initial boot to menu**: Under 10 seconds on console (platform certification requirement areas)
|
|
@@ -68,6 +77,8 @@ Mobile devices throttle CPU and GPU when they overheat. A game that runs at 60 f
|
|
|
68
77
|
- Budget power draw to allow 2–3 hours of gameplay per charge
|
|
69
78
|
- Reduce target frame rate to 30 fps on mobile unless the game genre demands 60 fps
|
|
70
79
|
|
|
80
|
+
**Concrete mobile thermal targets:** Typical thermal throttle onset at 40-42°C skin temperature (varies by device). Sustainable GPU utilization: 50-60% of peak — not 100%. Power draw targets: 3W sustained for phone games (~3hr on 4000mAh battery), 5W for tablet. Monitor with Android `dumpsys thermalservice` or iOS `ProcessInfo.ThermalState`. At `.serious` thermal state, reduce render resolution by 25% and particle count by 50%.
|
|
81
|
+
|
|
71
82
|
## Deep Guidance
|
|
72
83
|
|
|
73
84
|
### Frame Budget Allocation Template
|
|
@@ -325,7 +325,7 @@ Each platform has unique requirements that affect save system design:
|
|
|
325
325
|
|
|
326
326
|
**Nintendo Switch:**
|
|
327
327
|
- Save data uses the Nintendo save data API
|
|
328
|
-
- Strict save data size limits
|
|
328
|
+
- Strict save data size limits: Default allocation for most titles is 32 MB total (all save slots combined). Larger allocations (up to 256 MB) require explicit approval from Nintendo during title registration and must be justified. Design for 32 MB as the baseline constraint.
|
|
329
329
|
- No cloud save backup for non-Nintendo Switch Online subscribers
|
|
330
330
|
- Save data is bound to the console, not the user (complicates console transfer scenarios)
|
|
331
331
|
- The game must implement its own backup strategy since the platform provides limited protection
|
|
@@ -64,6 +64,8 @@ Controller navigation requires explicit focus management — there is no cursor
|
|
|
64
64
|
|
|
65
65
|
Controller navigation requires a focus system that tracks which UI element is currently selected and handles directional input to move focus.
|
|
66
66
|
|
|
67
|
+
**Engine-native support:** Unreal's UMG provides focus navigation through the CommonUI plugin with built-in gamepad navigation, focus flow, and input routing. Godot's Control nodes have built-in `focus_neighbor` properties for D-pad navigation. Unity requires explicit focus management through EventSystem or custom solutions. Use engine-native solutions where available, falling back to custom implementation only for complex navigation flows. The pattern below demonstrates manual focus management for reference.
|
|
68
|
+
|
|
67
69
|
```csharp
|
|
68
70
|
// FocusManager.cs — Controller-first UI focus management
|
|
69
71
|
// Attach to a root UI canvas; manages focus across all child elements
|
|
@@ -12,7 +12,7 @@ VR and AR development is fundamentally constrained by human physiology in ways t
|
|
|
12
12
|
|
|
13
13
|
VR has the most demanding performance requirements in real-time rendering because dropped frames directly cause motion sickness:
|
|
14
14
|
|
|
15
|
-
- **Quest 3 / Quest Pro**: 72 Hz or 90 Hz (90 Hz strongly recommended). Per-eye resolution: 2064x2208. Total pixels per frame: ~9.1 million (both eyes). GPU:
|
|
15
|
+
- **Quest 3 / Quest Pro**: 72 Hz or 90 Hz (90 Hz strongly recommended). Per-eye resolution: 2064x2208. Total pixels per frame: ~9.1 million (both eyes). GPU: Qualcomm Adreno 740 (Snapdragon XR2 Gen 2), roughly equivalent to a 2022 flagship phone GPU (Snapdragon 8 Gen 1 class). Significantly more capable than Quest 2's XR2 Gen 1 but still mobile-tier — expect 10-20% of a current desktop GPU's fill rate.
|
|
16
16
|
- **PlayStation VR2**: 90 Hz or 120 Hz. Per-eye resolution: 2000x2040. Total pixels: ~8.2 million. GPU: PS5 AMD RDNA2 — much more capable than Quest but still must hit 90+ Hz.
|
|
17
17
|
- **PC VR (Valve Index, Pimax)**: 90 Hz, 120 Hz, or 144 Hz. Per-eye resolution varies (Index: 1440x1600). GPU: Desktop RTX-class, but driving high refresh rates at high resolution is still demanding.
|
|
18
18
|
- **Apple Vision Pro**: 90 Hz with dynamic foveated rendering. Per-eye resolution: ~3660x3200. GPU: M2+R1 chip with dedicated real-time sensor processing.
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-game-ui
|
|
3
|
+
description: Failure modes and review passes specific to game UI specifications — HUD hierarchy, menu navigation, controller accessibility, settings coverage, FTUE effectiveness, state machine completeness, and platform shell compliance
|
|
4
|
+
topics: [game-dev, review, ui, hud, menus, controller, accessibility, ftue]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Review: Game UI Specification
|
|
8
|
+
|
|
9
|
+
A game UI specification must translate game mechanics into clear, navigable, accessible interfaces. It must be hierarchical (HUD elements prioritized by gameplay criticality), complete (every menu has a path back, no dead ends), accessible (every screen reachable with controller), configurable (settings cover graphics, audio, controls, accessibility), and platform-compliant (system UI respects console certification requirements). This review uses 7 passes targeting the specific ways game UI specifications fail.
|
|
10
|
+
|
|
11
|
+
Follows the review process defined in `review-methodology.md`.
|
|
12
|
+
|
|
13
|
+
## Summary
|
|
14
|
+
|
|
15
|
+
- **Pass 1 — HUD Information Hierarchy**: HUD elements are prioritized by gameplay criticality; health, ammo, and objective markers are visible at a glance; non-critical information is layered or hidden behind contextual triggers.
|
|
16
|
+
- **Pass 2 — Menu Completeness & Navigation**: Every menu has a path back, no dead ends exist, breadcrumb trail is clear, and the menu tree covers all player-facing systems without orphaned screens.
|
|
17
|
+
- **Pass 3 — Controller Accessibility**: Every screen is reachable with D-pad, focus order follows spatial layout, shoulder buttons switch tabs, and no interaction requires mouse/touch to complete.
|
|
18
|
+
- **Pass 4 — Settings Coverage**: Graphics, audio, controls, and accessibility settings are present with appropriate ranges; no critical setting is missing; defaults are sensible for target hardware.
|
|
19
|
+
- **Pass 5 — FTUE Effectiveness**: Tutorial teaches core mechanics without blocking progress; skip option is available; re-access to tutorial information exists; no mechanic requires undocumented player discovery.
|
|
20
|
+
- **Pass 6 — UI State Machine Completeness**: Every UI state has defined entry and exit conditions; no orphan states exist; all transitions are handled including error, disconnect, and loading states.
|
|
21
|
+
- **Pass 7 — Platform Shell Compliance**: System UI respects platform conventions (PS button, Xbox guide, Switch home); notification handling is specified; console certification UI requirements are addressed.
|
|
22
|
+
|
|
23
|
+
## Deep Guidance
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Pass 1: HUD Information Hierarchy
|
|
28
|
+
|
|
29
|
+
### What to Check
|
|
30
|
+
|
|
31
|
+
HUD elements are prioritized by gameplay criticality. Health, ammo, objective markers, and minimap are visible at a glance without eye movement from the center of the screen. Non-critical information (XP progress, currency, social notifications) is layered — hidden by default and surfaced contextually. The HUD does not present more than 5-7 simultaneous elements during active gameplay.
|
|
32
|
+
|
|
33
|
+
### Why This Matters
|
|
34
|
+
|
|
35
|
+
HUD overload causes players to miss critical gameplay information. When health, ammo, minimap, quest tracker, XP bar, currency, social notifications, buff timers, and cooldown indicators all compete for attention simultaneously, players die because they did not notice their health was low — the information was there, but buried in noise. Conversely, a HUD that hides too much forces players to open menus mid-combat. The hierarchy must match gameplay criticality.
|
|
36
|
+
|
|
37
|
+
### How to Check
|
|
38
|
+
|
|
39
|
+
1. List every HUD element and classify as critical (player dies without it), important (gameplay quality degrades without it), or contextual (useful but not time-sensitive)
|
|
40
|
+
2. Verify critical elements are visible without eye movement from screen center — use screen quadrant analysis
|
|
41
|
+
3. Check that contextual elements have defined show/hide triggers (e.g., XP bar appears for 3 seconds after earning XP, then fades)
|
|
42
|
+
4. Count simultaneous elements during peak gameplay — more than 7 concurrent elements indicates overload
|
|
43
|
+
5. Cross-reference with GDD mechanics: every mechanic with player-visible feedback must have a corresponding HUD element
|
|
44
|
+
6. Verify HUD scales with resolution — elements positioned by percentage, not fixed pixels
|
|
45
|
+
7. Check for HUD customization: can the player move, resize, or hide HUD elements?
|
|
46
|
+
|
|
47
|
+
### What a Finding Looks Like
|
|
48
|
+
|
|
49
|
+
- P0: "Health indicator is positioned in the bottom-left corner, 800+ pixels from screen center. In fast-paced combat, players must look away from the action to check health. Health must be near the reticle or use screen-edge vignette effects."
|
|
50
|
+
- P1: "14 HUD elements are visible simultaneously during combat. This exceeds cognitive load limits. Non-critical elements (XP bar, currency, social notifications) should be contextual, not persistent."
|
|
51
|
+
- P2: "HUD layout is specified in fixed pixel coordinates (health at 50,720). This will break at non-1080p resolutions. Use percentage-based or anchor-based positioning."
|
|
52
|
+
- P3: "HUD element for combo counter exists but no fade timing is specified. Define how long the counter persists after the last hit (recommended: 3-5 seconds)."
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Pass 2: Menu Completeness & Navigation
|
|
57
|
+
|
|
58
|
+
### What to Check
|
|
59
|
+
|
|
60
|
+
Every menu screen has a clear path back to the parent screen. No dead-end screens exist (screens with no exit path). The breadcrumb trail is visible at all times. The menu tree covers all player-facing systems (inventory, settings, social, store, leaderboards, achievements) without orphaned screens that are reachable only through obscure paths.
|
|
61
|
+
|
|
62
|
+
### Why This Matters
|
|
63
|
+
|
|
64
|
+
Incomplete menu trees strand players. A settings screen with no back button forces the player to restart the game. A crafting menu reachable only through a specific NPC but not from the inventory screen creates confusion. Players who cannot find a feature assume it does not exist — a hidden feature is a missing feature. Menu navigation should be exhaustively mapped, not discovered through play.
|
|
65
|
+
|
|
66
|
+
### How to Check
|
|
67
|
+
|
|
68
|
+
1. Build a complete menu tree from the UI spec — every screen, every transition, every button
|
|
69
|
+
2. Verify every screen has a back/escape path — no leaf node should be inescapable
|
|
70
|
+
3. Check for orphaned screens: screens not reachable from the main menu or hub screen through documented navigation
|
|
71
|
+
4. Verify breadcrumb visibility: does the player always know where they are in the menu hierarchy?
|
|
72
|
+
5. Check for consistent navigation patterns: does "B button" always mean "back"? Does "Start" always open the pause menu?
|
|
73
|
+
6. Verify that all player-facing systems appear in the menu tree: inventory, settings, social, store, map, journal, achievements, leaderboards, help
|
|
74
|
+
7. Check menu depth: menus deeper than 3 levels should be reconsidered — deep menus hide features
|
|
75
|
+
|
|
76
|
+
### What a Finding Looks Like
|
|
77
|
+
|
|
78
|
+
- P0: "The crafting submenu has no back button or escape path. Once entered through the NPC dialog, the only exit is closing the game. The screen is inescapable."
|
|
79
|
+
- P1: "Accessibility settings are nested under Gameplay > Advanced > Accessibility — 3 levels deep. Players who need these settings most are least likely to find them. Move to a top-level settings tab."
|
|
80
|
+
- P2: "Leaderboard screen is reachable from the post-match screen but not from the main menu. Players cannot browse leaderboards outside of match flow."
|
|
81
|
+
- P3: "Menu transition animations are not specified. Define whether transitions are instant, slide, or fade and their duration (recommended: 150-250ms)."
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Pass 3: Controller Accessibility
|
|
86
|
+
|
|
87
|
+
### What to Check
|
|
88
|
+
|
|
89
|
+
Every screen is fully navigable with a gamepad D-pad. Focus order follows spatial layout (left-to-right, top-to-bottom). Shoulder buttons switch between tabs. No interaction requires a mouse pointer, touch input, or keyboard to complete. Focus indicators are clearly visible with sufficient contrast.
|
|
90
|
+
|
|
91
|
+
### Why This Matters
|
|
92
|
+
|
|
93
|
+
Console games and PC games with controller support must be fully navigable without a mouse. A single screen that requires mouse input breaks the controller experience entirely — the player must put down their controller, find their mouse, click, and pick the controller back up. This is a console certification failure for PlayStation, Xbox, and Nintendo platforms. Even on PC, controller users expect full navigation support.
|
|
94
|
+
|
|
95
|
+
### How to Check
|
|
96
|
+
|
|
97
|
+
1. For every screen, verify that all interactive elements are reachable via D-pad navigation
|
|
98
|
+
2. Check focus order: does it follow spatial layout? (Left-to-right, top-to-bottom, matching visual hierarchy)
|
|
99
|
+
3. Verify tab switching: shoulder buttons (L1/R1 or LB/RB) switch between tabs in tabbed interfaces
|
|
100
|
+
4. Check that focus indicator is clearly visible: minimum 3px border or highlight with 4.5:1 contrast ratio
|
|
101
|
+
5. Verify that no interaction requires a cursor: dropdowns, sliders, text input, scrolling all work with D-pad
|
|
102
|
+
6. Check for focus traps: UI elements that capture focus and prevent D-pad navigation away (common with custom widgets)
|
|
103
|
+
7. Verify that wrapping behavior is consistent: does D-pad right on the last column wrap to the first column of the next row, or stop?
|
|
104
|
+
|
|
105
|
+
### What a Finding Looks Like
|
|
106
|
+
|
|
107
|
+
- P0: "The server browser uses a mouse-driven scrollable list with no D-pad navigation. Controller users cannot select a server. This is a console certification blocker."
|
|
108
|
+
- P0: "Text input for player name uses a mouse-clickable keyboard with no controller support. Console players cannot complete account creation."
|
|
109
|
+
- P1: "Focus order in the inventory grid goes left-to-right then jumps to a panel on the right, skipping the second row. Focus order does not match spatial layout."
|
|
110
|
+
- P2: "Focus indicator is a 1px white border on a light gray background. Contrast ratio is approximately 1.5:1 — below the 4.5:1 minimum for visibility."
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Pass 4: Settings Coverage
|
|
115
|
+
|
|
116
|
+
### What to Check
|
|
117
|
+
|
|
118
|
+
Settings screen covers all five minimum categories: graphics/video, audio, controls/input, gameplay, and accessibility. Each category has appropriate settings with sensible ranges. No critical setting is missing (resolution, volume, subtitle toggle, colorblind mode, control remapping). Default values are appropriate for target hardware.
|
|
119
|
+
|
|
120
|
+
### Why This Matters
|
|
121
|
+
|
|
122
|
+
Missing settings force players to accept defaults that may not suit their hardware, preferences, or needs. A game without a resolution setting alienates players with non-standard monitors. A game without subtitle options excludes deaf and hard-of-hearing players. A game without control remapping fails accessibility standards (and Xbox/PS certification). Settings are not optional features — they are baseline requirements.
|
|
123
|
+
|
|
124
|
+
### How to Check
|
|
125
|
+
|
|
126
|
+
1. Verify graphics settings: resolution, display mode (fullscreen/windowed/borderless), frame rate cap, V-sync, quality presets, individual quality settings (textures, shadows, anti-aliasing, draw distance)
|
|
127
|
+
2. Verify audio settings: master volume, music volume, SFX volume, voice volume, subtitle toggle, subtitle size, audio output selection
|
|
128
|
+
3. Verify control settings: control remapping, sensitivity sliders (camera, aim), invert Y-axis, vibration toggle, dead zone adjustment
|
|
129
|
+
4. Verify accessibility settings: colorblind mode (protanopia, deuteranopia, tritanopia), font scaling, screen reader support, reduced motion, high contrast mode
|
|
130
|
+
5. Verify gameplay settings: difficulty selection (if applicable), HUD customization, language selection, camera distance
|
|
131
|
+
6. Check setting ranges: sensitivity sliders should have wide enough ranges (not just 1-10 but 0.1-5.0 or similar), resolution should include common values
|
|
132
|
+
7. Verify that changed settings are previewed in real-time where possible (audio slider plays a sample, graphics changes show before confirm)
|
|
133
|
+
|
|
134
|
+
### What a Finding Looks Like
|
|
135
|
+
|
|
136
|
+
- P0: "No control remapping exists. Players who cannot use the default layout due to physical disabilities are locked out. This is an accessibility requirement and a platform certification blocker."
|
|
137
|
+
- P0: "No subtitle toggle exists. Deaf and hard-of-hearing players cannot follow narrative content. This is an accessibility baseline."
|
|
138
|
+
- P1: "Colorblind mode is listed as 'colorblind: on/off' without specifying which type. Protanopia, deuteranopia, and tritanopia require different palette adjustments — a single toggle is insufficient."
|
|
139
|
+
- P2: "Graphics quality has 3 presets (Low, Medium, High) but no individual settings. Players with specific hardware constraints cannot optimize (e.g., low shadows but high textures)."
|
|
140
|
+
- P3: "Audio settings do not include a 'dialogue boost' option. While not required, this is a common accessibility feature that improves clarity for hearing-impaired players."
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Pass 5: FTUE Effectiveness
|
|
145
|
+
|
|
146
|
+
### What to Check
|
|
147
|
+
|
|
148
|
+
The First Time User Experience (FTUE) teaches all core loop mechanics without blocking player progress. A skip option is available for returning players or replays. Tutorial information is re-accessible after completion (help menu, practice mode, or tooltip system). No core mechanic requires the player to discover it without guidance.
|
|
149
|
+
|
|
150
|
+
### Why This Matters
|
|
151
|
+
|
|
152
|
+
A bad FTUE either overwhelms (teaching every system in the first 10 minutes) or under-teaches (leaving players to discover critical mechanics by accident). Both cause churn: overwhelmed players quit because the game feels complex, under-taught players quit because they feel lost. The FTUE must pace instruction to match the player's cognitive load, teach mechanics in context (during gameplay, not via text walls), and provide an escape hatch for experienced players who do not need hand-holding.
|
|
153
|
+
|
|
154
|
+
### How to Check
|
|
155
|
+
|
|
156
|
+
1. List every core loop mechanic — movement, combat, inventory, crafting, social, economy
|
|
157
|
+
2. Verify each mechanic has a tutorial moment: in-context prompt, guided task, or practice scenario
|
|
158
|
+
3. Check tutorial pacing: no more than 2-3 new mechanics introduced per tutorial segment
|
|
159
|
+
4. Verify skip option: can the player skip the entire tutorial? Individual tutorial steps? Is the skip accessible from the first prompt?
|
|
160
|
+
5. Check for re-access: after completing the tutorial, can the player re-read instructions? Is there a help menu, codex, or practice mode?
|
|
161
|
+
6. Verify that the tutorial does not block progress: can the player proceed if they fail a tutorial challenge? Is there a retry with hints?
|
|
162
|
+
7. Check for advanced mechanics: are they taught later in gameplay (progressive disclosure) or dumped in the opening tutorial?
|
|
163
|
+
|
|
164
|
+
### What a Finding Looks Like
|
|
165
|
+
|
|
166
|
+
- P0: "Combat tutorial requires the player to defeat a training dummy to proceed, but no hint system exists if the player fails 3+ times. A player who cannot complete the tutorial is permanently stuck."
|
|
167
|
+
- P1: "Crafting system is never taught. The player must discover it by opening the inventory and finding a 'Craft' tab. 60% of players may never discover this core system."
|
|
168
|
+
- P1: "All 8 core mechanics are taught in a single 25-minute unskippable tutorial. Player drop-off during tutorials longer than 10 minutes exceeds 40%."
|
|
169
|
+
- P2: "Tutorial is skippable but no help menu or re-access exists. A player who skips the tutorial and later needs guidance has no recourse."
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Pass 6: UI State Machine Completeness
|
|
174
|
+
|
|
175
|
+
### What to Check
|
|
176
|
+
|
|
177
|
+
Every UI state has defined entry conditions, exit conditions, and transitions to other states. No orphan states exist (states with no entry path). No terminal states exist except intentional ones (quit game). Error states, disconnect states, and loading states are explicitly handled. State transitions are deterministic — no ambiguous transitions where two states compete.
|
|
178
|
+
|
|
179
|
+
### Why This Matters
|
|
180
|
+
|
|
181
|
+
Incomplete UI state machines are the primary source of UI softlocks — states the player enters but cannot exit. When the game shows a loading screen but the load fails silently, the player is stuck forever. When a disconnect occurs during a menu transition, the UI may be in an undefined state. When a modal dialog opens on top of another modal, focus may be lost. Every state transition must be mapped, including the error and edge-case transitions that are easy to forget.
|
|
182
|
+
|
|
183
|
+
### How to Check
|
|
184
|
+
|
|
185
|
+
1. List every UI state: main menu, loading, in-game HUD, pause menu, inventory, settings, store, matchmaking, post-match, error dialog, disconnect overlay
|
|
186
|
+
2. For each state, define: what triggers entry? What triggers exit? What are all possible transitions?
|
|
187
|
+
3. Check for orphan states: states that exist in the design but have no defined entry path
|
|
188
|
+
4. Check for softlock potential: states that can be entered but have no exit transition (especially error states)
|
|
189
|
+
5. Verify loading states: every loading screen has a timeout and error fallback (not infinite spin)
|
|
190
|
+
6. Check disconnect handling: every state has a defined behavior when network connectivity is lost
|
|
191
|
+
7. Verify modal stacking: what happens when a system notification triggers while a game dialog is open? Is there a priority queue?
|
|
192
|
+
|
|
193
|
+
### What a Finding Looks Like
|
|
194
|
+
|
|
195
|
+
- P0: "Loading screen has no timeout. If asset loading fails silently, the player is stuck on the loading screen indefinitely with no error message and no exit path."
|
|
196
|
+
- P0: "Matchmaking state has no cancel button. Once matchmaking begins, the player cannot return to the main menu without force-quitting the application."
|
|
197
|
+
- P1: "Disconnect during inventory management is not specified. If the server connection drops while the player has the inventory open, the UI state is undefined — does it close the inventory? Show an error? Return to main menu?"
|
|
198
|
+
- P2: "No modal priority system is defined. If a system notification, a party invite, and a trade request arrive simultaneously, the stacking behavior is unspecified."
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Pass 7: Platform Shell Compliance
|
|
203
|
+
|
|
204
|
+
### What to Check
|
|
205
|
+
|
|
206
|
+
System UI respects platform conventions for PlayStation (PS button returns to system menu), Xbox (Guide button returns to dashboard), and Nintendo Switch (Home button returns to system). Notification handling is specified — game does not block or interfere with system notifications. Console certification UI requirements (save icon display, mandatory legal notices, suspend/resume behavior) are addressed.
|
|
207
|
+
|
|
208
|
+
### Why This Matters
|
|
209
|
+
|
|
210
|
+
Platform shell compliance is a hard certification requirement. A game that does not properly handle the PS button, fails to display the mandated save icon, or interferes with system notifications will fail certification and cannot ship on that platform. These requirements are non-negotiable and documented in each platform's Technical Requirements Checklist (TRC for PlayStation, Xbox Requirements for Xbox, Lotcheck for Nintendo). Failing certification delays launch by weeks to months.
|
|
211
|
+
|
|
212
|
+
### How to Check
|
|
213
|
+
|
|
214
|
+
1. Verify system button handling: PS button, Xbox Guide button, Switch Home button all behave per platform spec
|
|
215
|
+
2. Check suspend/resume: game correctly saves state and resumes when the player leaves and returns
|
|
216
|
+
3. Verify save icon display: a save icon is displayed whenever the game writes to persistent storage (platform requirement)
|
|
217
|
+
4. Check mandatory legal notices: EULA, privacy policy, and age rating screens appear per platform requirements
|
|
218
|
+
5. Verify notification handling: system notifications (friend online, message received, download complete) display correctly over the game UI
|
|
219
|
+
6. Check for account switching: what happens if the user switches accounts mid-game? (Platform-specific requirements)
|
|
220
|
+
7. Verify that game UI does not render in platform-reserved screen areas (safe zone compliance)
|
|
221
|
+
|
|
222
|
+
### What a Finding Looks Like
|
|
223
|
+
|
|
224
|
+
- P0: "No suspend/resume handling is specified. On PS5, pressing the PS button and returning to the game may result in a broken state. Suspend/resume is a mandatory TRC requirement."
|
|
225
|
+
- P0: "Save icon display is not specified. PlayStation TRC requires a visible save indicator whenever writing to storage. Failure is an automatic certification rejection."
|
|
226
|
+
- P1: "System notification handling is not addressed. If a friend-request notification appears during a full-screen cinematic, the behavior is undefined. Specify whether the game pauses, overlays, or queues."
|
|
227
|
+
- P2: "Safe zone compliance is not documented. UI elements placed within 5% of screen edges may be clipped on some displays. Platform safe zone guidelines require all critical UI within the 90% safe area."
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Finding Template
|
|
232
|
+
|
|
233
|
+
Use this template for all game UI review findings:
|
|
234
|
+
|
|
235
|
+
```markdown
|
|
236
|
+
### Finding: [Short description of the issue]
|
|
237
|
+
|
|
238
|
+
**Pass:** [Pass number] — [Pass name]
|
|
239
|
+
**Priority:** P0 | P1 | P2 | P3
|
|
240
|
+
**Location:** [UI spec section and screen/element]
|
|
241
|
+
|
|
242
|
+
**Issue:** [Specific description of what is wrong, with references to the UI spec text.
|
|
243
|
+
Avoid subjective language — state the structural problem.]
|
|
244
|
+
|
|
245
|
+
**Evidence:** [Quote or reference the specific UI spec content that demonstrates the issue.
|
|
246
|
+
For navigation findings, show the broken path. For accessibility findings, show the
|
|
247
|
+
non-compliant element. For state machine findings, show the missing transition.]
|
|
248
|
+
|
|
249
|
+
**Impact:** [What goes wrong during implementation or certification if this is not fixed.
|
|
250
|
+
Be specific: "controller users cannot reach this screen" or "certification will fail on
|
|
251
|
+
PlayStation" or "players will softlock on this screen."]
|
|
252
|
+
|
|
253
|
+
**Recommendation:** [Concrete action to resolve the finding. Not "improve navigation" but
|
|
254
|
+
"add D-pad focus support to the server browser list — each row is a focusable element,
|
|
255
|
+
D-pad up/down moves between rows, A/X button selects."]
|
|
256
|
+
|
|
257
|
+
**Trace:** [Which downstream artifacts, screens, or certification requirements are affected]
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Example Finding
|
|
261
|
+
|
|
262
|
+
```markdown
|
|
263
|
+
### Finding: Server browser has no controller navigation — console certification blocker
|
|
264
|
+
|
|
265
|
+
**Pass:** 3 — Controller Accessibility
|
|
266
|
+
**Priority:** P0
|
|
267
|
+
**Location:** UI Spec Section 5.2 "Server Browser"
|
|
268
|
+
|
|
269
|
+
**Issue:** The server browser screen uses a mouse-driven scrollable list with
|
|
270
|
+
hover-to-select interaction. No D-pad navigation, focus indicators, or
|
|
271
|
+
controller bindings are specified. Controller users cannot select a server,
|
|
272
|
+
making the multiplayer flow inaccessible on gamepad.
|
|
273
|
+
|
|
274
|
+
**Evidence:** UI Spec Section 5.2: "Server list displays available servers in a
|
|
275
|
+
scrollable table. Player clicks a row to select, double-clicks to join."
|
|
276
|
+
No controller input is mentioned. No focus indicator design is shown.
|
|
277
|
+
|
|
278
|
+
**Impact:** Console certification will fail — every screen must be fully navigable
|
|
279
|
+
with a gamepad. PC controller users cannot access multiplayer. This blocks the
|
|
280
|
+
entire online flow for controller input.
|
|
281
|
+
|
|
282
|
+
**Recommendation:** Add D-pad navigation to the server list:
|
|
283
|
+
- Each server row is a focusable element
|
|
284
|
+
- D-pad up/down moves focus between rows
|
|
285
|
+
- A button (Xbox) / X button (PS) selects the focused row
|
|
286
|
+
- X button (Xbox) / Square button (PS) opens server details
|
|
287
|
+
- Focus indicator: 3px highlight border with team accent color
|
|
288
|
+
- L1/R1 switch between server list tabs (All, Favorites, Recent)
|
|
289
|
+
|
|
290
|
+
**Trace:** UI Spec 5.2 → blocks multiplayer-flow.md controller path,
|
|
291
|
+
console-certification.md TRC 3.12 (controller navigation), QA test plan
|
|
292
|
+
controller coverage
|
|
293
|
+
```
|
|
@@ -7,7 +7,7 @@ order: 715
|
|
|
7
7
|
dependencies: [system-architecture]
|
|
8
8
|
outputs: [docs/netcode-spec.md]
|
|
9
9
|
conditional: "if-needed"
|
|
10
|
-
reads: [tech-stack, performance-budgets]
|
|
10
|
+
reads: [tech-stack, performance-budgets, game-design-document]
|
|
11
11
|
knowledge-base: [game-networking]
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -7,7 +7,7 @@ order: 716
|
|
|
7
7
|
dependencies: [netcode-spec]
|
|
8
8
|
outputs: [docs/reviews/architecture-review-netcode.md]
|
|
9
9
|
conditional: "if-needed"
|
|
10
|
-
reads: []
|
|
10
|
+
reads: [performance-budgets, system-architecture, game-design-document]
|
|
11
11
|
knowledge-base: [review-netcode, review-step-template, multi-model-review-dispatch]
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -54,8 +54,8 @@ Skip when: netcode-spec is skipped (i.e., `multiplayerMode` is `none` or
|
|
|
54
54
|
|
|
55
55
|
## Methodology Scaling
|
|
56
56
|
- **deep**: All 7 review passes (Latency Tolerance, Bandwidth Compliance,
|
|
57
|
-
Cheat Surface Audit, Determinism Verification,
|
|
58
|
-
|
|
57
|
+
Cheat Surface Audit, Determinism Verification, Disconnect/Reconnect Handling,
|
|
58
|
+
Matchmaking Fairness Assessment, Bandwidth Spike Resilience). Multi-model
|
|
59
59
|
review dispatched to Codex and Gemini if available, with graceful fallback
|
|
60
60
|
to Claude-only enhanced review.
|
|
61
61
|
- **mvp**: Three passes — Latency Tolerance, Bandwidth Compliance, and Cheat
|
|
@@ -22,7 +22,7 @@ the system, its allocation, rationale, measurement method, and alert threshold
|
|
|
22
22
|
so that performance regressions are caught automatically.
|
|
23
23
|
|
|
24
24
|
## Inputs
|
|
25
|
-
- docs/game-design
|
|
25
|
+
- docs/game-design.md (required) — core systems, target platforms,
|
|
26
26
|
visual fidelity targets, multiplayer scope
|
|
27
27
|
- docs/tech-stack.md (required) — engine, renderer, target hardware, platform
|
|
28
28
|
SDK constraints
|
|
@@ -38,6 +38,7 @@ narrative detail are covered by separate downstream steps.
|
|
|
38
38
|
- (deep) Progression systems define XP/level curves or equivalent with explicit formulas
|
|
39
39
|
- (deep) Achievements/trophies schema is present with unlock conditions
|
|
40
40
|
- (deep) Competitive analysis references specific titles and structural differentiation
|
|
41
|
+
- (deep) Feature priority matrix included (must-have, should-have, nice-to-have per milestone) and top-5 risk register with likelihood, impact, and mitigation strategies
|
|
41
42
|
|
|
42
43
|
## Methodology Scaling
|
|
43
44
|
- **deep**: Full GDD bible. Design pillars with exclusion rationale, multi-tier
|
|
@@ -7,7 +7,7 @@ order: 961
|
|
|
7
7
|
dependencies: [game-design-document, user-stories]
|
|
8
8
|
outputs: [docs/playtest-plan.md]
|
|
9
9
|
conditional: null
|
|
10
|
-
reads: []
|
|
10
|
+
reads: [analytics-telemetry]
|
|
11
11
|
knowledge-base: [game-testing-strategy, game-milestone-definitions]
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -47,6 +47,7 @@ design decisions rather than anecdotal impressions.
|
|
|
47
47
|
- (deep) Playtest environment specification: hardware requirements, network conditions to simulate, build distribution method (Steam playtest, TestFlight, side-loading), telemetry collection during sessions
|
|
48
48
|
- (deep) Playtest-to-design feedback loop: how findings are triaged (critical/major/minor), who owns resolution, turnaround time targets between playtest and design response
|
|
49
49
|
- (deep) Accessibility playtest sessions: dedicated sessions with players using assistive technologies to validate accessibility features from game-accessibility spec
|
|
50
|
+
- (deep) Telemetry integration specified: which analytics events are collected during playtest sessions, how automated metrics complement observer notes
|
|
50
51
|
|
|
51
52
|
## Methodology Scaling
|
|
52
53
|
- **deep**: Full playtest plan covering all three tiers with detailed schedules,
|
|
@@ -28,7 +28,7 @@ failures, performance regressions, and visual incoherence.
|
|
|
28
28
|
## Inputs
|
|
29
29
|
- docs/game-design.md (required) — art style direction, world setting, character roster, environment types
|
|
30
30
|
- docs/performance-budgets.md (required) — polygon budgets, texture memory budgets, draw call limits per platform
|
|
31
|
-
- docs/content-structure
|
|
31
|
+
- docs/content-structure/ (required) — content organization, asset directory structure, naming taxonomy
|
|
32
32
|
- docs/plan.md (required) — target platforms informing quality tiers and LOD requirements
|
|
33
33
|
|
|
34
34
|
## Expected Outputs
|
|
@@ -36,7 +36,7 @@ failures, performance regressions, and visual incoherence.
|
|
|
36
36
|
DCC pipeline, LOD strategy, Git LFS mapping, and collision layer definitions
|
|
37
37
|
|
|
38
38
|
## Quality Criteria
|
|
39
|
-
- (mvp) Art style pillars defined with
|
|
39
|
+
- (mvp) Art style pillars defined with concrete specifications: color palette as hex/RGB ranges, character proportion ratios, material property ranges (roughness, metallic), and reference images or "do/don't" visual descriptions per asset category
|
|
40
40
|
- (mvp) Per-type asset specs documented: 3D models (poly budget, texture resolution, material slots), 2D sprites (resolution, atlas packing, animation frames), VFX (particle count, draw call budget, shader complexity), animation (bone count, clip length, blend tree structure)
|
|
41
41
|
- (mvp) Naming conventions defined per asset type following content-structure-design taxonomy
|
|
42
42
|
- (mvp) DCC pipeline documented: source tool → export format → engine import → validation
|
|
@@ -36,7 +36,7 @@ update mode.
|
|
|
36
36
|
## Inputs
|
|
37
37
|
- docs/game-design.md (required) — mechanics, core loop, world setting, emotional tone informing audio direction
|
|
38
38
|
- docs/performance-budgets.md (required) — audio memory budget, CPU budget for audio processing, streaming constraints
|
|
39
|
-
- docs/content-structure
|
|
39
|
+
- docs/content-structure/ (required) — audio asset directory structure, naming taxonomy
|
|
40
40
|
- docs/plan.md (required) — target platforms informing loudness targets and format requirements
|
|
41
41
|
- docs/narrative-bible.md (optional, forward-read) — character roster, dialogue structure, VO volume and language requirements
|
|
42
42
|
|
|
@@ -56,6 +56,7 @@ update mode.
|
|
|
56
56
|
- (deep) Audio format matrix per platform: codec (Vorbis, Opus, ADPCM, platform-native), quality settings, streaming chunk size
|
|
57
57
|
- (deep) Dynamic range management: compressor/limiter settings per bus, ducking rules (VO ducks music, gameplay SFX ducks ambient)
|
|
58
58
|
- (deep) Accessibility audio: audio descriptions, mono downmix option, visual indicators for critical audio cues
|
|
59
|
+
- (deep) SFX variation strategy documented: minimum variant count per sound event category, randomization rules (no-repeat, round-robin, weighted random), pitch and volume variation ranges
|
|
59
60
|
|
|
60
61
|
## Methodology Scaling
|
|
61
62
|
- **deep**: Full audio design with style guide, complete SFX taxonomy with
|
|
@@ -104,6 +104,7 @@ loop, and mechanics catalog.
|
|
|
104
104
|
- (deep) Replayability analysis: what drives repeat engagement (procedural variety, optional objectives, difficulty modes)
|
|
105
105
|
- (deep) Content pipeline documented: authoring workflow from design to engine-ready format
|
|
106
106
|
- (deep) Pacing analysis with annotated intensity curves showing moment-to-moment and session-level rhythm
|
|
107
|
+
- (mvp) Type-specific deliverable produced matching the identified content structure trait: level-designs.md (discrete), world-regions.md (open-world), generation-rulesets.md (procedural), escalation-bands.md (endless), or mission-templates.md (mission-based)
|
|
107
108
|
|
|
108
109
|
## Methodology Scaling
|
|
109
110
|
- **deep**: Full content structure specification with all trait-specific
|
|
@@ -66,6 +66,7 @@ content (no spending decisions) do not require a full economy design.
|
|
|
66
66
|
- (deep) Legal compliance checklist per target market: probability disclosure requirements, age-gating, spending limits, loot box classification
|
|
67
67
|
- (deep) Economy simulation spreadsheet or formula reference with tunable parameters for balance testing
|
|
68
68
|
- (deep) Seasonal/live-service economy plan: event currencies, battle pass reward tracks, limited-time offers, FOMO management
|
|
69
|
+
- (mvp) If the economy involves online transactions: server-authoritative transaction model specified — client cannot dictate transaction outcomes
|
|
69
70
|
|
|
70
71
|
## Methodology Scaling
|
|
71
72
|
- **deep**: Full economy design with multi-currency architecture, faucet/sink
|
|
@@ -7,7 +7,7 @@ order: 869
|
|
|
7
7
|
dependencies: [economy-design]
|
|
8
8
|
outputs: [docs/reviews/specification-review-economy.md]
|
|
9
9
|
conditional: "if-needed"
|
|
10
|
-
reads: []
|
|
10
|
+
reads: [game-design-document]
|
|
11
11
|
knowledge-base: [review-game-economy, review-step-template, multi-model-review-dispatch]
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -64,7 +64,7 @@ No economy design means no economy review.
|
|
|
64
64
|
## Methodology Scaling
|
|
65
65
|
- **deep**: All 7 review passes (Inflation Trajectory, Exploit Vectors,
|
|
66
66
|
Ethical Monetization, Pay-to-Win Detection, Legal Compliance,
|
|
67
|
-
|
|
67
|
+
Earn Rate vs Engagement Projection, Sink Effectiveness Analysis).
|
|
68
68
|
Multi-model review dispatched to Codex and Gemini if available, with
|
|
69
69
|
graceful fallback to Claude-only enhanced review.
|
|
70
70
|
- **mvp**: Three passes — Inflation Trajectory, Exploit Vectors, and Ethical
|
|
@@ -7,8 +7,8 @@ order: 864
|
|
|
7
7
|
dependencies: [game-ui-spec]
|
|
8
8
|
outputs: [docs/reviews/specification-review-game-ui.md]
|
|
9
9
|
conditional: null
|
|
10
|
-
reads: []
|
|
11
|
-
knowledge-base: [review-game-
|
|
10
|
+
reads: [game-design-document, game-accessibility, input-controls-spec]
|
|
11
|
+
knowledge-base: [review-game-ui, game-accessibility, review-step-template, multi-model-review-dispatch]
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
## Purpose
|
|
@@ -56,11 +56,11 @@ independent review validation.
|
|
|
56
56
|
dispatched if available.
|
|
57
57
|
- **mvp**: HUD coverage and controller navigation pass only.
|
|
58
58
|
- **custom:depth(1-5)**:
|
|
59
|
-
- Depth 1: HUD-to-mechanic coverage and
|
|
60
|
-
- Depth 2: add settings completeness and accessibility compliance
|
|
61
|
-
- Depth 3: add FTUE effectiveness and UI state machine
|
|
62
|
-
- Depth 4:
|
|
63
|
-
- Depth 5:
|
|
59
|
+
- Depth 1: two passes — HUD-to-mechanic coverage and controller navigation reachability.
|
|
60
|
+
- Depth 2: four passes — add settings completeness and accessibility compliance.
|
|
61
|
+
- Depth 3: six passes — add FTUE effectiveness and UI state machine completeness.
|
|
62
|
+
- Depth 4: all 7 passes (add platform shell compliance) + one external model (if CLI available).
|
|
63
|
+
- Depth 5: all 7 passes + multi-model review with reconciliation.
|
|
64
64
|
|
|
65
65
|
## Mode Detection
|
|
66
66
|
Re-review mode if previous review exists. If multi-model review artifacts exist
|
|
@@ -54,7 +54,7 @@ authoritative state (no client save) do not need a save system specification.
|
|
|
54
54
|
|
|
55
55
|
## Inputs
|
|
56
56
|
- docs/system-architecture.md (required) — data flow, storage layer, serialization strategy, platform abstraction
|
|
57
|
-
- docs/domain-
|
|
57
|
+
- docs/domain-models/ (required) — entity definitions, relationships, and state that must be persisted
|
|
58
58
|
- docs/plan.md (required) — target platforms informing cloud save APIs and storage quotas
|
|
59
59
|
- docs/economy-design.md (optional, forward-read) — currency balances, inventory, transaction history requiring tamper-resistant persistence
|
|
60
60
|
- docs/narrative-bible.md (optional, forward-read) — narrative state, branching flags, relationship values, quest progress requiring persistence
|