GTA6 Trailer
Benchmark.
Three AI models. One brief. A 13-second GTA6-style trailer, built entirely in code.
Claude Opus 5.5, Claude Sonnet 5.5, and DeepSeek V4.1 Flash each wrote a Remotion and Three.js trailer for an open-world crime game made of voxels. No images, no video models, no human edits. Each model reviewed frames of its own render twice and revised. Opus cost about 75x more per trailer than DeepSeek.
Every run. No cherry-picking.
Claude Opus 5.5 high
- API cost
- $6.73
- Time to video
- ~56 min
Run details
- Model ID
claude-opus-5-5via Anthropic API- Calls
- First reply: $3.21, 128,000 output tokens, hit token limit / Repair: $1.25, 45,579 output tokens, rendered / Review 1: $1.20, 38,125 output tokens, rendered / Review 2: $1.08, 27,990 output tokens, rendered
- Cost source
- Anthropic list prices x reported token usage
- Model time / render time
- 37 min / 19 min
Claude Sonnet 5.5 high
- API cost
- $4.47
- Time to video
- ~62 min
Run details
- Model ID
claude-sonnet-5-5via Anthropic API- Calls
- First reply: $1.92, 128,000 output tokens, hit token limit / Repair: $1.20, 77,318 output tokens, rendered / Review 1: $0.641, 35,249 output tokens, rendered / Review 2: $0.708, 34,387 output tokens, rendered
- Cost source
- Anthropic list prices x reported token usage
- Model time / render time
- 36 min / 26 min
DeepSeek V4.1 Flash 1017 high
- API cost
- $0.104
- Time to video
- ~29 min
Run details
- Model ID
deepseek/deepseek-v4.1-flash-1017via OpenRouter, pinned to DeepSeek- Calls
- First reply: $0.044, 74,425 output tokens, rendered / Review 1: $0.036, 58,381 output tokens, rendered / Review 2: $0.023, 35,824 output tokens, rendered
- Cost source
- OpenRouter usage.cost
- Model time / render time
- 11 min / 18 min
"Before review" is the first version that rendered, before the model saw its own frames. Cost includes every call: first reply, repairs, and both reviews.
Average per trailer.
| Model, high effort | Avg cost | Avg time |
|---|---|---|
| Claude Opus 5.5 | $7.57 | ~66 min |
| Claude Sonnet 5.5 | $4.49 | ~59 min |
| DeepSeek V4.1 Flash 1017 | $0.101 | ~21 min |
Same brief. Same rules.
The model directs.
Each model got the same system instructions and brief in one request. It returned one TSX module: a Remotion composition that builds a voxel world with Three.js. We rendered it in a sandbox with the network off: Chromium with a CPU WebGL renderer, 1920 x 1080, 30 fps, 390 frames.
Repairs
Up to three automated repairs in total after an unusable reply, a truncated reply, or a failed compile or render. The model receives only the error. No human edits. Every attempt is charged to the video.
Self-review
After the first render that works, the model gets a contact sheet of 12 frames from its own video (one every 32 frames, plus frame 375) and may revise. This happens twice. The model judges its own frames; no human comments are added. If a revision fails to render, the last working version is kept.
What happened
All 9 runs produced a trailer. Every Claude run first used its full 128,000-token output budget, mostly on thinking, before finishing the code, so each needed one repair to return a complete module. That cost is included. DeepSeek never hit the limit. One Opus run also needed a second repair for type errors. Five review revisions failed to compile and were repaired.
Cost
DeepSeek costs come from OpenRouter's reported usage cost. Claude costs are Anthropic list prices multiplied by the token usage the API returned. Total for the 9 trailers: $36.47.
Harness incident: Harness bug: ffprobe printed 390 with a trailing comma, the frame check parsed NaN, and a valid render of call 2 was reported as failed. The reply is excluded and its cost is not charged to the video. Fixed with parseInt.
SUNBURN is our placeholder title. This is a fan benchmark, not affiliated with or endorsed by Rockstar Games or Take-Two. The models were told not to use real logos, names, or characters. Three runs per model is a showcase, not a statistically definitive ranking.
Run it yourself.
System instructions and brief
System instructions
You write one complete Remotion 4 composition in TypeScript (TSX) that renders a 3D voxel scene with Three.js.
Output
- Reply with the TSX module only. No explanation before or after it.
- Export a named React component called Trailer.
- Import only from "react", "remotion", "@remotion/three", "three", and "@react-three/fiber".
- Do not register a composition or change the project configuration.
Fixed environment
- The wrapper supplies 1920 x 1080, 30 fps, and 390 frames (13 seconds).
- Versions: three 0.186.1, @react-three/fiber 9.8.1, @remotion/three 4.0.534, React 19. TypeScript runs in strict mode.
- Render 3D with <ThreeCanvas width={1920} height={1080}> from "@remotion/three". It syncs the frame with Remotion. Inside it, use React Three Fiber elements (mesh, instancedMesh, group, lights, fog).
- WebGL runs on a CPU renderer (SwiftShader). Keep each frame cheap: use instancedMesh for repeated cubes, at most about 60,000 visible cubes per frame, at most one shadow-casting light, and no post-processing.
- The font "Archivo" (variable weight 100-900) is loaded. Use it for all text, as HTML layered over the canvas. No other fonts are available.
- Build every model and texture from code. No images, video, model files, external assets, or network requests.
- Every frame must be deterministic and depend only on useCurrentFrame(). Set the camera, objects, and lights from the frame number on every render. Do not use useFrame, clocks, physics, or Math.random(). Use random(seed) from "remotion" for variation.
- Do not add audio. A shared music track is added after rendering.
- Keep all text inside an 80-pixel safe margin on every side.
Voxel style
- Everything in the 3D world is made of cubes on a grid, like a high-resolution Minecraft: small voxels, so cars, palm trees, buildings, and people read clearly and have detail.
- Write small builder functions that turn a voxel model (for example a list of layers or a function of x, y, z) into instanced cubes, and reuse them across shots.
Music grid
- The track is driving melodic techno at 128 BPM with a kick on every beat, starting at frame 0.
- One beat is 14.0625 frames. Beat n lands on frame Math.round(n * 14.0625). One bar is four beats.
- Put cuts and hits on beats. Use bigger hits on bar starts (beats 0, 4, 8, 12, 16, 20, 24).
Craft
- Before the code, decide one concept for the trailer and write it in a comment at the top of the module, followed by a shot-by-shot storyboard with frame ranges and camera moves. The code must follow the storyboard.
- Use a real game-trailer camera language: fly-throughs, chase cams, low angles, orbits, and push-ins.
- Something visible changes on every beat. No still hold longer than half a second, except the final title.
- Put the strongest moment in the last third.
- Text enters with intent (masks, slams, kinetic type), not plain fades.
- Each line of text must be fully on screen and readable for at least 30 frames.Brief
Make the trailer for SUNBURN, an original open-world crime game. It must feel like the most anticipated game trailer of the year, in the spirit of the GTA 6 trailer: a sun-soaked coastal city, crime, money, and two leads on the run. The whole game world is built from voxels. Use four to six shots. You choose which moments to show, for example the city, a getaway car at speed, police pressure, a heist, or the two leads. You choose the look, the colors, the time of day, and the mood. Use this exact on-screen text, and no other words: - ONE CITY. TWO DEBTS. - SUNBURN - COMING NOVEMBER SUNBURN is the final title. It and COMING NOVEMBER must be on screen and readable from at least frame 345 to frame 389. Do not use the names GTA, Grand Theft Auto, Rockstar, or Vice City, or any real logo, character, or brand.
Make videos like this for your product.
Cliphouse turns what you ship into motion graphics with your coding agent. Templates are free to edit.
Also see the Motion Graphics Benchmark.