| name | scene-ready-check |
| description | Run the scene gate on a glTF 2.0 file: structure validity (buffers/accessors consistent), triangle budget vs declared target platform, true scale in meters, collision geometry present. Trigger: "is this scene game-ready", "check my glTF", "validate this level". NOT a performance profiler and NOT an art review — materials, draw calls, and taste live in the engine.
|
| kind | skill |
| license | MIT |
| runtimes | ["claude-code","codex","hermes"] |
scene-ready-check
When to use
Any glTF scene claiming to be game/sim ready — generated by brief-to-blueprint
or exported from a DCC tool.
What it does
- S1 structure: glTF 2.0, embedded buffers decode to declared lengths,
accessors fit their bufferViews, index counts divide by 3.
- S2 poly budget: total triangles ≤
data/scene.yml budget for the declared
target (pc | mobile); unknown target ⇒ not measured ⇒ fail.
- S3 true scale: meters declared (
asset.extras.units) and scene extent
within sanity bounds — the units-bug catcher.
- S4 collision: at least one
*_collision node exists.
Example
python3 examples/arena/generate.py scene.gltf
python3 pipeline/scene_gate.py scene.gltf --target pc --json
Verification (eval-with-teeth)
Success may be declared ONLY when the gate exits 0. The gate is held by tests
that mutate the golden arena seven known-bad ways (corrupt buffer, fake index
count, wrong units, 100× extent, missing collision, unknown target) and assert
each fails:
python3 -m pytest tests/test_scene_gate.py -q
Safety
A READY scene is dimensionally sane and playable-shaped — not performant, not
art-directed, not engine-imported. The report says so.
Cross-runtime
Python + PyYAML; exit codes gate any CI.