Guide

Game security camera and surveillance systems explained

Harbor Dockyard's warehouse infiltration mission looked fair on paper: two patrolling guards, wide crates for cover, and a vent route around the loading bay. Playtesters still failed the ghost objective 71% of the time. Telemetry showed most alerts came from ceiling cameras players never noticed — fixed units above aisle three and a slow panning camera over the forklift lane. Guards were rarely the problem; the surveillance layer was an invisible third enemy with no readable telegraph. After refactoring camera frustums, adding sweep audio cues, and carving deliberate blind spots behind support pillars, ghost clears rose from 29% to 58% without removing a single guard.

Security cameras are environmental detectors: they watch volumes the player cannot occupy while visible, force route timing around sweep cycles, and often escalate to guards through monitor rooms or alarm panels. Unlike humanoid AI, cameras are predictable machines — which makes them excellent puzzles when authored with readable geometry and poor puzzles when they feel omniscient. This guide covers frustum and sweep mechanics, detection FSMs, blind-spot authoring, monitor and guard integration, disable and hack loops, the Harbor Dockyard refactor, a technique decision table vs guard-only and laser-grid stealth, pitfalls, and a production checklist — building on stealth mechanics and AI perception foundations.

What cameras add that guards do not

Guards have memory limits, leash radii, and patrol gaps (see enemy leash and patrol systems). Cameras fill complementary roles:

  • Persistent overwatch — a fixed camera never wanders off to investigate a noise elsewhere.
  • Timing puzzles — panning sweeps create windows; players learn cadence instead of shadowing NPCs.
  • Vertical threat — ceiling mounts see over low cover that blocks guard line-of-sight.
  • Escalation hubs — a security office can aggregate feeds and dispatch reinforcements.
  • Interactable objectives — disable, re-aim, loop footage, or hack feeds become mission verbs.

Cameras should not replace guards entirely; the best infiltration spaces layer both so players choose when to move (sweep gap) and where to move (guard cone).

Frustum geometry and detection volume

Most games approximate a camera with a view frustum or a 2D sector on the ground plane for simpler stealth titles:

Camera detect if:
  distance(player, camera) <= max_range
  AND angle(player - camera.forward) <= half_fov
  AND line_of_sight(camera, player) clear
  AND player not in ignore_tag (vent, ceiling crawl)

Authoring parameters

  • Field of view (FOV) — 60–90° for ceiling mounts; narrower for long hallway lenses.
  • Max range — cap aggressively; infinite-range ceiling cams feel unfair in large warehouses.
  • Near clip / height — ignore floor clutter below waist on high mounts unless you want crouch-stealth under beams.
  • Peripheral softness — optional gradient: center cone instant spot, outer wedge slow suspicion creep (same pattern as guard vision in AI perception).

Line-of-sight rules

Raycast from lens to player chest bone. Partial occlusion from crates should break detection; hairline gaps through fence mesh should not. Document whether glass is one-way, translucent alert, or solid block — inconsistency across levels trains distrust.

Fixed vs panning vs tracking cameras

Type Behavior Player skill Risk
Fixed Static forward vector Memorize dead zones Blind if no floor decal
Pan sweep Oscillate yaw between limits Time movement to cycle Desync if frame-rate dependent
Track Follow player once alerted Break LOS fast Feels punitive post-spot
PTZ scripted Keyframe tour on timer Learn sequence Punishes improvisation

Pan speed should be readable at walk pace: if a player sprinting cannot cross the open lane between sweeps, the lane is a hard block unless you provide cover or a disable interactable. Publish sweep period in debug overlay during QA (e.g., 4.2 s full arc).

Audio and VFX telegraphs

  • Motor whir at sweep reversal points.
  • Idle red laser or sweep line on floor (toggle in accessibility menu).
  • Brief LED blink when entering detect cone — not after full alert.

Detection state machine

Keep camera logic separate from guard brains but emit compatible events:

  1. Idle / sweep — frustum active; no player in cone.
  2. Suspicion — partial visibility or outer wedge; fill meter or blink LED.
  3. Confirmed — meter full or core cone sustained N frames; trigger alarm event.
  4. Lost — target left frustum; decay suspicion unless hard-lock tracking mode.
  5. Disabled — player hack, bullet, or power cut; frustum off for duration or until repair.

Alarm events should carry payload: camera_id, last_seen_pos, severity. Guards subscribe and transition to investigate or combat per their FSM. Noise-based alerts from footstep systems and vision-based camera alerts must dedupe — one incident, not double spawn.

Blind spots, cover, and level authoring

Fair camera spaces are drawn, not accidental:

  • Structural dead zones — behind pillars, under overhangs outside frustum tilt limits.
  • Mobile cover — pushable crates that break LOS mid-aisle.
  • Vertical bypass — catwalks above frustum pitch or duct crawls tagged non-visible.
  • Light-and-shadow — optional: cameras ignore deep shadow if you already use light bands in stealth mechanics.

Debug-draw frustums in editor and walk the golden path once per difficulty. If ghost route requires frame-perfect sprint, widen the sweep gap or add a disable objective first.

Monitor rooms, guards, and escalation

Advanced setups link cameras to a security desk NPC or automated dispatcher:

  • Guard watches monitor wall: switches active feed every K seconds; player visible only on current feed — creates timing across rooms.
  • Auto-lock doors when any camera confirms.
  • Radio bark + waypoint ping to nearest responder.
  • Recordings for post-mission scoring (“identified on camera” vs ghost).

Takedown on a monitor guard is a payoff loop tied to stealth takedowns — disable human overseer, then loop or blind cameras before crossing open floor.

Disable, hack, and counterplay loops

Give players verbs beyond “wait for sweep”:

  • Terminal hack — timed minigame or inventory tool; disables one cam or whole circuit for T seconds.
  • Physical sabotage — shoot lens, EMP grenade, throw object to jam pan motor (noisy — attracts guards).
  • Loop feed — record empty corridor, replay on monitor while player crosses live view elsewhere.
  • Re-aim — rotate fixed cam to face wall during maintenance disguise mission.

Cost every bypass: consumable, time limit, or raised alert if hack fails. Free permanent disables remove puzzle reuse on repeat plays unless cameras repair on checkpoint reload only.

Harbor Dockyard warehouse refactor

Problems found in telemetry and observation:

  • Four ceiling cams with overlapping frustums — no legal crossing without slow-mo timing.
  • Pan audio inaudible over ambient crane loop.
  • Disable panels behind first cam — players spotted before seeing interactable.

Changes shipped:

  1. Reduced to three cams; removed overlap on aisle three; added pillar blind wedge 2.4 m wide.
  2. Synced pan periods to integer seconds (4 s / 6 s) and added reversal click + floor decal arc.
  3. Moved circuit breaker to side room reachable from vent before open floor; hacking disables pan cam only, fixed cams still active.
  4. Monitor guard now rotates feeds every 8 s; takedownable with non-lethal prompt from door shadow.
  5. Camera confirm raises suspicion on nearest guard instead of instant combat unless player stays in cone > 1.2 s.

Ghost clears 29% → 58%; average retries per success 3.1 → 1.7. Lethal path unchanged.

Technique decision table

Approach Detection model Best when Watch out for
Guard-only stealth Mobile AI cones + hearing Organic spaces, few chokepoints Large open floors trivialized
Fixed ceiling cameras Static frustums Corridors, vault anterooms Invisible cones without decals
Pan sweep cameras Timed sectors Loading bays, wide halls Frame-rate dependent timers
Laser grid / tripwire Binary beam break Museum heists, precise feet Jump-crouch pixel hunts
Motion sensor PIR Radius pulse Dark rooms, no LOS needed Overlaps with footstep noise
Social / disguise layer Uniform rules not geometry Office infiltration Cameras still break disguise

Common pitfalls

  • Omniscient overlap — no pixel without cone; players feel cheated.
  • Silent pans — if audio is masked, add visual sweep floor decal.
  • Instant combat on glance — suspicion ramp gives counterplay; one-frame spots feel broken.
  • Disable behind detect — solution must be reachable before puzzle.
  • Guard + camera double alert — dedupe incidents on same player tick.
  • Networking desync — pan angle authoritative on host; clients interpolate.
  • Crouch ignored — if crouch matters for guards, document camera height rules consistently.
  • No ghost feedback — post-mission report which cams saw you; teaches routes.

Production checklist

  • Debug-draw every camera frustum in editor and playtest build.
  • Verify at least one blind path or disable per mandatory crossing.
  • Pan period uses delta time; identical sweep at 30 and 60 FPS.
  • Audio + optional floor decal at sweep reversal.
  • Suspicion ramp before confirm; publish ramp duration in tuning doc.
  • Alarm event schema shared with guard AI and door lock systems.
  • Dedupe camera and guard alerts within 500 ms window.
  • Disable/hack interactables reachable before first required crossing.
  • Post-mission camera identification log for ghost scoring.
  • Accessibility: highlight cones, extend sweep period, or skip cam confirms on easy mode.

Key takeaways

  • Cameras are predictable environmental AI — readable sweeps and blind spots are the puzzle.
  • Frustum authoring (FOV, range, height, LOS) matters more than model fidelity on the mesh.
  • Separate detection FSM from guards but emit shared alarm events for coherent escalation.
  • Disable, hack, and monitor-guard takedowns give agency beyond timing alone.
  • Harbor Dockyard cut overlap, synced pan telegraphs, and moved the breaker — ghost clears nearly doubled.

Related reading