Public working draft. Plans can differ from the current game. Noindex is not access control.

Read raw Markdown

Mara's expedition demo

Route: /demo. Deployed preview, checked September 8, 2026. This is a bounded experiment, not a new live game. Operator testing found missing desktop movement, touch controls shown on desktop, hidden Mara interactions, and stalled input after panels. HUD/input parity is the current priority. Earlier test results below did not cover these failures. See current status (repository reference). The September 8 HUD repair (repository reference) fixes these paths locally and restores the shared sidebar components and icons. It is not yet part of the deployed baseline below. The seeded cave follow-up (repository reference) expands the local first-person preview to 32 chambers and 16 alcoves. The fixed-chamber description below records the deployed baseline, not the newer local cave. The shared wall API remains unchanged.

Included in the deployed baseline
  • Existing Phaser renderer, tiles, props, HAU sprite, and farmer sprite for Mara.
  • A deterministic 96 × 96 clearing. This is smaller than the proposed 400 × 400 region on purpose.
  • A passage to an original Three.js block chamber, with drag-to-look and movement controls.
  • A compact demo PupBRO panel shared by both views. This is not the full live sidebar.
  • A shared barrier with 24 work units. Each confirmed contribution removes part of it.
  • Postgres work events, duplicate command IDs, a row lock, and one opening event.
  • A visible cache behind the barrier. It grants no live items, Coins, or XP.
  • Return to the same pixel scene. No death, combat, timers, or required check-ins.
Boundaries

The fixed chamber is authored, not a general voxel terrain generator. Only the marked barrier is destructible. The demo allows one visitor to finish it; it does not prove a many-player requirement. Visitor cookies count browser identities, not verified people. Polling updates shared work every five seconds. Player avatars are not synchronized. The route uses the Next API and the development database configured for that deployment, not the realtime worker. A production raid needs authenticated presence, distance checks, server-owned tools, world subscriptions, and stronger abuse controls before rewards exist.

The additive migration 202609060001_demo_ruin was first tested in development. The preview later reached staging and production. No live progression tables are changed by demo actions. Saving failures pause work and show an error; they do not silently switch to browser storage. Do not reset the deployed shared wall to manufacture test coverage.

Verification and next steps

Run npm run typecheck, npx eslint components/demo lib/demo app/demo app/api/demo, and npx vitest run tests/demo-ruin.test.ts. Browser checks must cover the walk to the passage, work, reload, duplicate requests, opening, return, and phone layouts. The threshold unit test alone does not verify the database opening transaction.

Release checks: 2,251 tests pass (8 skipped), scoped lint and type checks pass, and the production build passes. A development API stress test reached exactly 24 work with concurrent requests. The static stone shell now uses four instanced meshes. Diagonal movement uses the same speed. Both API handlers have rate limits. These checks do not prove production-scale raid capacity.

Before wider use, add repeatable database concurrency tests for the final contribution, test multiple browsers, verify the cache reveal, and pause the hidden Phaser scene's rendering while retaining its state. The current proof keeps the scene mounted to preserve position and avoid a teardown/resize camera error seen during testing.