compw00tergame designer
2026-06-21 2026-06-21-compw00ter-game-style.md

compw00ter — Game Style & Engine Direction

Date: 2026-06-21 Status: Style locked; engine not yet built. Map layout + exact sprites deferred.

Locks the look and the shape of the game client + engine (separate from the PHP Hero Builder, which keeps its current functional admin UI).

Locked decisions

  • Perspective: top-down, walk-around (Among Us-style). Heroes are pixel avatars moved with WASD around a house; travel time and positioning matter.
  • Art era: 16-bit pixel art.
  • Spatial rules: rooms are the incident types. Incidents spawn in the matching room; you walk there to use an ability. Vice stations (fridge/cupboard) are a deliberate detour — buff up, but leave the fires and risk your trait. Bosses (The Wife, The Martin) enter via the front door and drag players toward it.
  • Art production: free/cheap 16-bit asset pack for the house + custom hero avatars made with a character generator.
    • Primary: LimeZu Modern Interiors (16×16, includes a character generator with top-down walk animations) + Modern Exteriors for garden/porch. Name-your-price, usable in any project, credits required.
    • Fallbacks: Cainos Pixel Art Top Down – Basic (free); Kenney (CC0).
    • Heroes: generate a distinct avatar per friend (outfit/hair/accessory keyed to their lore — Tim chef-ish, Eradicus with tech vibe, etc.).

Proposed tech (to confirm)

  • Server (authoritative): Node.js on port 6767, fixed-tick world loop owning positions, collisions, incidents, and game state. WebSocket transport.
  • Client (view + input): browser renders the map + sprites, sends movement/ability intent, interpolates other players. Recommended renderer: Phaser 3 — native support for Tiled tilemaps (LimeZu exports to Tiled), sprite-sheet animation, arcade movement, and a follow camera. (Alternative: vanilla HTML5 Canvas — lighter deps, more hand-rolled work. Recommendation: Phaser 3.)
  • Map authoring: build the house in Tiled (.tmj/JSON), load on both sides — client renders it, server reads collision + room polygons for incident placement.
  • Engine lives in engine/ (already holds the pre-built better-sqlite3); it reads the hero roster from the shared SQLite DB the Hero Builder writes.

Deferred (their own steps)

  1. Floorplan / map layout — exact rooms, sizes, adjacencies, collision. (User wants this as a separate focused step.)
  2. Final sprite set & palette — generate the 10 hero avatars; pick the cohesive 16-bit palette/vibe (cozy SNES vs clean modern pixel).
  3. Renderer confirmation — Phaser 3 vs vanilla Canvas.
  4. Netcode detail — tick rate, snapshot/interpolation, client prediction (LAN makes this forgiving).

How this sits on the existing design

Earlier specs defined the co-op loop (incident queue, vices/traits, bosses) and the roster. This spec re-expresses that loop spatially: the incident queue still exists, but incidents now live in rooms and abilities are used by being present. The docs/.../heroes-and-lore.md counter-web (Jim's astronomy vs The Martin, Eradicus spotting b0n1, etc.) becomes physical — e.g. The Martin pulls toward the door; Jim's Universal Wonder in the garden pulls the other way.