# 11 — Achievements, Progression & Meta Systems (Systems 102-103)

**Category Purpose:** These 2 systems handle meta-progression — progress statistics tracking across sessions and the achievement/unlock system with platform integration.

| # | System | Asset Type | Role |
|---|--------|-----------|------|
| 102 | `BPC_ProgressStatTracker` | Component | Progress stats; total playtime, collectibles, achievements |
| 103 | `SS_AchievementSystem` | Subsystem | Achievement subsystem; unlock, notify, platform integration |

**102 BPC_ProgressStatTracker:** Tracks cumulative stats across play sessions: total playtime, collectibles found, enemies killed, deaths, items crafted, documents read, endings seen. Persists via `I_Persistable` for long-term tracking.

**103 SS_AchievementSystem:** GameInstanceSubsystem that manages achievement unlocks. Listens to gameplay events (enemy killed, item found, chapter completed) and unlocks achievements when conditions met. Shows notification toast on unlock. Integrates with platform achievement APIs (Steam, PlayStation, Xbox).

---

# 12 — Settings, Accessibility, Haptics, Render Pipeline & Platform Systems (Systems 104-105, 148-149)

| # | System | Asset Type | Role |
|---|--------|-----------|------|
| 104 | `BPC_AccessibilitySettings` | Component | Accessibility; subtitles, colorblind, controller remap |
| 105 | `SS_SettingsSystem` | Subsystem | Settings subsystem; persistent settings, apply, reset |
| 148 | `BPC_HapticsController` | Component | Haptics controller; GameplayTag-driven force feedback, DualSense triggers, heartbeat pulse |
| 149 | `BPC_RenderPipelineManager` | Component | Render pipeline manager; quality presets, per-platform GI/shadows/upscaling, PlanarCapture aware |

**104 BPC_AccessibilitySettings:** Manages accessibility features: subtitle toggle/size, colorblind mode selection (protanopia/deuteranopia/tritanopia), controller remapping, difficulty presets, hold-to-confirm toggle, camera shake reduction. Settings persisted via `SS_SettingsSystem`.

**105 SS_SettingsSystem:** GameInstanceSubsystem for all persistent settings. Loads defaults on init, saves on change, supports reset-to-default. Settings categories: Audio, Video, Controls, Gameplay, Accessibility. Coordinates with `SS_AudioManager` for volume, `SS_EnhancedInputManager` for key rebinding.

**148 BPC_HapticsController:** ActorComponent attached to the Player Controller. Central abstraction for all controller vibration and force feedback. Systems trigger haptics by GameplayTag (e.g., `Haptic.Damage.Heavy`) — never calling raw UE5 `Play Force Feedback` nodes. Handles platform detection (Xbox rumble, PS5 DualSense adaptive triggers, PC generic gamepad), respects accessibility toggle, manages effect priority/conflict resolution, and drives the continuous heartbeat pulse from `BPC_StateManager.GetCurrentHeartRate()`. Uses `DA_HapticProfile` Data Assets for all effect definitions.

**149 BPC_RenderPipelineManager:** ActorComponent attached to the Player Controller. Central authority for UE5 render pipeline configuration. Reads `DA_RenderPipelineProfile` Data Assets to determine the appropriate rendering method (Lumen vs Baked Lightmass), shadow system (VSM vs CSM), upscaler (DLSS/FSR/TSR/PSSR), and mesh strategy (Nanite vs LOD) for the current platform and quality preset. Applies settings via UE5 console variables, coordinates with `BPC_PerformanceScaler` for runtime quality tier adjustments, and broadcasts pipeline changes so the Planar Capture system can adjust its quality budget. Handles reload-required detection for destructive pipeline changes (GI method, shadow method, Nanite toggle).

---

# 13 — Polish: Tutorial, Loading, Credits & Debug Systems (Systems 106-114)

| # | System | Asset Type | Role |
|---|--------|-----------|------|
| 106 | `BPC_AnalyticsTracker` | Component | Analytics; event tracking, session metrics, telemetry |
| 107 | `BPC_DevCheatManager` | Component | Developer cheats; god mode, noclip, give item, teleport |
| 108 | `BPC_ErrorHandler` | Component | Error handler; crash logging, error display, recovery |
| 109 | `BPC_FPSCounter` | Component | FPS counter display; min/max/avg tracking |
| 110 | `BPC_LoadingScreen` | Component | Loading screen; progress bar, tips, background |
| 111 | `BPC_TutorialSystem` | Component | Tutorial system; contextual prompts, progression |
| 112 | `WBP_CreditsScreen` | Widget | Credits screen; scroll, skip, post-credit scene trigger |
| 113 | `WBP_DebugMenu` | Widget | Debug menu; state viewer, log, performance, cheats |
| 114 | `WBP_SplashScreen` | Widget | Splash screen; studio logo, engine logo, skip |

**106 BPC_AnalyticsTracker:** Records gameplay events for telemetry: level starts/completes, deaths, item pickups, dialogue choices, playtime. Configurable event filtering. Stripped from shipping builds.

**107 BPC_DevCheatManager:** Developer tools: god mode, noclip, infinite ammo, give item by tag, teleport to cursor, toggle HUD, slow motion. Only available in development builds.

**108 BPC_ErrorHandler:** Global error handling: catches blueprint errors, logs to file, displays error toast (dev builds only). Graceful recovery from non-fatal errors.

**109 BPC_FPSCounter:** Simple FPS display overlay with min/max/avg tracking. Toggle via debug menu or console command.

**110 BPC_LoadingScreen:** Loading screen widget with progress bar, gameplay tips, background art. Manages level streaming progress display.

**111 BPC_TutorialSystem:** Context-sensitive tutorial prompts. Triggered by gameplay events (first combat, first hide, first puzzle). Tracks which tutorials the player has seen. Supports dismiss/snooze.

**112-114 Widgets:** Credits screen with scroll and post-credit scene trigger. Debug menu for development. Splash screen with studio/engine logos.

---

# 14 — Data Assets (Systems 115-127, 129, 134-135)

**Category Purpose:** These 16 systems define all Data Asset types used across the framework. Data Assets are the primary configuration mechanism — all content, rules, and settings live in these assets, never hardcoded in Blueprints.

| # | Data Asset | Configures |
|---|-----------|-----------|
| 115 | `DA_AdaptationRule` | Difficulty adaptation rules (metric thresholds, responses) |
| 116 | `DA_AtmosphereProfile` | Atmosphere: audio ambience, lighting, fog, post-process per mood |
| 117 | `DA_BehaviourVariant` | AI behavior variant: attack patterns, patrol style, aggression |
| 118 | `DA_DataAssetArchitecture` | Overview document of all Data Asset types |
| 119 | `DA_EncounterData` | Encounter definitions: enemy groups, spawn rules, difficulty tier |
| 120 | `DA_EquipmentConfig` | Equipment/weapon stats: damage, fire rate, magazine, recoil |
| 121 | `DA_HapticProfile` | Haptic/force feedback patterns for controller |
| 122 | `DA_InteractionData` | Interaction definitions: prompt text, duration, icon, conditions |
| 123 | `DA_ObjectiveData` | Objective/quest: description, prerequisites, rewards, branching |
| 124 | `DA_PuzzleData` | Puzzle definitions: solution, steps, hints, rewards |
| 125 | `DA_RareEvent` | Rare event: weight, conditions, effects, cooldown |
| 126 | `DA_RoomMutation` | Room mutation: layout change, object swap, lighting change |
| 127 | `DA_ScareEvent` | Scare event: type, anticipation duration, payoff, recovery |
| 129 | `DA_InputMappingProfile` | Input mappings per platform (PC, Xbox, PS5) |
| 134 | `DA_AudioSettings` | Audio bus configs, volume defaults, ducking, pool limits |
| 135 | `DA_RoomAcousticPreset` | Room acoustics: 7 presets (Outdoor, SmallRoom, Cave, etc.) |

**Pattern:** All Data Assets derive from `UPrimaryDataAsset`. They are pure data containers — no runtime logic. Designers edit these in the Content Browser; systems read them at runtime. This is the "No Hardcoded Names" principle in practice.

---

# 15 — Enhanced Input System (System 128)

| # | System | Asset Type | Role |
|---|--------|-----------|------|
| 128 | `SS_EnhancedInputManager` | Subsystem | Input manager; context switching, rebinding, platform profiles |

**128 SS_EnhancedInputManager:** The sole authority for all input management. Handles Input Mapping Context push/pop with priority-based context switching. Coordinates input mode (game-only vs UI-only) with `SS_UIManager`. Manages key rebinding via `DA_InputMappingProfile`. Platform-specific bindings (PC keyboard/mouse, Xbox controller, PS5 controller). Gameplay systems query input state through this subsystem — never through raw Enhanced Input calls.

**Context Priority Ladder:** Default(0) < Hiding(5) < WristwatchUI(10) < Inspection(20) < UI(100). Higher priority contexts override lower ones — UI blocks gameplay input.

---

# 16 — State Management (Systems 130-131)

| # | System | Asset Type | Role |
|---|--------|-----------|------|
| 130 | `BPC_StateManager` | Component | Central state authority; action gating, overlay, vital signs |
| 131 | `DA_StateGatingTable` | Data Asset | All state gating rules (37 action rules); designer-editable |

**130 BPC_StateManager:** The **single source of truth** for player capability. Manages 42 exclusive action states and 18 overlay states. All systems query `IsActionPermitted(Tag)` instead of checking each other's states directly. This is the central decoupling mechanism — the StateManager knows what's allowed; no individual system needs to know about others.

**131 DA_StateGatingTable:** A Data Asset containing all gating rules. Designers modify which actions are blocked during which states without touching Blueprints. For example: "Reloading blocks Sprint" or "Hiding blocks Interaction."

---

*Developer Reference v1.2 — Categories 11-16 Systems (including Haptics + Render Pipeline). Companion to docs/blueprints/ specs.*

---

## Multiplayer Networking

### Category 11-12: Meta & Settings
| System | Authority |
|--------|-----------|
| `BPC_ProgressStatTracker` | Server accumulates; snapshot replicates for scoreboard |
| `SS_AchievementSystem` | Server validates unlocks; client receives unlock notifications |
| `BPC_AccessibilitySettings` | **Local per-client** — each player's accessibility preferences |
| `SS_SettingsSystem` | Settings save per-client; key bindings are local |
| `BPC_HapticsController` | **Local client only** — haptics are cosmetic, never replicated. No `HasAuthority()` needed. |
| `BPC_RenderPipelineManager` | **Local client only** — render pipeline is per-client hardware. No replication. |

### Category 13: Polish
| System | Authority |
|--------|-----------|
| `BPC_AnalyticsTracker` | **Local only** — per-client telemetry |
| `BPC_DevCheatManager` | **Local only** — but cheats that affect world must be server-validated |
| `BPC_ErrorHandler` | **Local only** — per-client error handling |
| `BPC_FPSCounter` | **Local only** — per-client performance |
| `BPC_LoadingScreen` | **Local only** — but sync'd via GamePhase |
| `BPC_TutorialSystem` | **Local per-client** — tutorial progression is per-player |
| `WBP_CreditsScreen`, `WBP_DebugMenu`, `WBP_SplashScreen` | **Local only** |

### Category 14: Data Assets
All `DA_*` Data Assets are **read-only configuration** — loaded identically on all clients. No replication needed.

### Category 15: Input
| System | Authority |
|--------|-----------|
| `SS_EnhancedInputManager` | **Local per-client.** Input mapping contexts, key rebinding, and input mode are per-player. Context priority stack is per-client. |

### Category 16: State Management
| System | Authority |
|--------|-----------|
| `BPC_StateManager` | **Server-authoritative.** All state change requests go through server. `IsActionPermitted()` is read-only — safe for client prediction. `RequestStateChange()` must be server-validated. |
| `DA_StateGatingTable` | Read-only Data Asset — identical on all clients. Server uses it for validation; clients use it for prediction of gating results. |
