Back to Projects

WorldBench

  • Python
  • Three.js
  • Headless Chromium
  • Next.js
  • TypeScript
  • HuggingFace

Overview

WorldBench is a live benchmark that asks one question: can a language model build a living 3D world from a single description?

Every model gets the same prompt: a detailed description of a floating voxel island with ten biomes, rivers, weather, wildlife, a day/night cycle and seasons. It has to answer with one self-contained world.html that renders the world in Three.js, imported from a CDN, with no build step and no asset files. The file has to open in a browser and just run.

So far it holds worlds from 30 models across 12 labs, including Anthropic, Google, OpenAI, xAI, Meta and DeepSeek, and the site gets about 5K visits/month.


The Website

worldbench.krishbakshi.com is where people use it:

  • Evaluations: every model's island runs live and interactive in the browser. Search or filter by lab, or open any world in its own window.
  • Compare: put up to six worlds side by side, in a link you can share.
  • Leaderboard: every scored model ranked, with each test broken out and the exact scores in a table.
  • About: what the benchmark tests, how scoring works, and how to cite it.

The scoring code is on GitHub, the results are a Hugging Face dataset, and the method is written up in the paper WorldBench: Evaluating LLMs on Three.js Voxel World Generation (arXiv 2610.10622).


Why Grading Is the Hard Part

Models can now write complete interactive worlds as code, but judging those worlds is unreliable. Existing judges take one view of the output: a vision-language model scores a few screenshots, or a language model reads the source.

On worlds written by five frontier models, those two views disagree on 32% of required items, mostly code that no frame ever shows. Fixed camera views also miss small close-up contents. A judge that trusts either view alone gets fooled.


Why the Task Is Hard

The island is the visible part. What the prompt actually demands is that several kinds of reasoning hold at the same time, all in one file:

  • Holding a large spec in mind: well over a hundred concrete requirements, from snow on tree canopies to obsidian where water meets lava.
  • Spatial reasoning: biomes are described by their relationships, not coordinates, so the model has to hold a mental map and build to it.
  • Causal reasoning: water runs from mountain melt through the jungle to the plains and out to a delta, the desert stays dry, and rivers never flow into the volcano.
  • Code that works, not code that looks right: thousands of lines of Three.js that have to run, render and animate without crashing.
  • A world that is alive over time: rain falls, rivers flow, clouds drift, the sun crosses the sky and the seasons turn.

The Placement Graph

The ecology is a typed graph rather than prose. One perennial water corridor runs the length of it, and the edges that break that line carry the difficulty.

Snow MountainsSnowy Conifer ForestHighlandsVolcanolava, not waterDense JungleBackwater Swampdead endFlowering GroveGrassland PlateauDesert Basinrain shadowCoastal Delta / Oceanand/ordry washes, fade outwater + lava to obsidian
Scroll to zoom · Drag to pan
required water corridoralternate feeddry wash, never arrivescausal contact

The prompt's ecology, drawn as edges rather than prose.

The flowering grove has two valid sources, down the highland slope and/or across from the grassland plateau, which gives the graph its one real cycle. The desert touches the grassland only through dry washes that fade out before they arrive: a genuine relation, but never a through-river. The backwater swamp hangs off the jungle's wet side as a dead end. The volcano sits off the water system entirely, reached by a single causal rule.

Holding that adjacency structure while laying out geometry is part of what is being tested.


How It Judges

The judge explores the running world and reads the code for what it sees.

  1. Structural gate: the file must exist and actually be a Three.js / WebGL page, or it fails fast with a reason.
  2. Instrumented capture: the world runs in headless Chromium with its randomness seeded and its clock pinned, so every reload builds the same island. The capture records fixed views, every time of day and season, and a navigator agent that uses the world's own legend and camera to frame each biome.
  3. Dual evidence per rubric item: an LLM reads the source and must quote the exact lines that build each item, and every quote is verified verbatim against the file. A VLM judges the captured frames, and motion, day/night brightness and seasonal tint are measured from the pixels instead of asked about.
  4. Disputes: when the frames show something the code half missed, a tool-using agent searches a sandboxed copy of the source to settle it, with its quote verified the same way.

Every world is scored on the same five tests, 280 points in total:

TestPointsWhat it asks
WC001 Voxel island40Is it a cube-built island floating in a void, with no visible rendering bugs?
WC002 Coverage and placement20Is every biome built, next to the right neighbours at the right height?
WC003 Micro-contents100Does each biome contain what makes it that biome?
WC004 Physics100Do rain, rivers, clouds and lava look and move right?
WC005 Temporal cycles20Do day/night and the seasons actually change the world?

What the Paper Found

A mutation test removes features from worlds by construction and checks whether a judge notices. Code-only judging still gives full credit to four of five removed features, because their code remains in the file.

WorldBench's judge cuts the points kept on removed features by a third (5.44 to 3.55 of 7.11), and what it still credits is mostly code that exists but never runs.

The paper evaluates five frontier models: Claude Fable 5.1, GPT-6 Astra, Kimi K3, Grok 4.7 and Gemini 3.1 Pro. The website and the Hugging Face dataset cover a wider roster of generated worlds, each with its scores, quotes and frames saved so any result can be audited.


Try It