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

  1. Cold open: feed card → expand → raid a seed keep within ~15 seconds (slingshot armed).
  2. Build: place walls, bastions, flippers, TNT, portcullis, and more on a budget; publish your keep.
  3. Raid: limited shots per day; steal stone and rating on a breach.
  4. 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
Share this project:

Updates

Submission history