Claude Sonnet 5.5 on Build a 3D fishing game in three.js
AClaude Sonnet 5.5 · Claude Code 2.1.299 (headless -p) · cloud · 2026-10-14 · by @bobsiopener
- Estimated cost
- $0.20
- Wall time
- 1m
- Human step-ins
- 0
- Outcome
- Pass
Compare with other models on this task →
Summary
Exact prompt
Scaled-down version of a 4-week game: in one pass build a small 3D fishing game as a single file index.html using three.js from https://unpkg.com/three@0.160.0/build/three.module.js (ES module import). Must include: a water surface and a dock/boat scene with lighting; click (or Space) to cast a line with a visible bobber; a random bite after a delay with a visual cue; a reel-in timing mini-game (press at the right moment or keep a meter in a zone) that can succeed or fail; at least 4 fish species with different rarity/weight; a HUD with catch log/score.
Task prompt given to the agent (headless, offline, synthetic fixture inputs): Scaled-down version of a 4-week game: in one pass build a small 3D fishing game as a single file index.html using three.js from https://unpkg.com/three@0.160.0/build/three.module.js (ES module import). Must include: a water surface and a dock/boat scene with lighting; click (or Space) to cast a line with a visible bobber; a random bite after a delay with a visual cue; a reel-in timing mini-game (press at the right moment or keep a meter in a zone) that can succeed or fail; at least 4 fish species with different rarity/weight; a HUD with catch log/score. Inspired by https://x.com/hakimieiqbal/status/2092194086073614342 (unverified; not checked with the author). This is an independent re-run on a reproducible synthetic task; it does not report or reproduce the original post's numbers. Cost shown is a list-price API-equivalent estimate (run on a Claude Pro subscription, not billed).
Success criteria: All automated rubric checks pass: imports three@0.160.0 module; no uncaught console errors in headless Chrome; water surface; dock or boat; lighting; cast + bobber; bite after delay; reel mini-game; >=4 species with rarity/weight; HUD catch log/score.
Setup notes: Cost is an ESTIMATE: Claude Code's list-price API-equivalent figure. The run used a Claude Pro subscription, so nothing was billed. input_tokens = all input incl. cache-creation and cache-read tokens; cached_tokens = cache reads (subset of input). Claude Code's cost bills cache writes at the 1h cache-write premium, so it can differ from a flat input-price recompute. Web disabled; tools Read/Write/Edit/Glob/Grep/Bash; single run; scored automatically (10/10 checks).
Estimated cost List-price estimate; not actually billed.
Metrics
- Estimated cost
- $0.20
- Wall time
- 1m
- Human step-ins
- 0
- Turns
- 3
| Model | Input tok | Output tok | Cost |
|---|---|---|---|
| AClaude Sonnet 5.5anthropic/claude-sonnet-5.5 | 77,373 | 12,296 | $0.20 |
Reproduce this run
- Use the use case prompt on the use case page.
- Same setup: Claude Sonnet 5.5 (anthropic/claude-sonnet-5.5) via
Claude Code 2.1.299 (headless -p), cloud. - It counts as a success only if it meets every success criterion: All automated rubric checks pass: imports three@0.160.0 module; no uncaught console errors in headless Chrome; water surface; dock or boat; lighting; cast + bobber; bite after delay; reel mini-game; >=4 species with rarity/weight; HUD catch log/score.
- Log model, tokens, wall time, human step-ins and the evidence log, then submit it as a reproduction. A different model? Submit a head-to-head rerun.
How runs are scored: Methodology.
Was this useful?
Automated checks
Trust 80% comes from these checks (how Trust % works).
- Run date is not in the future : passed
- Model is in the dated pricing table : passed
- Cost recomputed from tokens matches : passed
- Cached tokens are consistent : passed
- Output throughput is plausible : passed
- Autonomy matches step-ins : passed
- Step-ins do not exceed turns : passed
- Retries agree with first-try result : passed
- Evidence log SHA-256 matches : passed
- Evidence log is substantial : passed
Evidence log
{
"duration_api_ms": 74901,
"stop_reason": "end_turn",
"session_id": "[REDACTED]",
"total_cost_usd": 0.1983503,
"usage": {
"input_tokens": 6,
"cache_creation_input_tokens": 17344,
"cache_read_input_tokens": 60023,
"output_tokens": 12296,
"output_tokens_details": {
"thinking_tokens": 1053
},
"server_tool_use": {
"web_search_requests": 0,
"web_fetch_requests": 0
},
"service_tier": "standard",
"cache_creation": {
"ephemeral_1h_input_tokens": 17344,
"ephemeral_5m_input_tokens": 0
},
"inference_geo": "global",
"iterations": [
{
"input_tokens": 2,
"output_tokens": 604,
"cache_read_input_tokens": 29456,
"cache_creation_input_tokens": 427,
"cache_creation": {
"ephemeral_5m_input_tokens": 0,
"ephemeral_1h_input_tokens": 427
},
"type": "message"
}
],
"speed": "standard",
"fallback_credit": null
},
"modelUsage": {
"claude-sonnet-5-5": {
"inputTokens": 6,
"outputTokens": 12296,
"cacheReadInputTokens": 60023,
"cacheCreationInputTokens": 17344,
"webSearchRequests": 0,
"costUSD": 0.1983503,
"contextWindow": 1000000,
"maxOutputTokens": 128000,
"thinkingTokens": 1053,
"canonicalModel": "claude-sonnet-5-5",
"provider": "firstParty",
"costBasis": "list"
}
},
"permission_denials": [],
"terminal_reason": "completed",
"fast_mode_state": "off",
"fast_mode_disabled_reason": "sdk_opt_in_required",
"subagent_stats": {
"spawned": 0,
"requested": {
"background": 0,
"foreground": 0,
"unset": 0
},
"started_in_background": 0,
"max_depth": 0,
"spawned_by_subagents": 0,
"completed": 0,
"failed": 0,
"killed": {
"parent": 0,
"user": 0,
"system": 0
},
"refused": {
"depth_limit": 0,
"concurrency_limit": 0,
"budget": 0
},
"by_type": {}
},
"safety_stops": 0,
"is_error": false,
"num_turns": 3,
"subtype": "success",
"api_error_status": null,
"result": "I wrote the game to `./usecase-runner/runs/18-sonnet/work/index.html`. I haven't opened it in a browser, so it is untested. Serve it over http (e.g. `python3 -m http.server`) and open it with internet access, because three.js loads from unpkg.\n\n- **Scene:** The water is an animated wave mesh with a sunset sky and fog. There's a wooden dock with a flickering lamp, an angler with a rod, a bobbing boat and distant hills.\n- **Casting:** Move the mouse to aim sideways. Click or press Space to cast. The line arcs out to a bobber with ripples. Clicking while you wait reels the line back in early.\n- **Bite:** After a random 2.5\u20138 second delay, the bobber plunges and thrashes, splash rings appear, and a flashing \"BITE!\" shows. You have about 1.3 seconds to react, or the fish escapes.\n- **Reel-in mini-game:** Hold click or Space to raise a green zone on a vertical meter. Keep the gold fish marker inside it to fill the progress bar. If the bar empties, the fish gets away. Rarer fish move faster and the zone gets smaller.\n- **Fish:** There are 6 species, each with its own rarity, weight range and point value.\n - Sardine (Common)\n - Perch (Common)\n - Largemouth Bass (Uncommon)\n - Rainbow Trout (Rare)\n - Golden Koi (Epic)\n - Ancient Coelacanth (Legendary, 20\u201370 kg)\n- **HUD:** It shows score, number caught and lost, your best fish, and a log of the last 8 results. A caught fish also leaps from the water to the dock.\n\nI haven't tuned the mini-game's difficulty or checked how it plays.",
"ttft_ms": 9698,
"type": "result",
"duration_ms": 75212,
"uuid": "[REDACTED]",
"ttft_stream_ms": 929,
"time_to_request_ms": 236,
"first_content_frame_ms": 929,
"queued_turn_count": 0,
"result_index": 0
}