Source — Royal Orbit Spatial Site v1 (live) · src-royalorbit
Owner directive (2026-07-10), canonical. "Sites level AWWARD, SPATIAL SITE, ROYALORBIT THE FIRST BETTER THAN MONT-FORT, perfomance awesome, you may have loading, no worries, but the experience should be pristine." [src: wiki/development/prompts-archive/by-topic/knowledge-management-and-concept-modeling.md:652]
Content
Absorption card for the live v1 at https://royalorbit.mainland.so (static vhost /var/www/royalorbit, deployed 2026-07-10 — see src-droplet-index #5). Source tree: HOS/web/royal-orbit (Vite + TypeScript). This is the implemented ancestor of kernel-spatial-site — its src/engine/contracts.ts is byte-identical to the HOS-Instance engine package.
Engine facts
- Architecture: "one fixed WebGL canvas (Gaussian splats via @sparkjsdev/spark) behind normal DOM sections. DOM sections define scroll length; a master Lenis+ScrollTrigger scrub produces
pageProgressin [0,1]; chapters map sub-ranges of that progress to camera keyframes through their splat worlds" [src: web/royal-orbit/src/engine/contracts.ts:6]. - Engine modules:
renderer, loader, quality, scroll, theme, director, camera-path, progress-map, fallbackundersrc/engine/; scenes undersrc/scenes/(hero, manifesto, fog-flight, divisions, connectivity, stewardship, finale, dust);raf-guard.tsguards the request-animation-frame loop. - Quality: tiers
desktop|mobile; DPR laddersdesktop [1.75…0.7],mobile [1.25…0.5]; soft visible-splat budget 700k desktop / 300k mobile [src: web/royal-orbit/src/engine/contracts.ts:143,149] — the numbers behind bm-002-splat-budget. - Splat format: antimatter15 layout, 32 bytes/splat, decoded natively by Spark's
SplatMesh({ fileBytes })[src: web/royal-orbit/src/engine/contracts.ts:154]. - World layout: disjoint per-chapter slabs along −Z, hero
[0,-200]… finale[-2000,-2200][src: web/royal-orbit/src/engine/contracts.ts:179]. - Theme: dawn→night
THEME_ARC(#F5EFE0→#080600), gold#d4af37/ bronze#b8860b[src: web/royal-orbit/src/engine/contracts.ts:83,94]. - Fallback: no WebGL2 →
showFallback;reducedMotionhonored [src: web/royal-orbit/src/division.ts:48].
Chapters (the 7 slices of v1)
hero (dawn dunes + wordmark, 250vh) → who-we-are (250vh) → fog-flight (200vh) → what-we-do (4 division pods, 800vh) → connectivity (night globe, 300vh) → stewardship (500vh) → finale (starfield + CTA, 150vh) [src: web/royal-orbit/src/engine/contracts.ts:40] [src: web/royal-orbit/index.html:114].
Splat asset manifest (version 1, generated 2026-07-09)
11 assets: dunes (250k/90k splats), fog-1..fog-4 (25k/8k each), pod-trade, pod-gold, pod-atari, pod-energy (~150k/50k each), earth (91k/38k), finale (120k/40k) — per-tier files/bytes/counts/bounds per entry [src: web/royal-orbit/public/assets/splats/manifest.json:1]. Generated offline by scripts/gen-splats/. These ids are the vocabulary of the v2 strand — genome-spatial-site.example.json may only reference them (genome-spatial-site determinism rule 1).
Division subpages
/trade /gold /atari /energy — each boots its pod splat from a new angle with per-division fog mood (trade #EDDFC0, gold #E2C98F, atari #2A2013, energy #171106) [src: web/royal-orbit/src/division.ts:22]. These carry the venturebook divisions.
Serving
Static nginx vhost; splats cached 30d (versioned via manifest, not content-hashed), other assets 1y immutable [src: HOS-Webdoc/deploy/nginx/royalorbit.mainland.so.conf:10]. Note the duplicate server_name claim documented in src-droplet-index fact 2.
Composition
- uses: gaussian-splatting + spark-renderer (rendering), src-droplet-index (serving)
- used-by: kernel-spatial-site (contracts extracted verbatim), cogni-spatial-site (arc grammar extracted from THEME_ARC), genome-spatial-site (asset vocabulary), bm-002-splat-budget (budget numbers), cb-patterns-royal-orbit (patterns), district-spatial-site (v1 baseline that v2 must surpass)
See also
- bp-001-spatial-site — the blueprint generalizing this site
- holonprint · slice · biome