Generated assets, static traveler

The completed asset-assisted experiment.
Can better lighting and a walking character close the gap? Play the new pass and see what the extra work buys.
An experiment from the team behind OhMyUnicorn Forge.
The latest preview now adjusts its resolution automatically, reuses water reflections between updates and refreshes smaller shadow maps less often. Use the quality menu inside the scene to choose Auto, Smooth or High detail. The FPS counter reports that browser’s current frame rate.
The character previously slowed down whenever rendering dropped below 20 FPS. Movement now covers the same distance per second at simulated 10, 20, 30 and 60 FPS. Long stalls above 250 ms are capped to prevent a sudden jump; hidden tabs stop movement.
| Software rendering test | Before | After · Auto |
|---|---|---|
| Median frame time | 1558 ms | 482 ms |
| Mean frame time | 1559 ms | 488 ms |
| 95th percentile frame time | 1578 ms | 584 ms |
Same 1280 × 900 viewport and Chromium software renderer, tested sequentially. Auto reduces internal resolution under load, so this is a practical performance/quality tradeoff. Software rendering remains slow. These results do not establish FPS on your device. A server hardware-rendering attempt lost its graphics context and was excluded.
The courtyard’s assets and lighting are retained. This repair improves rendering cost and responsiveness; it does not close the remaining artistic gap with the original demo.
Published repair: 12 min 11 s after work started. In the public software-browser check, first frame submission was 3.83 s after navigation; the first frame with loaded assets was 5.33 s. These measure draw submission, not completed GPU work or first paint on your device.
Repair start: 2026-09-11T09:54:44Z. Ledger cutoff: 2026-09-11T10:11:37.001162+00:00 (16.9 minutes). Root Astra only: 2,438,360 input tokens, including 2,242,944 cached; 27,375 output tokens. $5.566 API equivalent, using official Astra rates. Later responses are excluded. No new asset-generation calls.
Subscription meter: 46% → 46%. Rounded account-wide seven-day allowance; exact attribution to this repair is unavailable. Earlier lane and polish costs remain frozen.
Frame-time measurements · Movement timing checks · Published controls checks · Mobile touch checks · Repair ledger · Source and timing record
A darker courtyard, warm firelight, wet reflections and a traveler with moving legs, arms and cape. The earlier scene remains playable alongside it.

The completed asset-assisted experiment.

Press Play, then use arrows or WASD / ZQSD. Click / tap to walk, X to stop, drag to orbit, scroll / pinch to zoom.
Lighting and composition make a larger immediate difference than simply supplying another detailed mesh. Walking now articulates the character’s limbs and deforms its cape. The remaining gap is in asset variety, natural surfaces, vegetation, effects and the finish of the character itself.
This is a separate polish exercise, not another controlled lane. We changed the visual target to the darker courtyard in the author’s demo and used one fresh Astra low-effort builder with Astra direction and verification. The generated arch is reused; the static traveler is replaced with an articulated model authored in code. No new asset-generation call was made. Historical A/B/C/D results are unchanged.
| Milestone | From task start |
|---|---|
| First complete scene captured | 6m 50s |
| Controls & animation validated | 16m 34s |
| Embedded preview & mobile validated | 19m 27s |
| Scene published | 14m 23s |
| Report and accounting cutoff | 21m 10s |
On the first local navigation, the first WebGL draw was submitted at 4.68s and the first draw with the loaded arch at 9.40s. The complete screenshot was saved at 25.02s. Draw submission is not a measured browser paint or GPU completion; the captured scene is the evidence of visible rendering. This browser used software rendering; hardware FPS was not measured.
| Work | Input | Output | API equivalent |
|---|---|---|---|
| Scene builder Astra | 953.1K in 907.1K cached subset | 12.1K out | $1.972 |
| Direction, checks & publication Astra | 3,178.7K in 3,076.2K cached subset | 31.8K out | $5.690 |
| Total | One additional pass, including delivery work | $7.662 | |
Input includes cached tokens; output includes reasoning. Standard Astra API rates are an equivalent, not a subscription charge. Existing assets and hardware costs are excluded. Cutoff: 2026-09-11T09:11:10.255436+00:00; later responses are excluded.
Subscription meter: 44% → 45%. This rounded seven-day reading covers the whole account, including concurrent activity. Exact consumption by this pass or model is unavailable.
Token & quota ledger · Timing evidence · Movement & pose checks · Preview controls · Mobile checks · Walking capture · Scene source
Press Play on a preview to control the scene, or open it full screen. Move with arrow keys, WASD / ZQSD, or click / tap. Drag to orbit, scroll / pinch to zoom, and X to stop. Fresh-load control checks ↗

Full Luna direction, three fresh Astra passes, authored in-engine geometry.
Explore C ↗
The same fixed target and seed, with a generated archway and traveler supplied before the three passes.
Explore D ↗In our visual assessment, D has a much more detailed traveler and convincingly weathered stonework. C still has stronger Gothic silhouettes, denser scenery and more dramatic lighting. Supplying better objects helped, but three passes did not automatically produce a more cohesive world. The practical result is a working asset-generation route, not a demonstrated quality or cost breakthrough.
Both captures use the same probe viewport and initial/reset view. Each run controls its camera composition, so this is a workflow comparison, not a pixel-aligned quality test. Runs took place sequentially.
Luna xhigh directs one fresh Astra low worker per pass. Each worker receives the reference and current scene; Luna verifies the browser between passes. No separate judge agents.

13m 40s from kit ready to capture
Explore pass 1 ↗
28m 23s from kit ready to capture
Explore pass 2 ↗
35m 11s from kit ready to capture
Explore pass 3 ↗Forge converted two existing source images into textured 3D meshes. The browser loads those GLB assets and renders them as part of the scene.
Asset generation: 7m 38s · $0 external 3D API fee. This used an existing GPU; hardware cost is unallocated. The source images were inherited from the earlier experiment, so their generation time and cost are not included.
The traveler is a static mesh. Character motion does not establish skeletal walking animation.
Generation and mesh evidence ↗
Asset generation: 7m 38s. Kit inspected and ready: 13m 21s from task start. Luna’s complete three-pass handoff: 54m 15s from task start.
First paint or a partial first element was not instrumented. The first scene is evidenced by 27m 01s from task start; the final pass by 48m 32s. These are captured-render upper bounds.
| First captured render | From that pass’s start | From full task start |
|---|---|---|
| Pass 1 | 5m 56s | 27m 01s |
| Pass 2 | 3m 28s | 41m 44s |
| Pass 3 | 3m 57s | 48m 32s |
Times are cumulative to the first completed capture in each pass, an upper bound on first visible rendering. The earliest capture can precede control fixes; the screenshots above show the validated pass. Tokens and model costs are incremental per pass. K = thousand tokens; input includes cached input, and output includes reasoning.
| Pass | C · Full Luna direction | D · Same direction + generated assets |
|---|---|---|
| Pass 1 | 7m 50s from C start Luna: 5,095.8K in / 20.9K out · $0.142 Astra: 344.1K in / 9.9K out · $1.169 Pass total $1.311 Account meter: 40% → 40%* | 13m 40s from kit ready 27m 01s from follow-up start Luna: 5,275.2K in / 18.2K out · $0.143 Astra: 215.8K in / 7.6K out · $0.941 Pass total $1.084 Account meter: 42% → 42%* |
| Pass 2 | 18m 35s from C start Luna: 1,764.6K in / 9.8K out · $0.059 Astra: 334.9K in / 4.3K out · $0.709 Pass total $0.768 Account meter: 40% → 40%* | 28m 23s from kit ready 41m 44s from follow-up start Luna: 2,251.7K in / 4.1K out · $0.054 Astra: 242.0K in / 5.0K out · $0.946 Pass total $1.000 Account meter: 42% → 42%* |
| Pass 3 | 26m 28s from C start Luna: 3,163.3K in / 10.4K out · $0.092 Astra: 359.8K in / 5.5K out · $0.844 Pass total $0.936 Account meter: 40% → 40%* | 35m 11s from kit ready 48m 32s from follow-up start Luna: 636.7K in / 6.6K out · $0.032 Astra: 289.5K in / 5.5K out · $0.807 Pass total $0.839 Account meter: 42% → 42%* |
C total: $3.181 · D total: $3.173 API equivalent. These include each director’s recorded setup and finishing. C had no equivalent generated-asset preparation stage. The recorded lane costs are effectively unchanged.
D director setup: Luna: 5,658.5K in / 31.5K out · $0.189.
D director finishing: Luna: 1,849.3K in / 10.4K out · $0.060.
Separate root research, asset preparation, accounting, publication and controls repair: $17.708.
Astra: 10,337.3K in / 81.7K out · $17.708
Total recorded follow-up language-model equivalent: $20.881. Root overhead is excluded from the C/D lane comparison. Asset generation and director preparation overlapped; the three scene workers ran sequentially. An initial child coordinator lacked nested-worker tools, so Luna continued in the standalone harness used for C. The failed preparation is included in D setup, and its delay remains in the elapsed times.
Task began 2026-09-10T17:58:11Z. Accounting cutoff 2026-09-10T19:07:16.311206+00:00. Elapsed to cutoff: 69m 05s. Responses after this cutoff are excluded.
*This is the rounded, account-wide seven-day allowance during the follow-up. It includes other activity and root work. Exact subscription consumption by lane, pass or model is unavailable; an unchanged reading does not mean zero usage. API dollars cannot be converted into a subscription percentage.
Standard rates per million tokens: Astra $10 fresh input / $1 cached / $50 output; Luna $0.20 / $0.02 / $1.20. Cache-write rates are $12.50 and $0.25. Per-request input above 272K applies the documented long-context multipliers. These are comparisons, not charges on a subscription invoice. Astra rates · Luna rates.
Exact time, request, token and quota ledger · Preserved first-pass timing evidence · Original C pass figures
The author’s initial prompt asks for an isometric fantasy scene in Three.js: realistic shading, reflective wet floors, a character, click-to-move, lazy camera follow, drag to orbit, scroll to zoom, and an environment with subtle motion. The requested frame rate exceeds 60 fps; no gameplay is required. The post separately reports $0.90 for assets; our $0 external 3D API fee uses existing GPU capacity whose cost is unallocated.
We now follow the asset-assisted workflow as well as the direct Luna-to-fresh-Astra structure. This uses Forge’s image-to-3D system and two inherited source images; it does not reproduce the author’s exact assets, 3D model, rendering setup or undocumented iteration history. Root handled asset preparation and publication separately.
The author’s follow-up correction puts savings around 40–70% across his threads and acknowledges differing techniques. This single follow-up cannot establish those savings or the earlier 80–90% subscription claim. There is no new Astra-only run with this same asset kit.
Validation and limits: All three desktop probes pass loading, movement, lazy camera follow, orbit, zoom and advancing animation. The final public checks are linked below. The assets are static, character movement is not skeletal walking, and the floor, vegetation and distant architecture remain visibly procedural. Lighting, reflections and composition still fall short of the reference. Software rendering does not validate the author’s hardware frame-rate target.
Independent public browser verification · Final pass interaction report · Final source archive
Keyboard controls added after the experiment: arrow keys and WASD / ZQSD move the character. The recorded captures, timings and lane costs describe the original runs. Control update source manifest · Keyboard checks · Repair time, tokens & cost.