Skip to content

Model a game-ready low-poly 3D prop from a one-line brief, within a tight triangle budget

Exact prompt

# Game-ready low-poly 3D asset from a one-line brief `asset.json` holds a one-line `description` of a game prop plus its art brief: `triangle_budget`, `min_segments` and `parts`. Write `solve.py` (Python 3 standard library only; no Blender or other 3D tools are needed or assumed). `python solve.py input.json answer.json` (first argument unused; read `asset.json` from the current directory) writes `asset.obj` and `answer.json`. Fresh briefs (other props) are generated when scoring. ## Geometry rules (metres, +Y up, ground plane y = 0) 1. Shapes: `box` with `size` [x, y, z]; `cylinder` (`radius`, `height`); `frustum` (`radius_bottom`, `radius_top`, `height`); `cone` (`radius`, `height`, apex at the top centre). Round shapes have their axis along +Y. 2. Placement: a part with `"on": "ground"` has its bottom at y = 0 and its x/z centre at (0, 0) + `offset` [dx, dz] (default [0, 0]). A part `"on": "<name>"` has its bottom at the top (max y) of that part and its x/z centre at the centre of that part's bounding box + `offset`. If the named part is an array, use the bounding box of all its instances. 3. `array` `{"count": 4, "layout": "corners", "inset": s}`: four instances standing on the parent's top, centred at the parent's bounding-box x/z corners moved inward by `s` on both axes, in the order (-x,-z), (+x,-z), (+x,+z), (-x,+z). 4. Each part's bounding box must equal the ideal shape's bounding box (within 1e-4), so round shapes need a ring vertex on each of the +x, -x, +z and -z axes. 5. Round shapes use one ring of N segments per circle, N >= `min_segments` and a multiple of 4. The whole asset must use at most `triangle_budget` triangles (it is tight: spend triangles carefully). 6. Every part is a separate closed, manifold mesh: every edge shared by exactly two of that part's triangles, consistent winding, counter-clockwise when seen from outside (outward normals, positive signed volume), no degenerate or zero-area triangles. Vertices may be shared or duplicated; edges are compared by position. ## asset.obj Wavefront OBJ, `v x y z` and triangle-only `f` lines. One `o <name>` per part; array instances are `o <name>.1` .. `o <name>.4`. No other objects. ## answer.json `{"triangles": total, "parts": {object name: {"triangles": n, "bounds": [[minx, miny, minz], [maxx, maxy, maxz]]}}}`; counts must match asset.obj. ## Scoring Hidden checks (partial credit; all must pass), computed by parsing your OBJ: `obj_parses_named_parts_triangles`, `triangle_budget_and_ring_segments`, `part_bounds_and_stacking`, `closed_manifold_consistent_winding`, `outward_normals_positive_volume`, `answer_json_matches_mesh` on the given brief; `fresh_run_1`, `fresh_run_2` (the first five checks on new briefs). 30-second limit per run.

Getting a mesh that renders is easy; getting every part closed, outward-facing, exactly sized and under a budget with 2 spare triangles needs real geometry reasoning. Original benchmark task written for usecaserank.com (not based on a specific public post). Headless, offline run on a reproducible fixture. Each run's notes say how its cost was measured (estimates are marked).

Success criteria: 1. obj_parses_named_parts_triangles 2. triangle_budget_and_ring_segments 3. part_bounds_and_stacking 4. closed_manifold_consistent_winding 5. outward_normals_positive_volume 6. answer_json_matches_mesh 7. fresh_run_1 8. fresh_run_2

Best model for this task so far: Claude Haiku 5.5 (effort default (no --effort flag) · thinking on) (success, $0.02, 2m).

Latest output per model

Run this on another model

All runs (7)

86% pass rate across 7 eligible runs: 6 pass, 0 partial, 1 fail. Partial and failed runs are listed below with everything else.ⓘ

Runs for this use case
ModelCostTimeStep-insⓘAutonomyOutcomeTrustⓘDateCompare
KKimi K3.1 Pro (Venice)thinking on$0.236m0Fully autonomouspassTrust 80%2026-10-29
GGemini 4 Argonmedium · thinking on$0.264m0Fully autonomouspassTrust 80%2026-10-28
MMistral Small 3.2 24B Instruct (Venice)thinking on$0.002240s0Fully autonomousfailTrust 80%2026-10-23
OGPT-6.1 Soldefault · thinking on$0.041m0Fully autonomouspassTrust 80%2026-10-22
AClaude Haiku 5.5default · thinking on$0.022m0Fully autonomouspassTrust 80%2026-10-20
AClaude Opus 5.5default · thinking on$0.241m0Fully autonomouspassTrust 80%2026-10-20
AClaude Sonnet 5.5default · thinking on$0.0935s0Fully autonomouspassTrust 80%2026-10-20

Embed this result

A live badge for this use case. It links back here and updates as new runs are published.

UseCaseRank badge for Model a game-ready low-poly 3D prop from a one-line brief, within a tight triangle budget

Get new runs and ranking changes weekly

Which models got better or cheaper on real tasks like this one.