SOURCE / PINNED RELEASE
Made of little things.
Supersonic RC Revive
- Release
- 1ba42f1ca1d6…
- Author-recorded commit
- baecad10b1cd…
- License
- LICENSE
- Author’s source reference
- nostr://npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr/wss%3A%2F%2Fgit.napplet.soy%2F/n-143146b0d6f
Archive hash verified: 90d22b206672eba4…. The source-to-build association is the author’s claim; it has not been independently rebuilt.
# Local multiplayer build brief
Purpose: one to four controller-driven RC cars sharing the current level.
Free Driving automatically switches to local multiplayer when a second supported
controller appears while driving, preserving P1’s position and orientation. One
controller retains the existing keyboard/touch Free Driving flow. Local Multiplayer
on the challenge menu also starts a session directly. A standard-mapped controller
joins as soon as the browser exposes it, without a lobby or join button. A
controller disconnect removes its car, sound channels and viewport. Extra
controllers wait for a vacancy. Browser indices may have gaps; assignments use
indices, never the order of samples. Replacement in the same index replaces the
car. Remaining players keep their P1–P4 labels and cars.
The napplet owns native Gamepad input, session state, physics and rendering. No
new NAP domains, network transport, backend, identity or manifest requirements
are needed. Existing assets, storage and optional host integrations retain their
existing boundaries. No relay escape hatch is used.
Input is polled once per animation frame. Each controller feeds a separate Input
instance. DrivingManager steps one shared physics world, then all cars/cameras.
Removal clears pending forces and collision interests before removing the body.
All views draw the same scene through viewport/scissor rectangles. Car visuals
share geometry/textures and own tinted body materials. Engine/turn/crash channels
are per player; music is per session. Existing fall/flip recovery runs per car.
Visual direction: preserve the original arcade scene and Verdana HUD. Small
numbered P1–P4 badges match yellow, blue, pink and green car tints. Game colors
remain app-owned in either host theme or without theme support. One player fills
the frame, two use a horizontal divider with P1 above P2 in either orientation,
three/four use a 2×2 grid. Three leave one black panel. Labels remain readable
without relying on color. No new minimum is declared; test 200×160, 320×560,
900×600, fullscreen and touch portrait/landscape. The shared Menu control has a
44px minimum height and pause controls wrap in short frames.
Focus loss clears all driving input and pauses until explicitly resumed. A
controller disconnect removes only that player. Menu/Esc pauses; the pause menu
has Resume and Return to menu. With no controllers, show a connection prompt;
blocked/unavailable input offers returning to single-player. Unknown mappings
are reported and excluded. Local play is free roaming: challenge rules,
collectible competition and progression are deferred.
Verification: pnpm verify includes controller routing, cap, removal/replacement,
shared stepping, pause/focus and viewport tests. Run pnpm test:conformance and
soyli check separately; hosted browser tests use synthetic standard controllers.
Physical Xbox USB/Bluetooth controllers require separate hardware testing.
Implementation validation: pnpm verify passes (7 guidance, 10 level and 7 local
multiplayer tests, type-check and build). Local multiplayer tests initialize the
same stripped WASM used by the browser build, including removal of rigid bodies.
pnpm test:conformance reports 6 passed, 0 failed and 4 skipped (manifest evidence
and lifecycle teardown). Earlier hosted synthetic checks rendered four separate
cars/cameras at all six planned frame sizes; a subsequent removal failure exposed
missing WASM exports, now retained and covered by the optimized-WASM tests.
Final hosted/hardware smoke testing is handed to the creator at their request.
No publication was performed and the agent's preview is stopped.
Hot-plug fix: Free Driving previously merged all pads into one car. It now
transitions to separate cars/cameras at two controllers, then continuously adds
and removes players during driving. Native poll and Free Driving transition
regressions cover this path. Console logs use [controllers] for browser connection
changes and [multiplayer] for player assignments, removal and mode transition.
Follow-up hosted regression: Free Driving automatically entered split screen on
the second synthetic standard pad; third/fourth pads joined while driving.
Top/bottom layout, disconnect, vacancy reuse, empty roster, rejoin, pause and
return to menu passed with no browser errors. Panel bounds passed at the four planned frame sizes and touch
portrait/landscape dimensions; label colors remained app-owned in light/dark
media emulation. Actual touch interaction and host-theme switching were not retested. Physical Xbox detection remains a manual check.
Player locator markers: each local car has a camera-facing translucent P1–P4
badge and downward pointer in its assigned color, positioned above the car.
Depth testing/writing are disabled and badges render after the scene, making
them visible through walls. Screen-relative sizing keeps distant badges visible.
Removal and scene disposal release each badge’s texture and material. Physical
play and through-wall marker appearance are left for the creator’s smoke test.
