diff --git a/PLAN.md b/PLAN.md index 2d4087f..d58f9b7 100644 --- a/PLAN.md +++ b/PLAN.md @@ -36,7 +36,7 @@ The player should avoid relying on appearance or assumptions. A familiar person ## Escalation System -## Level 0: Observation +### Level 0: Observation The guard watches NPC behavior and decides whether intervention is needed. @@ -51,7 +51,7 @@ The player should avoid interrupting harmless behavior. Unnecessary confrontatio --- -## Level 1: Simple Deterrence and Polite Direction +### Level 1: Simple Deterrence and Polite Direction The player can begin with a simple, nonverbal deterrent before speaking. These actions are quick and low-pressure, making them useful when someone is only approaching the steps casually or appears unsure. @@ -76,7 +76,7 @@ At this stage, most NPCs comply immediately. --- -## Level 2: Formal Warning +### Level 2: Formal Warning If the person remains on the steps or continues toward the entrance, the player issues a formal warning. @@ -97,7 +97,7 @@ At this level, the NPC may: --- -## Level 3: Blocking and Physical Positioning +### Level 3: Blocking and Physical Positioning The guard moves into a defensive position between the NPC and the building. @@ -116,7 +116,7 @@ This level is about **denying access without creating a fight**. --- -## Level 4: Radio for Security Assistance +### Level 4: Radio for Security Assistance If the person refuses to leave, attempts to force the door, threatens staff, or repeatedly returns, the player uses the radio. @@ -139,7 +139,7 @@ Incorrect or exaggerated reports damage the guard’s credibility. --- -## Level 5: Emergency Response +### Level 5: Emergency Response This is reserved for immediate threats, such as: @@ -166,51 +166,51 @@ The officer should not function as a convenient “stronger attack.” Their rol ## NPC Behavior Types -## Tourists +### Tourists - Take photos - Sit on steps - Wander toward restricted doors - Usually respond well to polite directions -## Street Performers +### Street Performers - May block stairs - May become argumentative if moved - Can be redirected to a permitted area -## Influencers and Filmmakers +### Influencers and Filmmakers - Film the guard - Test boundaries for content - May accuse the guard of overreacting - Create public-relations risk -## Confused Visitors +### Confused Visitors - Have appointments or directions - May genuinely believe the building is public - Reward patient explanations -## Intoxicated Pedestrians +### Intoxicated Pedestrians - Move unpredictably - May ignore instructions - Require additional distance and assistance -## Trespassers +### Trespassers - Repeatedly test entrances - Use distractions - May return after being told to leave -## Violent Threats +### Violent Threats - Rare - Escalate quickly - Trigger the emergency response system only when their behavior indicates immediate danger -## 51/50s +### 51/50s Crazy Homeless Individuals may be referred to as "51/50s" in the context of the game, indicating a person who may be experiencing a mental health crisis and could pose a potential threat to themselves or others. @@ -223,7 +223,7 @@ Crazy Homeless Individuals may be referred to as "51/50s" in the context of the ## Special Systems -## Reputation Meter +### Reputation Meter The player is evaluated on: @@ -237,13 +237,13 @@ The player is evaluated on: A player who calls armed assistance too often should score poorly, even if no one was injured. -## Evidence and Body Camera +### Evidence and Body Camera Interactions are automatically recorded. After each shift, the player reviews incidents and sees whether their escalation was justified. This encourages players to think before acting. -## Public Crowd Reaction +### Public Crowd Reaction Nearby pedestrians react to the guard’s behavior: @@ -252,7 +252,7 @@ Nearby pedestrians react to the guard’s behavior: - Visible weapons or emergency responders cause panic - Good de-escalation keeps the boulevard moving normally -## Limited Radio Battery or Cooldown +### Limited Radio Battery or Cooldown The emergency radio should not be infinitely available. A call has a cooldown and may require the player to give a short report first. @@ -308,11 +308,11 @@ A shift can be technically “secure” but still receive a poor rating if the g The game should support multiple venues, each with its own access rules, crowd patterns, equipment, and escalation procedures. The core gameplay remains the same: observe, verify access, communicate clearly, and use the lowest effective level of escalation. -## The Joke Shop +### The Joke Shop **The Joke Shop** is a comedy club scenario where the player works as a door person at the entrance. The player is responsible for checking identification, confirming that guests are attending the correct show, and screening guests for weapons with a handheld security wand. -### Primary Responsibilities +#### Primary Responsibilities - Check each guest’s government-issued ID where required. - Confirm that the guest meets the venue’s age requirement. @@ -322,7 +322,7 @@ The game should support multiple venues, each with its own access rules, crowd p - Direct guests through the entrance without blocking the sidewalk. - Refuse entry when a guest has an invalid ID, no valid admission, or a prohibited item. -### Guest Outcomes +#### Guest Outcomes A guest may have: @@ -336,7 +336,7 @@ A guest may have: The player must make decisions based on the venue’s rules and observable evidence, not on a guest’s appearance or attitude. A calm guest with a valid ID should be admitted efficiently, while an aggressive guest with valid credentials may still require assistance if they threaten staff or other patrons. -### Joke Shop Escalation +#### Joke Shop Escalation 1. **Nonverbal direction:** Raise a hand, point to the ID-check area, or gesture for the guest to wait. 2. **Routine explanation:** Explain the ID, ticket, or wand-check requirement. @@ -347,7 +347,7 @@ The player must make decisions based on the venue’s rules and observable evide The handheld wand should not automatically identify an item as a weapon. The player must interpret the alert, ask the guest to identify the item, and follow venue procedure. The goal is to create a believable screening challenge while keeping the emphasis on communication and proportionate responses. -### Scenario Events +#### Scenario Events - A busy weekend comedy show creates a long line. - A performer arrives through the guest entrance and must be recognized or verified. @@ -358,7 +358,7 @@ The handheld wand should not automatically identify an item as a weapon. The pla - A disruptive guest attempts to follow another person through the door. - A late-arriving audience member tries to enter during a performance. -## Hollywood Boulevard Late Night TV Studio +### Hollywood Boulevard Late Night TV Studio This scenario takes place outside a late-night television studio on Hollywood Boulevard. The guard manages the front steps, studio entrance, guest arrivals, deliveries, audience members, and the public crowd gathered around the building. @@ -374,7 +374,7 @@ The studio encounters all of the NPC types described in the game plan: The studio also has authorized guests and staff. They must either be recognized by the guard or present a valid wristband, credential, guest-list confirmation, or other approved access marker. The player must check these credentials without holding up the audience line or allowing unauthorized people to enter. -### Studio Responsibilities +#### Studio Responsibilities - Keep the front steps and entrance clear. - Direct tourists and performers away from restricted areas. @@ -386,7 +386,7 @@ The studio also has authorized guests and staff. They must either be recognized - Watch for attempts to follow authorized people through the entrance. - Call for emergency assistance only when there is an immediate threat. -### Studio Scenario Events +#### Studio Scenario Events - A crowd gathers to watch a celebrity arrive. - Tourists stop on the steps and block the entrance for photographs. @@ -462,15 +462,15 @@ Future venues can reuse this structure while changing the rules, equipment, staf ## Tech Stack -## Engine: Godot 4 +### Engine: Godot 4 The game is built with the Godot Engine 4.x editor. Godot was chosen for its free and open-source license, built-in 3D rendering, navigation, animation, audio, and UI systems, and its low weight for fast prototyping and iteration. -## Language: GDScript +### Language: GDScript Gameplay logic is written in GDScript. It is tightly integrated with the engine, fast to iterate on, and avoids an external build toolchain for the prototype phase. -## Architecture Mapping +### Architecture Mapping The venue-driven architecture maps onto Godot as follows: @@ -481,13 +481,13 @@ The venue-driven architecture maps onto Godot as follows: - **UI:** Godot `Control` nodes and themes for prompts, access inspection, radio reports, dialogue, timers, and the shift review screen. - **Audio:** Godot audio buses and `AudioStreamPlayer` nodes for voices, crowd noise, radio, and environment sound. -## Content and Data +### Content and Data - Scenario and entity configuration uses typed Godot `Resource` files (`.tres`), created either in the editor or via scripts. - Localized dialogue and text are stored in JSON files when they need to be editable outside the editor. - Save data and shift results use JSON in Godot's `user://` directory. -## Testing +### Testing - Unit and scenario tests use a lightweight custom headless runner (`src/test/test_runner.gd`). GUT was evaluated but requires the editor plugin. @@ -667,3 +667,8 @@ The game should feel like a tense workplace simulation with occasional crisis mo A useful guiding rule: > **The player wins by choosing the lowest level of escalation that keeps everyone safe.** + +## Future Ideas + +- Bob Dobbs cameo (very rare, Easter egg-style appearance), place a hidden note in `MEMORY.md`. +- specific crazy behaviour patterns for NPCs, such as slapping their own face, using their hands as scissors, taking their shirt off, or interacting with props in unexpected ways