Back to Outbreak: Soycoon City
SOURCE / PINNED RELEASE

Made of little things.

Outbreak: Soycoon City

Release
db7750b1d009…
Author-recorded commit
3ee3f5fd27a6…
License
LICENSE
Author’s source reference
nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-b87c04571a9

Archive hash verified: dbebdc772b142a1c…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

docs/game-brief.md
# Outbreak: Soycoon City — first playable

Job: explore a small police department as Soybert, fight a few zombies with a shotgun, and author its rooms and fixed cameras in the same napplet.

## Scope

### Precinct expansion

Add a graphical precinct map beside the room plan: drag room positions, create paired doors between selected wall points, drag door endpoints along walls and delete selected links. Support several well-spaced doors on one wall, with clear arrival areas and reciprocal connections. Moving a room changes only its map position; moving a door invalidates affected artwork. The graph and precise connection fields edit the same map data.

Camera placement uses draggable camera/look-target handles, height and lens sliders, and classic/eye-level/frog presets. Low shots include a ceiling and target Soybert's upper body. Retain numeric controls for exact schema matching.

Expand to six rooms and eight zombies: Evidence Room, Records Corridor, Holding Room, Briefing Room, Forensic Lab and Maintenance Room, linked by seven paired connections with alternate routes. Add editable pinboards, photographs, posters, scattered papers, cleaning buckets/brooms and utility pipes. Dressing is visual; solid furniture retains collision. Shared prompts explicitly preserve this dressing and keep door arrivals clear. Replace the demo's background set with detailed matching shots, with several low perspectives, and use compressed image delivery to stay within the single-file budget.

Authority stays unchanged: no required domains, optional storage/config/fs, bundled artwork, no runtime image-generation API. The evidence-terminal UI and PS1 game palette stay app-owned. Graph tools use pointer/touch input plus form alternatives. Verify topology rules, graphical drag/connect workflows, low camera previews, all six rooms, existing gameplay, SDK roundtrips and the established frame/touch sizes.

Six connected rooms: Evidence Room, Records Corridor, Holding Room, Briefing Room, Forensic Lab and Maintenance Room. Fixed perspective cameras cut when Soybert enters their rectangular or polygon floor areas. Tank controls preserve world-facing direction across cuts. Collision, zombie pursuit, health, six-shell magazine, reload, interaction at connected doors, death/restart and a clear-the-precinct objective form the playable loop.

The editor changes room dimensions, solid props, dressing, zombie spawns, cameras, rectangular/polygon camera areas, map positions and paired room connections. It previews the identical camera and exports a 4:3 edges-and-faces schema PNG plus camera metadata and a derived art prompt. Lighting-only fixtures are omitted from the schema and specified in words. Generated background images can be imported per camera. Changed geometry invalidates its old backdrop. JSON export/import preserves the map and custom art; shell storage saves the geometry, camera and prompt draft.

Later work stays outside this demo: the full sound set, stacked floors, animated door interludes, weapon selection and herbs inventory.

## Visual direction

Semi-pixelated PS1 graphics: static 4:3 compositions, a default 480×360 render (320×240 and 640×480 options), nearest-neighbor scaling, low-poly actors, chunky textures and subtle dithering/scanlines. Detailed backgrounds retain a late-1990s prerendered survival-horror feel. Restrained olive/umber stone and institutional teal, fluorescent pools, heavy shadow and modest character scale. Walls are 3.2 m; zombies are 1.90 m; Soybert is a tall narrow 1.78 m tofu character modeled after src/soy-mascot.png, with cream body, dark face, rosy cheeks and a brown-stock pump shotgun. Rooms use human-scale doorways and furniture. The floor remains navigable rather than filled with decorative obstacles.

The UI resembles a precinct evidence terminal: near-black surfaces, hairline brass borders, compact monospace labels, warm serif room names, a green ECG health display, red danger and understated rectangular buttons. Game and UI use app-owned colors in every host theme. No host palette subscription.

Representative frame: Soybert facing an approaching zombie in the Evidence Room, with fixed-camera label, health, ammunition and floor plan visible. Touch controls appear on phones; landscape keeps the scene beside compact controls. At 200×160 show a useful minimum-size notice; gameplay resumes when the frame grows. Full play needs at least 280×300; editor panels scroll and collapse at phone widths.

## Boundary contract

- requires: [] — play and editing need no privileged shell capability.
- storage (optional): scoped draft save/load through SDK; missing/failed persistence is visible and editing remains usable.
- config (optional): render resolution and scanlines; local defaults if absent. Reduced-motion preferences are respected by CSS.
- fs (optional): host-owned session file copies for map/art imports and exports; no direct device paths or download authority.
- No identity, signing, social reads, relay escape hatch, external network, backend or cross-napplet communication.
- All code, mascot and selected demo backgrounds are bundled. No runtime image-generation service is assumed. Schema + prompt export and background import are the artist handoff.

## Image contract

Master style is editable and stored with the map. Each prompt includes room name, description, camera position/look target, 4:3 lens, exact geometry preservation, and prohibitions on characters, HUD, changed door positions and invented floor obstacles. Gray schema geometry controls perspective; a generated backdrop is artwork, while matching invisible room geometry controls actor occlusion. Generation can drift: inspect each image against the schema before importing.

## Verification

Run guidance, rule tests, TypeScript, single-file build, conformance and soyLI check. Hosted scenarios cover movement, camera cuts, shotgun/reload, collision, paired doors, editing/preview, SDK draft save and schema export. Check 200×160, 320×560, 900×600, full screen and touch portrait/landscape, both host themes and absent optional domains. Record skips and real-device gaps separately.

## First-batch audio playback

The existing audition subset now uses embedded, normalized MP3s and native Web Audio.
See [audio-brief.md](audio-brief.md) for activation, HUD, event and lifecycle decisions.
The production catalogue remains planned for the full recording pass.

## Current asset delivery

All 32 camera views were regenerated from the current schemas on 2026-10-06 with the built-in image generation tool. Final delivery is 640×480 JPEG in `src/art/`; exact prompts, schemas and hashes are checked in. The earlier PNG and art-v2 sets were removed. Audio retains only the 33 selected runtime MP3s, with provider prompts/settings and historical hashes. WAV/download duplicates and superseded takes were removed at the user’s request. No generation service or new host capability is used at runtime.