Add Planar Capture System implementation checklist and developer reference

- Created a comprehensive implementation checklist for the Planar Capture System (Systems 136-147) detailing tasks across multiple phases including C++ core, material foundation, Blueprint actors, data assets, integration, and performance testing.
- Added a developer reference document outlining the architecture, data flow, state machine, budget enforcement, render target pooling, horror features, integration points, multiplayer networking, performance characteristics, debugging methods, and build order for the capture systems.
- Introduced examples of capture surface usage in the Project Void horror game, including specific implementations for mirrors, monitors, portals, and fake windows, along with a checklist for integration tasks.
This commit is contained in:
Lefteris Notas
2026-05-22 15:36:08 +03:00
parent 6b6c702dd7
commit 0a2d08b2ad
34 changed files with 5245 additions and 32 deletions

View File

@@ -0,0 +1,110 @@
# 139 — Mirror Surface Actor (`BP_Mirror`)
## Purpose
Standard planar mirror surface. Designer configures mode, dirt layers, steam parameters, and surface aging. Extends `BP_PlanarCaptureActor` with default mirror configuration.
## Dependencies
- **Requires:** `BP_PlanarCaptureActor` (137), `BPC_PlanarCapture` (136)
- **Required By:** `BP_HorrorMirror` (142) — extends this for horror features
- **Engine/Plugin Requirements:** M_CaptureSurface_Master material, MPC_CaptureSurface
## Class Info
| Property | Value |
|----------|-------|
| **Parent Class** | `BP_PlanarCaptureActor` (C++ `ABP_PlanarCaptureActor`) |
| **Class Type** | Blueprint Actor |
| **Asset Path** | `Content/Framework/Capture/BP_Mirror.uasset` |
| **C++ Status** | 🔵 BP Spec Only — extends C++ parent |
| **BP Asset** | Create in editor: `BP_Mirror` |
## 1. Configuration (Class Defaults)
| Variable | Value | Description |
|----------|-------|-------------|
| `CaptureComponent.CaptureMode` | `Mirror` | Fixed to Mirror mode |
| `bStartEnabled` | `true` | Active by default |
| `bDestructible` | `false` | Can be shattered (override per instance) |
| `SurfaceMPC` | `MPC_CaptureSurface` | Assign the global MPC |
### Mirror-Specific Properties (Set via `SetSurfaceMPCParameter`)
| Parameter | Default | Range | Description |
|-----------|---------|-------|-------------|
| `DirtOpacity` | 0.0 | 0.01.0 | Dirt/scratch layer intensity |
| `SteamIntensity` | 0.0 | 0.01.0 | Steam fog visibility |
| `CondensationFlow` | 0.0 | 0.01.0 | Condensation rivulet normal intensity |
| `SurfaceAge` | 0.0 | 0.01.0 | Oxidation/yellowing tint |
## 2. Material Setup
| Slot | Material Instance | Description |
|------|------------------|-------------|
| SurfaceMesh[0] | `MI_Mirror_Clean` | Default clean mirror |
Pre-configured material instances to assign per mirror:
- `MI_Mirror_Clean` — Pristine mirror, no effects
- `MI_Mirror_Dirty` — DirtOpacity preset at 0.4
- `MI_Mirror_Steam` — SteamIntensity preset at 0.6, animated noise enabled
## 3. Event Graph
### Event BeginPlay
```
Event BeginPlay
├─ Parent: BeginPlay (registers with manager)
├─ Set CaptureComponent.CaptureMode = Mirror
├─ Set SurfaceMaterial(MI_Mirror_Clean) // or designer-chosen MI
└─ [If bStartEnabled] EnableSurface()
```
### Event: SetMirrorDirtLevel(Level: float)
```
SetMirrorDirtLevel(Level)
├─ Clamp Level to 0.01.0
├─ Call SetSurfaceMPCParameter("DirtOpacity", Level)
└─ [If Level > threshold] Swap material to MI_Mirror_Dirty
```
### Event: SetMirrorSteamLevel(Level: float)
```
SetMirrorSteamLevel(Level)
├─ Clamp Level to 0.01.0
├─ Call SetSurfaceMPCParameter("SteamIntensity", Level)
└─ Call SetSurfaceMPCParameter("CondensationFlow", Level * 0.5)
```
## 4. Communication Matrix
| Target | Method | What |
|--------|--------|------|
| `SS_PlanarCaptureManager` | Direct (inherited) | Registration |
| `BPC_PlanarCapture` | Direct (inherited) | Capture driving |
| `MPC_CaptureSurface` | SetScalarParameterValue (via PushMPCParameters) | Visual parameters |
| `SS_AudioManager` (132) | Direct (on shatter) | Shatter sound |
## 5. Manual Implementation Guide
### 5.1 Create BP_Mirror
1. Create Blueprint Class: Parent = `BP_PlanarCaptureActor`, Name = `BP_Mirror`
2. Open Class Defaults, set `CaptureComponent.CaptureMode` to `Mirror`
3. In Components: select `SurfaceMesh`, assign a plane mesh (e.g., `SM_Plane_200x200`)
4. Assign `MI_Mirror_Clean` to SurfaceMesh material slot 0
5. Set `SurfaceMPC` to `MPC_CaptureSurface`
### 5.2 Add Steam/Dirt Controls
1. In Event Graph, create custom event `SetMirrorDirtLevel(Float)`
2. Wire: `SetSurfaceMPCParameter("DirtOpacity", Level)`
3. Create custom event `SetMirrorSteamLevel(Float)`
4. Wire: `SetSurfaceMPCParameter("SteamIntensity", Level)` + `SetSurfaceMPCParameter("CondensationFlow", Level * 0.5)`
### 5.3 Level Placement
1. Drag `BP_Mirror` into level
2. Rotate so surface normal faces toward player viewing area
3. Set `SurfaceDisplayName` for debug identification
4. Adjust `ProximityTrigger.BoxExtent` to cover expected viewing area
## 6. Build Checklist
- [ ] Create BP_Mirror Blueprint child
- [ ] Assign plane mesh and MI_Mirror_Clean material
- [ ] Set CaptureMode=Mirror in defaults
- [ ] Assign MPC_CaptureSurface reference
- [ ] Test: place in level, walk up, verify reflection appears
- [ ] Test: walk away, verify quality drops to Off
- [ ] Test: call SetMirrorDirtLevel/SetMirrorSteamLevel from gameplay code