SOURCE / PINNED RELEASE
Made of little things.
GRAV / RIFT
- Release
- 288aa261ce07…
- Author-recorded commit
- c549b5a4e17e…
- License
- LICENSE
- Author’s source reference
- nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-8a7361981e8
Archive hash verified: e52a01aff70810b3…. The source-to-build association is the author’s claim; it has not been independently rebuilt.
# GRAV / RIFT — playable proof of concept
A physics-driven horizontal salvage shooter without a conventional player gun.
Deployment name: physics-type. New product on the installed TypeScript substrate.
## Playable scope
One authored scrapyard tunnel leading into an open reactor bay. Fly with inertia,
hold a gravity field to capture debris and release to throw toward the aim point.
Three modes: Orbit (spinning shield / broad volley), Compression (charged cluster),
and Rip tether (focused, faster armor extraction). Drones and wheeled sentries drop
scrap and volatile cells. A walking boss has articulated legs, six independently
attached armor plates, breakable spring joints and an exposed vulnerable core.
Impact fractures large scrap into smaller parts. Salvage buys three field upgrades.
Run win/loss/retry and optional stored personal best. Practice mode has regenerating
hull. No claim of continuum soft-body deformation: morphability is a detachable
rig of rigid convex pieces. No multiplayer, public scores, or external assets.
## Sandbox contract
nappletType: physics-type
purpose: prove gravity-driven salvage combat
NAPs used: storage (optional personal best and sound preference)
requires: none
optionalDomains: storage (advertised in napplet.json; published as O)
SDK helpers: storage.getItem / storage.setItem
Fallback: session-only best and settings; all gameplay remains available.
No network, social operations, identity requirement, or relay escape hatches.
No config schema settings; local controls operate sound and reduced effects.
Data: grav-rift.best.v1 and grav-rift.sound.v1. Storage errors visible in pause panel.
Assets: original deterministic pixel atlas generated in-app; alpha silhouettes feed
convex hull extraction. All code and assets folded into one HTML file.
Publication: soyLI creates the standalone NIP-5D manifest from napplet.json and
the built HTML hash. No intents or cross-napplet integrations are implemented or
advertised. See [manifest metadata](napplet-manifest.md).
## Visual direction
Considered bright orbital salvage and underground industrial archaeology. Chosen:
industrial archaeology, with a tiny mint-lit salvage tug dwarfed by rusting rigs.
Scene: layered near-black green industrial tunnel, broken girders, sharp pixel
sprites, amber warning lamps, dense sparks and pale mint gravity arcs. The reactor
boss is assembled visibly from salvageable armor with orange/red threat markers.
UI: off-white bold condensed system type, tracked monospace instrumentation,
rectilinear plates, small serial labels, amber action buttons, segmented hull bar.
Colors: void #0a1113; panel #101d1f; mint #a5ead3; amber #f3b65b; danger #ec755f.
Motion: momentum, rotating captured parts, restrained impact shake, pixel exhaust;
reduced-motion removes shake/ambient motes and simplifies field decoration.
Theme: entirely app-owned (FOLLOW_HOST_THEME=false), identical in both host themes
and without the theme domain. No theme subscriptions.
## Layout and inputs
Canvas fills the working area with a slim top HUD and bottom field-mode dock.
Desktop: WASD/arrows; pointer aims; hold left click or Space to collect; release to
throw; 1/2/3 modes; P/Escape pause; U upgrades. Controls are local to the iframe.
Touch: simultaneous left joystick and right hold/release field; nearest threat aim;
all three mode buttons remain reachable. Portrait uses a taller camera composition.
Minimum 280×280: below that a readable resize notice pauses the run without reset.
Test 200×160 notice, 320×560, 900×600, 1440×900, 390×844, 360×640, 844×390.
Pause on lost focus/visibility, clear all held inputs on cancel/orientation/pause.
Startup shows an animated representative world and brief deployment instructions.
Proof frame: a violent aimed vortex ahead of the tug, holding a swarm of debris.
## Aim-directed vortex revision
The tug faces the mouse; every gravity mode projects its focus 165 world units
along that direction. Capture and armor extraction use that focus, matching the
rendered spiral. Touch and keyboard-only play retain nearest-threat aiming.
Orbit runs at 14 radians/second (formerly 2.2), with sharp attraction and rapid
individual tumbling. Faster compression and bounded forward volleys preserve aim
with arbitrarily large payloads. Upgrades improve reach and field power.
There is no carried-part cap or scene body-count cap. Only spent off-screen
wreckage is cleaned up. Collision groups avoid enumerating held/held and
same-volley pairs; cosmetic particles remain bounded. HUD shows a part count.
No sandbox, host-domain or theme-policy changes. Reduced effects omit decorative
motion trails/streamers and freeze spiral decoration, while physics stays identical.
## Expanded wreck site
The stage grows to 4800×1000 world units, with a smaller tug and 224 initial
pieces of mostly smaller scrap. Enemies patrol several heights across the longer
corridor. The boss remains grounded at the far end. Camera framing shows much more
space on desktop; short landscape frames track vertically to keep the tug readable.
Flight speed increases to explore the larger space. HUD and touch controls retain
their screen size. The aimed, violent vortex and uncapped payload remain intact.
## Foundry, demolition and volatile salvage
Two selectable sites: Foundry (default, strong downward gravity and floor scrap)
and Orbital graveyard (true zero gravity and floating scrap). The tug auto-hovers;
released cargo and torn structures obey the site's gravity. Retry retains the site;
the pause/results panel can return to site selection. No new host capabilities.
Foundry uses the same industrial palette with warm floor lighting, visible bolted
steel towers and salvage racks. Their connected supports hold them together until
the field or an impact breaks a joint; unsupported sections become falling convex
bodies that can hit enemies and be reclaimed. Explosive cells drop from 35% of
destroyed small enemies. Loose cells remain collectible; throwing arms them for
first-contact detonation. Hard impacts and nearby blasts also trigger loose cells.
Blast feedback: bright local fireball, expanding pressure ring, fast sparks,
smoke, directional debris impulse and a synthesized bass/noise impact. Reduced
effects suppress shake, flash and decorative streaks. Proof frame: a collapsing
Foundry tower, burning cell and airborne salvage. Preserve the existing HUD size,
touch inputs, uncapped payload and app-owned theme policy.
## Medium artillery walkers
Three medium walkers patrol the floor in both sites. Their broad rust-red bodies,
four articulated legs and rotating cannon distinguish them from wheeled sentries
and the larger Warden. Planted feet push loose scrap aside while the body walks.
A visible cannon charge precedes a slower, catchable explosive shell. Shells are
convex physics bodies: hostile orange/red, secured or returned mint. All gravity
modes can catch them, suspend their fuse while held, then release them back toward
the aim point. Returned shells can destroy their original shooter and yield salvage.
Uncaught shells explode on impact or when their fuse expires. Existing cell rules
remain unchanged. No new controls, host domains or external assets. Proof: a walker
firing, the tug catching its shell, then a return shot destroying the walker.
## Surgical gravity and independent discharge
The current interaction and shared rig contract is in
[rigging-and-gravity.md](rigging-and-gravity.md). Four fields (including Surgical)
combine with three release patterns: Volley, Stream and Clusters. Mouse buttons
separate capture from discharge. Tab opens a 5%-speed radial selector. Both Strider
and Warden use the same mounted-part graph, leg capability accounting and violet
gravity-shield cells. Surgical extraction permits lifting and hurling living rigs.
Original collection, cell detonation and boss armor rules remain. Prediction and
ricochet visualization are reserved for the later bullet-time revision.
## Independent gather and fire controls
RMB/Space gathers and holds; releasing it drops cargo. LMB/F is the only firing
input. Hold both for continuous intake and aimed Stream/Clusters output, in either
press order; stopping fire keeps the gathering field active. Surgical uses the same
RMB grab/drop and LMB hurl mapping. Touch FIELD and FIRE mirror those independent
actions. Preserve the existing industrial scene, HUD layout and app-owned palette;
no new host capabilities, dependencies or persistent settings.
