we gave gpt-6 astra and claude fable the same three.js job. drop blok, our black cube cat, from about 4 m onto five grounds in five materials. each material has to look and move like itself. on the builds shown in the video, astra was faster: 39m 33s against 50m 45s. fable was cheaper: $5.75 against $7.79.
the setup
both models worked from the same prompts in the same harness. headless chrome was the only judge. the cat itself was not up to them: one shared model file, blok_model.js, sits in both projects. so the shape is identical on both sides. each model wrote the scene, the drop and physics engine, and the material "skins" for that same cat.
the rooms were built once as a shared module: a pool, a test chamber, a rubber sports court and a sand room. a yellow 4 m measuring tape and a fall timer stand in every scene. same camera, same room, same drop: only the material and physics code differ.
- gpt-6 astra: openrouter api, model id
openai/gpt-6-astra - claude fable: claude code, as a coding agent
- engine: three.js 0.170 from a cdn, every texture generated in code
- materials: stone, mylar, wood, tennis felt, jelly
- judge: headless chrome, both scenes played side by side in lockstep
so the only thing each model controls is how the cat looks and moves.
five materials, five grounds
each material comes with its own ground and its own physics test.
| material | ground | what it had to do |
|---|---|---|
| stone | deep water | fall heavy and sink to the bottom of the pool |
| mylar | floor | land like an inflated foil balloon |
| wood | rubber court | knock and rattle on the rubber |
| tennis felt | floor | bounce like a tennis ball |
| jelly | sand | squash, wobble and settle into the sand |





what each model built
the cat's shape is the same on both sides, so every difference below is material and physics code.
- stone: both cats sink to the pool floor. astra's entry throws a tall splash plume
- mylar: both read as an inflated foil balloon. fable's surface picks up stronger reflections and a red glint
- wood: astra's cube shows only a faint face in the wood. fable carved the face and ears deep into the grain
- tennis: both are felt-yellow with the white seam. fable's seam sits closer to a real ball
- jelly: both are dark-cherry. fable's jelly is clearer and lights up redder
fable put more surface detail into four of the five materials.
time and cost
the plates in the video are running totals: each scene adds the build time and api cost of its own runs.
| after scene | gpt-6 astra | claude fable |
|---|---|---|
| stone | 10m 58s / $2.52 | 23m 17s / $2.07 |
| mylar | 16m 55s / $3.42 | 28m 06s / $2.94 |
| wood | 33m 36s / $6.89 | 45m 57s / $4.88 |
| jelly | 39m 33s / $7.79 | 50m 45s / $5.75 |
the direction holds either way: astra finished first, fable spent less.
our take
astra was faster on every scene where both models did fresh work. fable took longer, spent less and put more detail into wood, mylar and jelly. the shape was locked, so the gap is all material and physics code. that is the part a game team would pay a model to write.
sources
- gpt-6 astra on openrouter – the model and api we called
- claude fable 5.1 on openrouter – model page
- three.js – the 3d library both builds use
- prompts, builds, timings and bills: our test, oct 7–9, 2026