Captured worlds.
Generated presence.
Can a first-person game feel photographic without building a conventional 3D weapon? A playable experiment in Gaussian splats, generated footage, and responsive simulation.
Enter the experiment →Streamed Gaussian splats capture the static scene’s appearance. Published voxel data supplies solid ground and ray hits.
Generated hands and weapon footage become keyed screen-space frames, driven by a layered input and animation state machine.
Camera motion, recoil, sound, collision and post-processing respond to the player—not to a generative API request.
Project thesis
The ambition was a lifelike FPS prototype: photographic static environments, film-like first-person footage, and controls that stay immediate. The user supplied creative direction and repeated hands-on feedback; GPT-6 Astra implemented, tested, inspected and refined the project, with delegated specialist and adversarial reviews.
“24 hours” describes the experiment’s initial development window, not an audited productivity benchmark. Cleanup and continued refinement extend beyond that snapshot.
What came together
A playable browser prototype now combines four network-streamed places, low-ready and ADS views, walking, sprinting, crouching, firing modes, reloads, magazine management and slow ammunition repacking. Elastic free-look, recoil compensation, synchronized footsteps and scene-based weapon brightness help connect the generated foreground to the captured world.
The rendering stack includes a shared linear-HDR world/weapon composite, highlight compression, color grading, center-protected peripheral focus and motion blur, temporal antialiasing and sharpening. Sliders make the choices inspectable. Interactive balls and an experimental zombie encounter exercise collision, hit detection and dynamic actors.
Generated video → extracted production frames → state machine
World + keyed weapon → shared composite → cinematic post → display
The outcome—not the promise
The central idea works as a playable prototype: a generated screen-space performance can coexist with freely navigable 3D splats. The difficult part is continuity—matching poses, keeping sights readable, handling interrupted actions, hiding frame edges and maintaining convincing motion under arbitrary input.
This is not a finished shooter, an ARRI camera simulation, or proof that splats outperform rasterization or path tracing. There is no controlled renderer benchmark. Captured lighting is largely baked, generated frames cannot supply arbitrary weapon viewpoints, and scan quality varies. Dynamic-actor occlusion, temporal artifacts, performance across devices and asset licensing still need production scrutiny.
The film-look ledger records 8 completed review cycles at this handoff, not the requested 50. Further optics work remains open; no independent feature-film quality certification is claimed.
Try it thoughtfully
Use a modern desktop WebGPU-capable browser. Enter a level, then click to capture the mouse and enable sound. WASD moves; Shift runs; C or Ctrl crouches; Space jumps. Left click fires, right click holds ADS, R reloads, and holding R repacks ammunition. V changes fire mode; F throws a ball; G revives defeated zombies; ~ returns to spawn.
Levels load over the network and are not bundled here. Custom SuperSplat URL import is local-development only in this release: run npm run dev from app to enable it. The importer checks scene format and voxel metadata; scenes without colliders use free-fly mode. GitHub Pages offers the featured scenes, with custom URL import clearly disabled. Self-hosters can enable it by deploying and configuring the optional resolver.
A small release, not a thousand loose frames
The production frames, sound and models ship in three verified ZIP packs, about 59 MiB. The browser unpacks them in memory and caches the archives when storage is available. Levels stream separately from their publishers. This keeps source generations and downloaded geometry out of the repository, but does not make the experiment an offline game.