Files
security-game/DONE.md
T

6.0 KiB

DONE

Completed task sections moved from TODO.md. Sections are moved only when every item is finished and verified.

Project Setup

  • Confirm Godot 4.x editor version to standardize on (Godot 4.3 stable, official build).
  • Initialize a git repository and add a sensible root .gitignore for Godot and export artifacts.
  • Scaffold the Godot project (project.godot, input map, folder structure).
  • Add the GUT test framework and a runnable headless test command. (Deviation: GUT requires the editor plugin; replaced with a lightweight custom harness in src/test/test_runner.gd that runs without the editor.)
  • Document setup, run, and test commands in README.md.

Prototype Scene

  • Build a placeholder Hollywood Boulevard building entrance with steps, sidewalk, and a restricted door (procedural WorldBuilder).
  • Add a controllable guard character with first-person camera controls (GuardController).
  • Add basic keyboard/mouse input: move, look, interact, and cancel.
  • Add a debug overlay showing NPC intent, escalation level, and shift timer (F toggles).

Core Simulation — Systems

  • Implement ShiftCoordinator to start, advance, and end a shift.
  • Implement VenueScenario as a Resource with locations, rules, NPC pools, and event pools.
  • Implement an event scheduler that emits routine traffic and occasional scripted events (EventScheduler).
  • Implement NPCController with movement toward waypoints, doors, and queues (movement handled by NpcAvatar).

NPC Interaction

  • Define NpcProfile resources with intent, temperament, compliance, and escalation tolerances.
  • Implement a lightweight finite state machine for NPC states (FSM).
  • Implement the observation phase (Level 0) without forced intervention.
  • Implement simple deterrence (Level 1): raise hand, point, eye contact, and head shake.
  • Implement polite dialogue with professional, friendly, firm, and suspicious tones (logic level; tone picker UI deferred).
  • Implement formal warnings (Level 2) and make NPC reactions depend on profile and tone.
  • Implement blocking and physical positioning (Level 3) without default force.
  • Wire typical NPC reactions: leave, argue, ignore, record, move closer, or return later.

Access Verification

  • Implement AccessVerifier with input from recognition, wristbands, IDs, tickets, credentials, and guest lists.
  • Add wristband inspection UI showing color, pattern, date, and event marking.
  • Model valid, expired, counterfeit, mismatched, missing, and ambiguous access artifacts.
  • Record admit, redirect, hold, and refuse decisions for shift review.
  • Add feedback scoring for incorrectly denying an authorized person or admitting an unauthorized one.

Escalation and Radio — Core

  • Implement EscalationManager with explicit levels 0 through 5 and available-action gating.
  • Implement the security-assistance radio call (Level 4) with a report form and arrival delay.
  • Implement the emergency radio (Level 5) with hold-to-confirm and a report form.
  • Add radio cooldown and battery limits to prevent spam.

Incident, Reputation, and Shift Review

  • Implement IncidentRecorder emitting structured events (actor, behavior, action, evidence, escalation, outcome).
  • Implement body-camera evidence tied to incident events.
  • Implement ReputationEvaluator for peaceful resolutions, accuracy, complaints, damage, and entrance security.
  • Implement CrowdSystem reactions to calm, aggressive, armed, and emergency situations.
  • Implement the end-of-shift review screen summarizing decisions, consequences, and justification.

Scenario Content — Venue Data

  • Author a minimal Hollywood Boulevard building scenario with tourist, confused-visitor, and simple-trespasser NPCs.
  • Author a rare violent-threat event that requires justified emergency escalation.
  • Add The Joke Shop scenario data: ID checks, guest lists, and wand-screening policy.
  • Add the Hollywood Boulevard Late Night TV Studio scenario data with the full NPC mix and credential checks.
  • Add a mental-health-crisis event with careful, respectful de-escalation guidance.

Tooling and Quality

  • Add headless test coverage for access verification rules.
  • Add headless test coverage for escalation transitions and scoring.
  • Add fixed-seed scenario tests for deterministic NPC behavior.
  • Set up GitHub Actions to run headless tests on push (ci.yml).
  • Add a smoke-test checklist for launching one full shift (in README.md).

Core Simulation — NPC Perception

  • Implement a perception pass so NPCs react to the guard's gestures and proximity.
  • Give NPCs local waypoints per intent (photo spots, queue, stage door, sidewalk exit) instead of all walking to the entrance.
  • Add returning-trespasser behavior: an NPC that was directed away may circle back later in the shift.

Escalation and Radio — Responder Dispatch

  • Spawn a dispatched security NPC / armed responder avatar that arrives at the venue after the call delay.
  • Give the responder command, restraint, evacuation, and arrest outcomes that resolve the incident.
  • Add a visible emergency-radio cooldown indicator in the HUD.

Scenario Content — Wand Screening (The Joke Shop)

  • Implement the handheld wand inspection interaction with alerts from keys, belts, phones, and weapons.
  • Enforce screening-before-entry flow and record false alarm / prohibited item decisions.
  • Add venue-specific dialogue lines for door staff.

Polish and Accessibility

  • Add dialogue tone picker (Professional / Friendly / Firm / Suspicious) before addressing an NPC.
  • Add interaction alternatives that do not require precise aiming (e.g. scan-and-select pinned list of nearby NPCs).
  • Add visual and audio feedback per escalation level (colors, tones, shake).
  • Add audio for crowd ambience, radio responses, and confirmation prompts.
  • Externalize dialogue and UI text for localization.