Repo & packages
WAGE is a monorepo. This is the map for anyone reading or contributing to the code (or hand-authoring a game and wondering where it goes).
Layout
Section titled “Layout”wage/├── apps/│ ├── wage-engine/ Deno + TypeScript server (the authority)│ │ └── src/games/ the built-in game bundles ← author games here│ ├── wage-client/ Expo + TypeScript phone app (players)│ ├── wage-web/ GM console (browser; served by the engine)│ └── wage-website/ this marketing site + these docs (Astro)├── packages/│ └── wage-protocol/ shared TypeScript types (the wire contract)└── docs/ internal design notes (not published)The pieces
Section titled “The pieces”apps/wage-engine — the engine
Section titled “apps/wage-engine — the engine”The server-authoritative core: it loads rulesets, runs sessions, holds world state, ticks, evaluates rules, drives bots, and serves the WebSocket + HTTP API. Runs on Deno. The architecture and protocol pages describe its behavior.
Games live under apps/wage-engine/src/games/<id>/ — each a bundle of
game.yaml (or game.json) plus an optional README.md and thumbnail.png. The
engine auto-discovers and validates them at load. This is where you add a game.
apps/wage-client — the player app
Section titled “apps/wage-client — the player app”The Expo/React Native phone app. Players join with a code, stream GPS, and render the world (the five tabs: Map, Chat, Players, Inventory, Settings).
apps/wage-web — the GM console
Section titled “apps/wage-web — the GM console”The browser app gamemasters use to create sessions, place zones on a map, manage bots and items, start/stop, and spectate. Served by the engine.
apps/wage-website — site & docs
Section titled “apps/wage-website — site & docs”This Astro site: the marketing homepage at / and the documentation you’re
reading at /docs (built with Starlight). Deploys to Azure Static Web Apps.
packages/wage-protocol — the contract
Section titled “packages/wage-protocol — the contract”The shared TypeScript types both clients and the engine depend on — the source of truth for the ruleset format and the wire messages:
rules.ts—Ruleset,Condition,Action,Initializer,BotClass,BehaviorNode, item/interaction/visibility types.world.ts— map types,Team,GameTheme, and the runtimeWorld/Player/Item.events.ts— theClientMessage/ServerMessageprotocol.
The Ruleset reference is authored directly from
rules.ts and world.ts.
Contributing a game
Section titled “Contributing a game”Add a bundle under apps/wage-engine/src/games/<your_id>/, include a README.md
(it’s shown to players as how-to-play) and ideally a thumbnail.png, and open a
pull request. See Test & publish your
game.