Systemic narrative design in Ren'Py: choices enter from multiple directions, create persistent state, and come back as later opportunities, costs and callbacks.
Format: Ren'Py interactive narrative · Near-complete
Role: Game & narrative design · writing · branching/state design · Ren'Py scripting & implementation
Focus: Systemic narrative design · branching dialogue · persistent state · fail-forward design
Rooftop Riot is a cyberpunk interactive narrative about an illegal rooftop concert that ends in a corporate raid.
Before the show, the player explores the venue, follows rumours and builds relationships. Those choices create allies, enemies, information and escape options that matter later.
The concert itself is playable, and the crowd state the player creates carries directly into the raid and its aftermath.
Flow: explore → choose → perform → survive → face the consequences.
Player choices create state that pays off later.
A coerced neural-upload encounter can be discovered through five different routes and resolved through multiple approaches and persistent outcomes.
Five entry routes: ambient rumours · abandoned-jacket clue · overheard distress · social lead · direct exploration
Approaches include: intimidation · direct confrontation · public exposure · sabotage · stealth · violence · walking away
Failed combat does not reload the scene; it creates another choice about what the player is willing to sacrifice.
Outcomes persist beyond the scene: the player can create an ally, injure the victim, leave a future enemy alive, gain escape-route intelligence or fail the rescue entirely. Those states are referenced again during the raid and ending.