Z. Cliffe Schreuders 6fda1e3251 Add Mission 5 Stage 2 - Atmosphere & Environment Design
Created comprehensive atmospheric design for corporate investigation mission:

TONE & ATMOSPHERE:
- Corporate noir thriller with mounting moral complexity
- Tense investigation (not high-action, slow-burn)
- Tonal shift: Professional → Empathetic → Moral crisis
- Environmental storytelling through objects and spaces

QUANTUM DYNAMICS CORPORATION:
- Modern Bay Area tech campus (450 employees, 5 floors)
- Aesthetic: Clean minimalist + high-tech research + defense contractor security
- Color palette: Cool blues/whites (sterile), warm woods (corporate friendly)
- Sensory details: Server hum, badge beeps, nervous energy, forced normalcy

TIME & PACING:
- Wednesday afternoon: Mission start, interviews available
- Wednesday night: Empty building, free exploration
- Friday night: Final exfiltration trap scenario
- Environmental progression mirrors moral weight

ROOM-SPECIFIC ATMOSPHERES:
- Corporate lobby: Professional surveillance, unwelcoming
- Patricia's office: Frustrated competence, investigation chaos
- Engineering wing: Nervous productivity, team strain
- Torres' office: **CRITICAL** Quiet desperation
  * Family photos, medical bills ($380K visible), children's drawings
  * 'Get well soon Mommy' with hearts, 'Best Dad' caption
  * Half-finished coffee, expired parking permit (sold car)
  * This space makes player feel terrible about investigation
- Server room: Surveillance thriller, digital battlefield
- Conference room: War room, evidence mounting

CHARACTER ATMOSPHERE & VOICES:

DAVID TORRES (Manipulated Insider - NOT typical ENTROPY villain):
- Age 38, Hispanic, thin from stress, constantly adjusts wedding ring
- Voice: Intelligent/technical, exhausted, defensive → breaks easily
- Physical tells: Removes glasses, adjusts ring, long pauses
- Confrontation tone: Horror and disbelief (NOT evil monologue)
- Can be turned, feels genuine remorse
- Dialogue: 'What did I do for them? What did I do?'

THE RECRUITER (True ENTROPY Villain - Unseen):
- Actual true believer, professional manipulator
- Calculated recruitment, identified Torres' vulnerability
- Communications show methodical exploitation
- Goes dark after Torres compromised

PATRICIA MORGAN (CSO):
- Age 52, former FBI Cyber (15 years), armed, no-nonsense
- Voice: Direct law enforcement style, frustrated, defensive about team
- 'God. That's how they get people.'

DR. SARAH CHEN (Team Lead):
- Age 41, maternal toward team, guilty about missing signs
- Defensive → Accepting progression
- 'If David did this... those soldiers. Their lives. God.'

SUPPORTING CAST:
- Lisa Rodriguez: Sympathetic friend, emotional context provider
- Marcus Webb: IT manager, guilty about security gaps
- Kevin Tran: Junior engineer, idolizes Torres ('He's a good person')
- Michael Park: RED HERRING (affair, not espionage)
- Dr. Amara Johnson: RED HERRING (legitimate collaboration)

5 KEY EMOTIONAL MOMENTS:
1. Medical bills discovery: $380K, insurance denials, family photo
2. Torres' journal: 8 months of moral descent in real-time
3. Confrontation revelation: Torres realizes 'journalists' are foreign intel
4. Children's drawings: Innocence amid tragedy
5. The choice: No good options (justice vs. mercy)

ENVIRONMENTAL STORYTELLING:
- Torres' desk items tell complete story (coffee, USB, parking permit, photos)
- Engineering whiteboard shows isolation (missed meetings, unanswered questions)
- Server room evidence (fingerprints, blind spots, Friday logs)
- Corporate sterility vs. personal tragedy contrast

ATMOSPHERIC PROGRESSION:
- Act 1: Professional investigator (clean, cooperative, satisfying)
- Act 2: Humanization (complexity, empathy, uncertainty)
- Act 3: Moral weight (impossible decisions, professional detachment gone)

Document: 350+ lines defining complete sensory framework, character voices,
and emotional progression for investigation thriller atmosphere.
2026-01-14 09:46:33 +00:00
2025-05-16 10:42:42 +01:00
2025-11-21 15:27:53 +00:00
2025-11-21 15:27:53 +00:00
2025-11-14 19:47:54 +00:00

BreakEscape Rails Engine

Cybersecurity training escape room game as a mountable Rails Engine.

Features

  • 24+ cybersecurity escape room scenarios
  • Server-side progress tracking with 2-table schema
  • Randomized passwords per game instance via ERB
  • JIT Ink script compilation for NPC dialogue
  • Polymorphic player support (User/DemoUser)
  • Pundit authorization
  • RESTful API for game state management
  • Session-based state persistence

Installation

In your Gemfile:

gem 'break_escape', path: 'path/to/break_escape'

Then:

bundle install
rails break_escape:install:migrations
rails db:migrate
rails db:seed  # Optional: creates missions from scenarios

Mounting in Host App

In your config/routes.rb:

mount BreakEscape::Engine => "/break_escape"

Usage

Standalone Mode (Development)

export BREAK_ESCAPE_STANDALONE=true
rails server
# Visit http://localhost:3000/break_escape/

Mounted Mode (Production)

Mount in Hacktivity or another Rails app. The engine will use the host app's current_user via Devise.

Configuration

# config/initializers/break_escape.rb
BreakEscape.configure do |config|
  config.standalone_mode = false  # true for development
  config.demo_user_handle = 'demo_player'
end

Database Schema

  • break_escape_missions - Scenario metadata (name, display_name, published, difficulty)
  • break_escape_games - Player state + scenario snapshot (JSONB)
  • break_escape_demo_users - Standalone mode only (optional)

API Endpoints

  • GET /games/:id/scenario - Scenario JSON (ERB-generated)
  • GET /games/:id/ink?npc=X - NPC script (JIT compiled from .ink)
  • GET /games/:id/bootstrap - Initial game data
  • PUT /games/:id/sync_state - Sync player state
  • POST /games/:id/unlock - Validate unlock attempt
  • POST /games/:id/inventory - Update inventory

Architecture

ERB Scenario Generation

Scenarios are stored as .json.erb templates and rendered on-demand with randomized values:

  • <%= random_password %> - Generates unique password per game
  • <%= random_pin %> - Generates unique 4-digit PIN
  • <%= random_code %> - Generates unique hex code

JIT Ink Compilation

NPC dialogue scripts compile on first request (~300ms):

  1. Check if .json exists and is newer than .ink
  2. If needed, run inklecate to compile
  3. Cache compiled JSON for subsequent requests

State Management

Player state stored in JSONB column:

  • Current room and unlocked rooms
  • Inventory and collected items
  • NPC encounters
  • Global variables (synced with client)
  • Health and minigame state

Testing

rails test

License

AGPL v3 - See LICENSE file for details

Documentation

See HACKTIVITY_INTEGRATION.md for integration guide.

Description
No description provided
Readme 72 MiB
Languages
JavaScript 86.5%
Ink 7%
HTML 2.9%
CSS 2.5%
Ruby 0.9%
Other 0.2%