Methodology

How this was measured.

1 prompt. 18 model-effort combinations. The same dual-level, Severance and beach-side themed paperball game, built 18 times.

Total tokens Log scale each tick is 10× the one below

Visualization of tokens, time & estimated cost of build from a single prompt run once per model-effort.

Two observations led to this project.

LLMs are getting ridiculously good at generating modalities like video and audio from nothing but a text prompt.

And when new models drop, consumers tend to test similar workflows across them, form an impression, and make a judgment about what a model might be best suited for. Someone runs one or two prompts, gets a vibe, and moves on.

This project extends that comparative process, with more discipline than a consumer, but without the rigour & resources of an institution.

Method

Each model-effort build was given a fresh GitHub repository and an identical text-only prompt.

Every build ran in its model provider's native IDE. Opus and Fable ran on Claude Code; the GPTs ran on Codex.

Raw session logs were then analysed to extract, normalise and calculate tokens, cost and time.

Sixteen of the eighteen builds carry full measurements. Two were built through the Claude iOS app, whose sessions live on Anthropic's servers and expire after thirty days. Those transcripts passed their retention window before the analysis ran, so those two builds appear on the site without figures.

Measuring time

This was fairly straightforward, once the start and end points were clearly demarcated. The clock starts when the prompt is sent. It stops when the model sends a message that the game is ready.

The window covers everything the model does on its own: its turns, tool calls, subagents, background work and self-reviews.

Fable 5 Ultracode ended with “Trashketball is built, reviewed, and verified”. Opus 4.8 Max ended with “Done. The game is running at http://localhost:8123 in the Browser pane.” For Codex builds, the equivalent marker is the first task_complete event after the prompt, which is the harness's own record of a turn closing.

That end point is a specific, quotable line in the transcript, located by reading rather than by taking the session's final timestamp. Session end times can be triggered by something else entirely, such as hitting a usage limit.

Startup queue lag counts, because a user waiting for a model to begin is still waiting. Idle time after delivery does not count.

Measuring tokens

Input is every token a model read: the prompt, plus the whole conversation resent on each turn. Output is every token it generated. Getting both right from the logs means being careful about four things.

Every figure here was calculated from the raw logs on these terms, summed once per API response inside the same window used for the clock.

Measuring cost

These games were built on the Claude Code and Codex macOS apps, both on subscription plans. A subscription charges a fixed monthly price and grants weekly or hourly usage quota, sometimes topped up by unexpected promotional refreshes.

The platforms publish how much of that quota you have used. They do not publish how many tokens it represents.

Both vendors do publish token pricing for API and Enterprise customers, so the dollar figures here apply those published rates to the tokens measured. That gives a counterfactual: what each build would have cost at API rates, not what anyone paid. Whether subscription usage is metered and cached identically to API usage cannot be verified from outside.

Caching dominates the pricing math. Majority of input arrived as cache reads, which is billed at a fraction of the standard rate.

The cost represents the dollar value of each build, but a subscriber paid far less in reality.

Rates come from the Anthropic and OpenAI pricing pages and no other source.

Controlling conditions

Contamination checks. Each build ran in a fresh repository, and the transcripts confirm that isolation held in both directions.

Across all sixteen builds with local logs, twelve on Claude Code and four on Codex, every build started from an empty folder, installed its dependencies fresh, wrote only inside its own project, and referenced no other build's files. None wrote to a shared skill, a global config, or a memory store that a later build could read.

Codex also reads AGENTS.md instruction files from parent folders if any exist. None do, and the models' own searches for one came back empty.

The single exception is harmless. Fable 5 Ultracode wrote two notes to a memory directory inside its own project, which would only surface if a user resumed a session in that same repository.

Some interesting findings More to come

A Claude Code transcript titled Trashketball game with two levels. The model
        writes that it will verify each fix visually rather than trust the reports, runs
        commands, reads back a rendered screenshot of the beach-side Level 2 room, and
        describes the result.
Opus 4.8 Ultracode, mid-build: “I’ll verify each visually rather than trust the reports.” Every one of those reads puts a full screenshot into the context window, and every later call carries it again.

Visual verification is expensive. Opus 4.8 Ultracode took 132 screenshots of its own rendering, across its main thread and 31 subagent sessions, returning about 175,000 tokens of inline image. A rendered 3D scene cannot be verified by reading its source, so the spend buys something real.

Input dwarfs output. Every build read at least 46 times more than it wrote. Two causes: First, the API keeps no memory between calls, so each one resends the entire conversation. A build making 1,400 calls pays for its own history 1,400 times over. Second, every call also carries the harness's system prompt and tool definitions, which run 17,000 to 19,000 tokens on Codex and 42,000 to 55,000 on Claude Code.

Limitations

LLMs are nondeterministic. The same prompt, same model, same effort and same harness can result in different outputs. This experiment was run once per model-effort. It is a disciplined study, not a rigorous benchmark.

User-configured harnesses on Claude Code vs Codex may not be identical.

Everything on this page describes the state of things as of 19 August 2026: the measurements, the published rates, and how these subscription plans worked.