Physics + Rendering + Game: Combat game where the speed of light is very slow - built by Claude Fable

Reddit r/singularity Tools

Summary

A combat game demo built with Claude Fable where the speed of light is artificially slowed, creating relativistic visual effects like light delay and aberration. The implementation uses a vertex shader with camera pose history to compute retarded positions per vertex.

Since Fable is pretty restrictive, games are a great way to test it. I thought this would be an interesting demo as it's unusual enough that it's not possible to be 'benchmaxxed' in any sense. Interestingly, when players appear to disappear, it's because they exit the bubble of 'incoming photons' that you can see. For those of you wondering about usage, I recent restarted my pro plan (not sure if they boost usage limits for people restarting plans), but I got \~250k tokens of usage in claude code within a 5 hour window with Fable. Edit: Interesting, if you go FTL, you actually are able to see behind yourself some how? If you're curious about the technical aspect of the demo, here's a snippet of the explanation by fable. \## The static-geometry model (the core of this demo) We use the "retarded relative position" approximation suggested by the brief, driven by a recorded \*\*camera pose history\*\* \`C(t)\`: \`\`\` t\_emit = now − |P − C\_now| / c (refined once: re-evaluate with C(t\_emit)) P\_apparent = C\_now + (P − C(t\_emit)) = P + (C\_now − C(t\_emit)) \`\`\` i.e. you see each surface point \*\*where it sat relative to you when its light departed\*\*. Properties: \- Stationary camera ⇒ \`C(t\_emit) = C\_now\` ⇒ zero shift ⇒ the room renders exactly normally. The effect appears \*only\* with observer motion, scaled by \`v/c\` — as required. \- Constant velocity ⇒ apparent positions skew toward the motion direction by \`≈ v·D/c\` at distance \`D\` — to first order this is Galilean aberration (apparent direction \`≈ normalize(c·ŝ + v)\`). \- Accelerating/stopping ⇒ the shift is \*not\* a clean velocity term but an integral over the real recorded trajectory, so the world visibly sloshes and settles after you stop, lagging more with distance. This transient is the most striking part of the effect and is impossible with a pure instantaneous-velocity post-process. Implementation: a 512-entry, 20 Hz ring buffer of camera positions lives in a 1×512 RGBA32F texture. The static map's \*\*vertex shader\*\* computes the shift per vertex (two history fetches + one refinement iteration) and moves the vertex; fragment shading (procedural textures, fog) keeps using the \*original\* world position so materials don't swim. The map mesh is tessellated to \~0.5 m quads so the warp bends surfaces smoothly. Rasterizing the warped mesh also produces a \*\*warped depth buffer\*\*, which keeps occlusion of dynamic objects consistent for free. Cost: a few ALU ops and 4–6 texel fetches per vertex — essentially free next to the raymarch. On teleports (reset, camera-mode switch) the history is flooded with the new position; otherwise the renderer would interpret the jump as fictitious fast travel and the world would violently slosh. Toggle \`G\` disables the shift for an A/B comparison of the same scene.
Original Article

Similar Articles

Making Graphics Like it's 1993

Hacker News Top

A developer details building Catlantean 3D, a first-person shooter using 1993-era graphics techniques (256 colors, 320x240 resolution, hand-crafted assets, no AI) with a planned Steam release, focusing on palette rendering and asset creation.