3d castle with Claude and Codex

I did a small test with the latest OpenAI and Anthropic models. The goal was to one-shot a 3d castle for the browser. I knew the models are pretty good already for this kind of stuff, but I was slightly surprised that even the low-tier models delivered. Results were not as fancy as those from the more expensive ones, but they scaled down gracefully.

Opus 5 notable did not rely on three.js, but instead created it’s own implementation.

Task

The task I gave to each agent. These were one-shotted, I did not give any extra guidance. All models except GPT-5.6-Luna created a working solution. Luna version required a small tweak to the Javascript code. Command line versions of Codex and Claude were used for the development and they ran in Docker container.

Create a 3d animation that runs completely in browser. The animation features a medieval castle, sitting on top of a hill that is located on large forest. Do not add any keyboard controls, just make the camera spin around the castle so that we see it from all sides. On top of the castle tower there should be a flag that waves in the wind.

The output should contain index.html file that when executed shows the castle and starts the looping animation.

Results

Opus 5.5

Opus 5

Fable 5.1

Sonnet 5

GPT-6 Astra high

GPT-6 Sol high

GPT-6 Luna high

GPT-5.6 Sol high

GPT-5.6 Terra high

GPT-5.6 Luna xhigh

Configurations

The table is just some stats from the run. Don’t try to read too much into it.

Model Reasoning effort Input tokens Output tokens Reasoning tokens Time
claude-opus-5-5 328,219 37,636 5 min 42 s
claude-opus-5 7,865,233 101,701 46 min 09 s
claude-fable-5-1 669,371 27,956 9 min 14 s
claude-sonnet-5 1,020,147 27,262 4 min 42 s
gpt-6-astra high 863,549 15,469 3,452 10 min 29 s
gpt-6-sol high 209,098 13,981 5,284 4 min 31 s
gpt-6-luna high 142,169 12,031 4,495 3 min 49 s
gpt-5.6-sol high 145,369 7,436 1,276 4 min 15 s
gpt-5.6-terra high 94,646 4,622 427 1 min 37 s
gpt-5.6-luna xhigh 142,367 13,698 5,080 4 min 39 s

What each model did

Here’s brief notes from the logs for each model, compiled by AI.

Opus 5.5

  • Built a Three.js scene in one HTML file, loading the library from a CDN. Revised the window and arch geometry.
  • Looked for Chrome/Chromium but found none; did not attempt a browser installation.
  • Checked CDN access and ran the scene in Node with simulated browser and WebGL objects. Those checks passed, but it did not render the page in a browser.

Opus 5

  • Built its own WebGL renderer and shaders, with no external rendering library.
  • Tried Puppeteer and Chrome, ran into incomplete downloads and an x86/ARM mismatch, then switched to Playwright. Manually extracted Chromium and downloaded missing system libraries into a local folder; eventually got it running.
  • Rendered and inspected many screenshots, then refined lighting, fog, rocks, clouds, birds and camera framing. The later render checks reported no console errors.

Fable 5.1

  • Downloaded Three.js and repackaged it as a local script so the demo could work offline without a server.
  • Installed Puppeteer, but Chrome initially failed because system libraries were missing. With no sudo access, downloaded and extracted the libraries locally instead; browser rendering then succeeded.
  • Inspected screenshots, fixed the hall roof, lighting and fog, and rendered again with no JavaScript errors.

Sonnet 5

  • Built a single HTML page using Three.js from a CDN. Revised the hilltop and flag attachment after reviewing the code.
  • Installed Puppeteer, but Chrome could not start because system libraries were missing. Tried installing them with apt, which failed due to insufficient permissions.
  • Finished with JavaScript syntax, HTML structure and CDN checks. No successful browser render was recorded.

GPT-6 Astra high

  • Embedded Three.js in the HTML for offline use, then refined the lighting and combined static geometry to reduce rendering work.
  • Installed Playwright and Chromium. Downloaded missing Linux libraries locally and adjusted the test after browser launch failures and a screenshot timeout.
  • Captured desktop, mobile and rear views. Its final browser test passed, confirming camera and flag movement with no JavaScript errors.

GPT-6 Sol high

  • Built a standalone WebGL scene without external libraries or assets.
  • Searched for an installed browser and Playwright, but found neither. Did not attempt to install them.
  • Ran a Node test with simulated browser and WebGL objects. JavaScript parsing, scene initialization and animation-loop checks passed; no browser render was recorded.

GPT-6 Luna high

  • Built a Three.js scene using a CDN and revised the instanced forest setup.
  • Checked selected parts of the source with text searches. No browser installation, browser render or JavaScript syntax test was recorded.

GPT-5.6 Sol high

  • Created a single HTML page with procedural scenery and Three.js from a CDN.
  • Announced a browser check, then found no installed browser or browser-testing package. Did not attempt an installation.
  • Checked JavaScript syntax and CDN availability instead. No browser render was recorded.

GPT-5.6 Terra high

  • Created a compact Three.js scene and made a follow-up edit.
  • Initially tried checking the HTML file directly with Node, which failed because Node did not recognise the file extension. Extracted the module script and successfully checked its syntax instead.
  • Looked for Chrome/Chromium but found none. No browser installation or render was recorded.

GPT-5.6 Luna xhigh

  • Built a single HTML page with procedural geometry and textures, then made a follow-up edit after reviewing the camera and scene code.
  • Looked for Chrome/Chromium but found none; did not attempt an installation.
  • Successfully parsed the inline JavaScript and checked that there were no keyboard handlers. No browser render was recorded.