Add haptics example documentation for Project Void controller feedback

- Introduced comprehensive guide for setting up controller haptics and force feedback.
- Detailed directory structure for haptic profiles and creation steps for DA_HapticProfile instances.
- Included platform-specific configurations for Xbox and PS5 DualSense adaptive triggers.
- Outlined wiring of BPC_HapticsController to various gameplay systems and events.
- Provided accessibility integration options and testing checklist for haptic functionality.
This commit is contained in:
Lefteris Notas
2026-05-22 17:16:34 +03:00
parent 7c2e8df6b1
commit 14441c000c
16 changed files with 1213 additions and 46 deletions

View File

@@ -13,17 +13,20 @@
---
# 12 — Settings, Accessibility & Platform Systems (Systems 104-105)
# 12 — Settings, Accessibility, Haptics & Platform Systems (Systems 104-105, 148)
| # | 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 |
**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.
---
# 13 — Polish: Tutorial, Loading, Credits & Debug Systems (Systems 106-114)
@@ -108,7 +111,7 @@
---
*Developer Reference v1.0 — Categories 11-16 Systems. Companion to docs/blueprints/ specs.*
*Developer Reference v1.1 — Categories 11-16 Systems (including Haptics). Companion to docs/blueprints/ specs.*
---
@@ -121,6 +124,7 @@
| `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. |
### Category 13: Polish
| System | Authority |

View File

@@ -1,6 +1,6 @@
# Developer Reference — UE5 Modular Game Framework
**Version:** 1.6 | **Generated:** 2026-05-22 | **Files:** 19 (1 index + 2 overview + 1 migration + 1 integration + 1 prototype + 1 starter + 10 category docs + 1 combined + 1 capture) | **C++:** 15 full + 10 stubs = 25 systems
**Version:** 1.7 | **Generated:** 2026-05-22 | **Files:** 20 (1 index + 2 overview + 1 migration + 1 integration + 1 prototype + 1 starter + 10 category docs + 1 combined + 1 capture + 1 haptics) | **C++:** 15 full + 10 stubs = 25 systems
This directory contains developer-facing reference documentation for every system in the framework. Unlike the blueprint spec files (which define *what* to build), these documents explain *how each system works internally* — the data flow, state machines, integration points, and design rationale. Use these when you need to understand a system's behavior to implement, debug, or extend it.
@@ -34,6 +34,10 @@ docs/developer/
├── 10-adaptive-systems.md ← Adaptive environment & atmosphere (systems 89-101, 132-133)
├── 11-16-systems.md ← Meta, Settings, Polish, Data Assets, Input, State (systems 102-135)
└── 17-capture-systems.md ← Planar Capture System — Mirrors, Portals, Monitors, Horror (systems 136-147)
## Haptics Reference
- **18-haptics-system.md** — Haptics Controller — Force feedback, DualSense triggers, heartbeat pulse, platform profiles (system 148)
- **game/haptics-example.md** — Project Void haptics walkthrough — wiring all game systems, platform tuning, testing checklist
```
## Quick Reference — Every System at a Glance
@@ -146,6 +150,7 @@ docs/developer/
| 103 | `SS_AchievementSystem` | Meta | Achievement subsystem |
| 104 | `BPC_AccessibilitySettings` | Settings | Accessibility settings |
| 105 | `SS_SettingsSystem` | Settings | Persistent settings subsystem |
| 148 | `BPC_HapticsController` | Settings | Haptics controller — force feedback, DualSense triggers, heartbeat pulse (NEW) |
| 106 | `BPC_AnalyticsTracker` | Polish | Analytics/telemetry |
| 107 | `BPC_DevCheatManager` | Polish | Developer cheats |
| 108 | `BPC_ErrorHandler` | Polish | Error/crash handling |
@@ -176,6 +181,7 @@ docs/developer/
| 133 | `BP_RoomAudioZone` | Adaptive | Room audio zone trigger |
| 134 | `DA_AudioSettings` | Data Assets | Audio bus/settings config |
| 135 | `DA_RoomAcousticPreset` | Data Assets | Room acoustic profile |
| 148 | `BPC_HapticsController` | Settings | Haptics controller — force feedback, DualSense triggers, heartbeat pulse |
## How to Use These Docs
@@ -201,4 +207,4 @@ docs/developer/
---
*Developer Reference Index v1.4 — Companion to the Blueprint Spec system. Update both together.*
*Developer Reference Index v1.5 — Companion to the Blueprint Spec system. Update both together.*

View File

@@ -36,6 +36,9 @@ Direct Reference │ Interface Calls
│ LAYER 8: POLISH & META │
│ Tutorials, Loading, Credits, Analytics, Achievements │
├────────────────────────────────────────────────────────────────┤
│ LAYER 7.5: HAPTICS │
│ Controller vibration, DualSense triggers, heartbeat pulse │
├────────────────────────────────────────────────────────────────┤
│ LAYER 7: ADAPTIVE │
│ Difficulty, Atmosphere, Pacing, Scares, Audio (MetaSounds) │
├────────────────────────────────────────────────────────────────┤
@@ -86,7 +89,10 @@ Never call `UGameplayStatics::PlaySound*` directly. All audio routes through `SS
### 7. Enhanced Input Manager
All input goes through `SS_EnhancedInputManager`. Context switching uses priority-based stack. Key rebinding is platform-aware via `DA_InputMappingProfile`.
### 8. Force Stack for State Overrides
### 8. GameplayTag-Driven Haptics
All controller vibration routes through `BPC_HapticsController` on the Player Controller. Gameplay systems trigger haptics by GameplayTag (e.g., `Haptic.Damage.Heavy`) — never calling raw `Play Force Feedback` nodes. The component detects platform (Xbox rumble vs PS5 DualSense adaptive triggers), respects accessibility toggles, and manages effect priority. Heartbeat pulse is driven by `BPC_StateManager.GetCurrentHeartRate()`.
### 9. Force Stack for State Overrides
Death, cutscenes, void space push state onto a stack. `RestorePreviousState()` pops back — the player returns to exactly their previous state after a forced interruption.
---
@@ -144,12 +150,13 @@ The 16 build phases follow dependency order:
| `WBP_` Widget Blueprints | 14 | HUDController, InventoryMenu, MainMenu |
| `DA_` Data Assets | 18 | ItemData, EquipmentConfig, AtmosphereProfile |
| `SS_` GameInstance Subsystems | 7 | SaveManager, UIManager, AudioManager |
| `BPC_` Components (haptics) | 1 | HapticsController (PlayerController) |
| `GI_` Game Instances | 2 | GameFramework, GameTagRegistry |
| `I_` Interfaces | 3 | InterfaceLibrary, HidingSpot, Persistable |
| `GM_` GameMode, `GS_` GameState | 2 | CoreGameMode, CoreGameState |
| `FL_` Function Library | 1 | GameUtilities |
| `AI_` Controller, `BB_` Blackboard | 2 | BaseAgentController, AgentBoard |
| **TOTAL** | **140** | |
| **TOTAL** | **141** | |
---