Skip to main content

Selected systems

The Promoter

2026 · Game Engine · Prototype / demo

A content-as-data game engine: encounters, cities and economy live in JSON so the product can change without a scene-graph rewrite.

Client-only Vite SPA with a PWA service worker. No accounts, no backend, no live industry data. Progress lives in localStorage. A debug panel ships because the game is still being balanced in the open.

Delivered

JSON catalogs, applyEffect-only mutations, a React client and a seeded headless Vitest sim sharing one engine. Client-only; progress in localStorage.

ReactTypeScriptViteTailwind CSS
The Promoter game screenshot

Problem

Every gameplay tweak meant a code refactor. Designers could not retune a beat without engineering in the loop.

Build a systems-heavy browser RPG where encounters, economy, and story share one effect list, so adding a beat in JSON changes the tour without a scene-graph rewrite.

Intervention

Scenes are JSON. TypeScript loads, validates, and picks eligible beats; state mutates only through applyEffect. Economy and story share the same effect list. Afterparties and ambient shocks stay in TypeScript but still exit through applyEffect.

Constraints

  • Client-only Vite SPA on Vercel. No accounts, no backend, no live industry data
  • All cities, encounters, and disasters are authored fiction; progress in localStorage
  • The same engine must drive the React client and a seeded headless sim

Result

Catalog today: 52 encounters, 30 cities, 12 problems, 16 traits. Retune a beat in JSON and the tour changes without a UI rewrite.

Gameplay design stays continuous when content is data: JSON packs update narrative and economy without a scene-graph rewrite.

Screen breakdown

The Promoter feature 1
Start overlay on a live desk: band name is data, the catalog is already loaded
The Promoter feature 2
Road beat, city meters, and economy HUD. State mutates only through applyEffect
The Promoter feature 3
Tour program from the city catalog: 30 JSON stops, not a scene graph

Start a conversation

Tell us who you are and what you need in a few lines. We reply with whether Iron Signal Works is the right fit and what a sensible first step looks like. Ranges and terms sit in pricing & terms.