Files
UE5-Modular-Game-Framework/docs/blueprints/17-capture/141_BP_Monitor.md
Lefteris Notas 0a2d08b2ad 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.
2026-05-22 15:36:08 +03:00

4.6 KiB
Raw Blame History

141 — Monitor Surface Actor (BP_Monitor)

Purpose

Security screen, TV, or diegetic display monitor. Uses a fixed camera actor reference instead of dynamic mirror/portal math. Runs at low FPS by default (5fps) with scanline and static noise effects.

Dependencies

  • Requires: BP_PlanarCaptureActor (137), BPC_PlanarCapture (136)
  • Required By: BPC_DiegeticDisplay (18) — can display diegetic HUD content
  • Engine/Plugin Requirements: None additional

Class Info

Property Value
Parent Class BP_PlanarCaptureActor (C++ ABP_PlanarCaptureActor)
Class Type Blueprint Actor
Asset Path Content/Framework/Capture/BP_Monitor.uasset
C++ Status 🔵 BP Spec Only
BP Asset Create in editor: BP_Monitor

1. Configuration (Class Defaults)

Variable Value Description
CaptureComponent.CaptureMode Monitor Fixed to Monitor mode
CaptureComponent.CaptureFOV 70.0 Narrower FOV for security camera feel
CaptureComponent.QualityProfiles[0].CaptureInterval 0.2 5fps Low quality (override)
SurfaceMPC MPC_CaptureSurface Global MPC

Monitor-Specific Properties (Add to BP)

Variable Type Default Description
bPoweredOn bool true On/off state
bShowScanlines bool false CRT scanline overlay
StaticNoiseIntensity float 0.0 Static/noise overlay (0.01.0)
FlickerCurve UCurveFloat On/off flicker timing curve
PoweredOffMaterial UMaterialInterface Material shown when off (black screen, cracked)

2. Material Setup

Slot Material Description
SurfaceMesh[0] MI_Monitor_Security Security screen with scanline support

3. Event Graph

Event BeginPlay

Event BeginPlay
  ├─ Parent: BeginPlay
  ├─ Set CaptureComponent.CaptureMode = Monitor
  ├─ Set CaptureComponent.CaptureFOV = 70.0
  ├─ [If bPoweredOn] EnableSurface
  └─ [Else] SetSurfaceMaterial(PoweredOffMaterial)

Event: PowerOn

PowerOn()
  ├─ Set bPoweredOn = true
  ├─ SetSurfaceMaterial(MI_Monitor_Security)
  ├─ EnableSurface()
  └─ [If FlickerCurve valid] StartFlickerTimeline

Event: PowerOff

PowerOff()
  ├─ Set bPoweredOn = false
  ├─ DisableSurface()
  ├─ SetSurfaceMaterial(PoweredOffMaterial)
  └─ StopFlickerTimeline

Event: SetStaticNoise(Intensity: float)

SetStaticNoise(Intensity)
  ├─ Clamp Intensity 0.01.0
  ├─ Set StaticNoiseIntensity = Intensity
  └─ SetSurfaceMPCParameter("StaticNoiseIntensity", Intensity)

4. Flicker Timeline Setup

If FlickerCurve is assigned, create a Timeline that drives:

Timeline: FlickerTimeline
  Curve: FlickerCurve (Float Track)
  On Update:
    ├─ Read curve value → bIsFlickerOn
    ├─ If bIsFlickerOn and not bPoweredOn → PowerOn (brief)
    └─ If not bIsFlickerOn and bPoweredOn → PowerOff (brief)

5. Communication Matrix

Target Method What
BPC_DiegeticDisplay (18) Interface (I_DiegeticDisplay) Can display diegetic HUD content as secondary output
SS_AudioManager (132) Direct Monitor static/buzz/hum SFX
BPC_ScareEventSystem (101) Dispatcher Monitor flicker/horror image scare

6. Manual Implementation Guide

6.1 Create BP_Monitor

  1. Create Blueprint Class: Parent = BP_PlanarCaptureActor, Name = BP_Monitor
  2. Set CaptureComponent.CaptureMode = Monitor in defaults
  3. Set CaptureComponent.CaptureFOV = 70.0
  4. Override QualityProfiles[0].CaptureInterval to 0.2 (5fps Low)
  5. Assign MI_Monitor_Security to SurfaceMesh
  6. Create PoweredOffMaterial — simple dark/black emissive material

6.2 Camera Placement

  1. Create a CameraActor or SceneCaptureCamera (BP child of CameraActor) in the level
  2. Position it where the monitor should "look from"
  3. In BP_Monitor instance: set CaptureComponent.FixedCameraActor → your camera actor

6.3 Power Control

For narrative-driven power control:

External system calls: BP_Monitor → PowerOn() / PowerOff()
Trigger: Narrative flag set → Branch → PowerOn or PowerOff

7. Build Checklist

  • Create BP_Monitor Blueprint child
  • Assign MI_Monitor_Security material
  • Create PoweredOffMaterial (dark screen)
  • Place camera actor and assign FixedCameraActor
  • Test PowerOn/PowerOff cycle
  • Test flicker curve timeline
  • Test static noise parameter
  • Test: place multiple monitors, verify quality budget works