SOURCE / PINNED RELEASE
Made of little things.
Napplet Machines V8
- Release
- b3f614e739f0…
- Author-recorded commit
- 534f19acb4ba…
- License
- LICENSE
- Author’s source reference
- nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-b5572362d4a
Archive hash verified: 0f7feb97e2c3d336…. The source-to-build association is the author’s claim; it has not been independently rebuilt.
# Pocket Circuit — build contract
Purpose: make, drive and race miniature 3D circuits with up to six players.
- Three-lap races, quick checkpoint respawns, four car setups, AI fills empty seats.
- Physics: fixed 60 Hz, front/rear tire slip forces with finite traction, a smoothed
steering rack and yaw inertia. Space/touch handbrake releases rear grip for drifts;
countersteer and release to recover. S/down provides service braking and reverse.
Oriented chassis contacts use mass, contact position, bounded friction and yaw
inertia; rear impacts push through the bumper rather than a circular proxy.
Suspension follows road-relative vertical velocity; chassis pitch/roll follow the
surface in the car's heading, including at rest and in reverse. Gravity, crest
launches and quick recoveries remain. This is a lightweight driving simulation
tuned for playful racing, not a full automotive simulator. Protocol v5 carries
steering and handbrake state for deterministic prediction and reconciliation.
- Input: keyboard, native standard-mapped gamepads and two-thumb touch controls.
Controller slots are claimed with a fresh bottom-face-button press; triggers are
analog, the left stick / D-pad steers, east face drifts, north face recovers and
Menu pauses local races. Shoulder buttons choose cars and D-pad up/down chooses a
course in the garage. Disconnect clears input and pauses local racing; reconnect
requires an explicit claim. No new NAP or hard capability requirement.
Touch uses a spring-centred analog steering bar and a single sliding pedal pad:
gas, service brake/reverse, or gas plus handbrake. Only these two controls occupy
the bottom thumb zones; race actions, camera and HUD stay at the top. Pointer
cancellation, resize, blur and pause clear inputs. Existing keyboard controls remain.
- Track model: versioned closed cubic Catmull–Rom spline (equivalent cubic Bézier
segments), editable XY knots, Z elevation and width at each knot. Width blends
smoothly between knots. Add-point mode places a knot at the clicked XY location,
splitting the nearest section and inheriting its elevation, width and walls.
Each point owns the following section's wall toggle and thickness (0.3–2 m).
Walls straddle the road edge, have solid tops/end caps and matching collision
boundaries. Select sections directly in the plan to edit their walls.
Version 3 widens version 1/2 saved drafts by 30% exactly once, preserving
their other point and wall settings. Point widths range from 5 to 20.8 m. Multiplayer
uses a new game protocol identifier so incompatible track formats never mix.
Drawing creates knots; sampling, collision and 3D mesh share the same geometry.
- Procedural low-poly cars, trees, rocks and track; no remote assets or engine loaders.
- NAPs: optional storage for drafts/settings; CVM for
named Soy rooms; WebRTC for game messages. No relay escape hatches. No hard requires:
local AI racing and editor work when multiplayer or storage is unavailable.
- Backend context is generated by soyli, never authored. Rooms use soy.rooms.v1.
- Authority: room creator; membership validated against CVM. Explicit peer allowlists,
reopened on membership changes. No host migration; host departure ends the session.
- Networking: host star, 20 Hz snapshots, 30 Hz input batches carrying 60 Hz sequenced
commands. Host processes each command once; guest replay/reconciliation; interpolated
opponents. Bounded queues, stale packet rejection, no direct networking APIs.
- Track transfers are room control messages. Personal drafts use NAP-STORAGE. This
iteration does not promise a public track catalogue or power-ups.
- Art direction: toy-box Grand Prix. Saturated coral, electric blue, lemon yellow,
aqua and lime; dark ink outlines, checkerboard tabs, racing stripes and chunky
sticker-like controls. Bungee display lettering and Nunito Sans UI are bundled
with their OFL licenses. Garage/car details use the selected car's color; rooms
use blue; workshop tools use yellow/aqua. Compact 13px tools; touch controls
grow to 44px. No duplicate app name/masthead.
- Scenery: bright molded-plastic playset, colorful trees, flowers, rock clusters,
course banners, a checkerboard start gantry and seeded trackside pit garages,
grandstands and timing towers. Building footprints stay clear of every road section;
identical track geometry generates the same scenery on every client. Each preset has its own art
palette. Cars have contrasting racing liveries, wheel hubs and distinctive body
details. HUD uses opaque readable race plates over the scene. Decorative scenery
stays clear of the track and introduces no new collision or game rules. A layered
island shoreline, offshore islets, waves, sailboats, faceted hills and richer ponds
give the race a miniature landscape backdrop. Geometry is static and bounded.
- Tiers: compact stacks garage and scene; regular/wide have side tools; editing shows
plan and live 3D together when wide. Minimum 280×240 because driving and spline
manipulation need separated input targets. Below: concise resize notice; state lives.
- Theme: app-owned midnight violet (#282044) on html/body/root and surrounding
interface, with warm cream text and the existing vivid racing accents.
Host light/dark changes leave the UI and course palettes intact. Reduced motion disables interface
entrance effects. Loading/errors inline; denied rooms and failed saves are retryable.
Verification: upstream guidance/type/build/conformance, deterministic physics/geometry
tests, soyli host check, independent-browser six-player latency scenario, editor/save
and touch scenarios, specified frame sizes and both themes. Internet/TURN and real
phone testing are reported separately from local browser evidence.
## Larger circuits and corner geometry
The workshop supports a 260 × 260 m control-point area (twice the previous span
on each axis), with plan framing and the island/camera derived from the circuit.
Existing drafts retain their coordinates, elevations and section settings. Seven authored
courses mix broad passing straights, technical esses, elevated/open sections and
an over/under crossing. Original courses also receive deliberate width and wall
variation. The toy-box art, two-thumb layout and app-owned theme policy are retained.
Tight inside turns close into a rounded, filled pocket instead of tapering the
road. The geometry removes local loops from the offset boundary and rounds the
join. Point widths are retained; only overlapping inner corners are joined.
The road mesh, thick wall boundary and exact triangle-based driving surface share
that result, including elevation. Distant branches and overpasses stay separate.
Curve sampling follows bend angle and segment length; spatial buckets bound road
and wall contact costs. Drafts use version 3; room protocol v5 separates clients
with older generated collision geometry. No new NAP domains, dependencies, network
paths or persistence keys are needed.
All seven presets have 30% wider roads, retaining their relative width variation.
Earlier saved drafts widen once on load, then save in version 3; current drafts
round-trip unchanged. The editor ceiling increases from 16 to 20.8 m, with 0.05 m
adjustments to accommodate migrated half-metre widths.
