SIEGE
Build a trap-filled keep. Slingshot-raid other players. Wake up to replays of who hit you overnight.
Devvit package name: siege-keep
SIEGE is the flagship retention game: async PvP with ownership, revenge, and a Night Report of real raids that happened while you were away. Client combat runs on Phaser 4 + Matter.js. Ghost sieges keep the Night Report alive at low population.
Play loop
- Cold open: feed card → expand → raid a seed keep within ~15 seconds (slingshot armed).
- Build: place walls, bastions, flippers, TNT, portcullis, and more on a budget; publish your keep.
- Raid: limited shots per day; steal stone and rating on a breach.
- Hook: next session opens the Night Report (cinematic replays, PATCH / REVENGE).
Stack
| Layer | Tech |
|---|---|
| Client | Phaser 4.2, Matter physics, procedural + painted art |
| Server | Hono, Redis, headless Matter for ghost raids |
| Platform | Devvit Web (splash.html + game.html) |
Setup
# From monorepo root
cd apps/siege
npm install
npx devvit login # Reddit + developer account required
Node >= 22.2 required.
Develop and deploy
npm run type-check
npm run build
npm run dev # playtest (uses dev.subreddit siege_keep_dev if set)
npx devvit upload # or: npm run deploy
npm run launch # upload + publish when ready for review
Project layout
src/
client/ # Phaser scenes (Boot, Splash, Home, KeepEditor, Raid, Replay, NightReport, Leaderboard)
lib/ # textures, keep bodies, replay player, sfx, net
server/ # Hono API, ghost siege, settle, seed keeps
shared/ # types, constants, replay codec (contract between client and server)
public/assets/ # bg, logo, piece sheet art
tools/ # seed generators, ghost tests
devvit.json
Key features
- Matter slingshot raids with piece behaviours (walls HP, flippers, TNT chains, kinematic portcullis)
- Replay codec (packed trajectories) validated server-side (trust boundary)
- Ghost siege cron for AI keep-lords so Night Report is never empty on day one
- Rich art: tabletop keep backgrounds, logo, per-piece textures from art sheet
- Juice: procedural SFX, hit-stop, particles, night report theater
Built With
- matterjs
- phaser-4
