Skip to content

Setup

This walkthrough takes you from zero to a working security desk inside your virtual OS. You will place cameras in the level, add BP_Prog_CCTV to your operating system, and open the monitoring app at runtime.

flowchart LR
  A["1. Enable plugin content"] --> B["2. Place BP_CCTV_Actor"]
  B --> C["3. Add BP_Prog_CCTV to OS"]
  C --> D["4. PIE — launch CCTV app"]
  1. Enable Operating System Simulator (v3.7.0+) in Edit → Plugins.
  2. In the Content Browser, enable Show Plugin Content and Show Engine Content.
  3. Confirm OperatingSystemCCTV module loads (no compile errors after updating the plugin).

→ Full checklist: Prerequisites

Open Project Settings → CCTV Settings and verify UI Material points to:

OperatingSystemContent/CCTV/M_UI_CCTV

This material receives the Texture parameter from each camera’s render target. You can override it per camera — see CCTV settings.

  1. Open your gameplay level (the same map where your AOperatingSystemDeviceActor lives).
  2. From plugin content, drag BP_CCTV_Actor into the viewport.
  3. Rotate the actor so the Scene Capture component faces the area you want monitored.
  4. Duplicate for additional feeds (hallway, entrance, server room, etc.).
  5. Set Camera Name on each instance (e.g. Lobby, Parking) — empty names auto-fill as Cam 1, Cam 2, …
flowchart TB
  subgraph level["Your level"]
  Device["AOperatingSystemDeviceActor"]
  CamA["BP_CCTV_Actor · Lobby"]
  CamB["BP_CCTV_Actor · Parking"]
  end
  Device --- level
  CamA -->|"SceneCaptureComponent2D"| ViewA["Captures lobby geometry"]
  CamB -->|"SceneCaptureComponent2D"| ViewB["Captures parking geometry"]
PropertyRecommendedNotes
Start ActivatedtrueRegisters with UOperatingSystemCCTVWorldSubsystem on BeginPlay
GroupDefault (or custom)Filter cameras by group in Blueprint
Main View Size2048 × 1024Single-camera fullscreen feed
Grid View Size512 × 256Multi-camera grid tiles

→ Deep dive: Camera actor

CCTV must be listed on your OS program collection so players can launch it from the desktop or Start menu.

Option A — Pre-installed (Must Have Programs)

Section titled “Option A — Pre-installed (Must Have Programs)”
  1. Duplicate DA_NonUnix_ProgramsCollection from OperatingSystemContent/NonUnix/Blueprints/ into your project Content folder.
  2. Open your duplicate and add BP_Prog_CCTV to Must Have Programs.
  3. Assign that collection on your OS Blueprint (Must Have Programs property).
flowchart LR
  OS["BP_Tut_OS"] --> PC["DA_My_ProgramsCollection"]
  PC -->|"Must Have Programs"| CCTV["BP_Prog_CCTV"]
  PC --> Other["BP_Prog_Mail · …"]

Add BP_Prog_CCTV to your Store catalog Data Asset instead if you want players to install CCTV like optional software.

Create an operating system · Full device stack

Open BP_Prog_CCTV (data-only view). C++ sets most properties; your Blueprint child only needs Widget Class and Data Class wired:

PropertyExpected value
Identifiercctv
Data ClassBP_Prog_CCTVData
Widget ClassWBP_CCTV
Save MethodDoNotSave
Start Window StateStartMaximized
Can Run On Portable Devicetrue
Initial LayoutSingleView
Capture MethodFrameBased
Capture SpeedMedium (every 30 frames)

CCTV program

sequenceDiagram
  participant Player
  participant OS as Virtual OS
  participant CCTV as BP_Prog_CCTV
  participant Data as BP_Prog_CCTVData
  participant Cam as BP_CCTV_Actor

  Player->>OS: Boot device / login
  Player->>OS: Launch CCTV
  OS->>CCTV: OnStart
  CCTV->>Data: ShouldCreate — find cameras in world
  Data->>Cam: SetupId · register feeds
  loop Every 30 frames
    Data->>Cam: Capture deferred
    Cam-->>Data: Render target updated
  end
  Player->>OS: Views live feed in WBP_CCTV
  1. Press Play on your level.
  2. Interact with the device and log in.
  3. Launch CCTV from the desktop or Start menu.
  4. You should see the active camera feed. If multiple cameras exist, use the widget’s layout controls (wired in WBP_CCTV) to switch between single and grid views.
SymptomFix
CCTV app does not appearBP_Prog_CCTV missing from your programs collection
Black or empty feedNo BP_CCTV_Actor in level, or Start Activated is false
ERR_DATA_NULL for BP_Prog_CCTVNo cameras in level when OS boots — see Troubleshooting: CCTV
Low FPS with many camerasSwitch Capture Method to FrameBased with Slow or VerySlow speed

Troubleshooting

GoalGuide
Custom monitoring UICCTV widget
Camera groups & zoomCamera actor
Runtime layout / capture APICCTV program
Swapping scan-line materialCCTV settings