Author a Voxel Animation Test Case
Scaffold an asset-generation test case of
asset_kind = "voxel-animation": a rigged cube model a model sculpts with the
voxel-anim binary and animates. The case fixes the required animations; the
parts and joints that realize them are the model’s to invent. Read
Authoring a Voxel Animation Test Case
for the full procedure;
Voxel cases is the
authoritative schema.
For a static cube model see Author a Voxel Model Test Case. For a rigged meshed model see Author a Mesh Animation Test Case.
Layout
Section titled “Layout”A version lives at
test-cases/asset-generation/<difficulty>/<slug>/<version>/. A version with runs
recorded against it is frozen; revise a case by adding a new version.
test-cases/asset-generation/<difficulty>/<slug>/<version>/ test-case.toml # manifest: type, asset_kind, voxel, tool, output, model variants/ # one standalone TOML file per variant prompt.hbs # rendered into the harness instruction; not seeded changelog.md # required per-version entry; not seeded description.md # site blurb; not seeded specs/brief.md # subject, motion, and tool behavior; seededA run seeds the brief, voxel-anim.config.json, and a rig.json pre-populated
with the required animation declarations alone, with empty tracks, parts: [],
and joints: []. The binary’s --help is the operation and rig-subcommand
contract. The case declares no [[reference]] and carries no target model.
- Pick a catalog slug and an articulated subject, one with distinct movable components a game would want to see move.
- Decide the required animations. Each is a
namea game plays it by, aloopflag, and anauto_playflag, wheretruemeans a self-playing idle andfalsemeans a game-triggered playable. Leave parts, joints, pivots, ranges, and pose angles to the model. - Size the volume from real dimensions: 10 voxels per metre for smaller units whose longest side is about 8 m or less, and 5 voxels per metre for larger units and structures. Keep the largest dimension roughly in the 40 to 150 band.
- Write
specs/brief.md: the subject and silhouette, the exact opaque#rrggbbpalette, the volume framing (which axis is up, which way is forward), the key features that must read, and the behavior each required animation must show. Cover how the tool behaves: every operation takes--part, a sculpting operation records without rendering, and a barevoxel-anim renderre-emits every part’s geometry and preview and composes the assembled scene views. Keep the brief self-contained. - Write
prompt.hbs. It renders in strict mode against{{variant.*}},{{#each specs}},{{workspace}},{{time_limit_hours}}, and{{voxel.*}}. Point the model atvoxel-anim --helpand require arenderbefore finishing. - Write
test-case.toml: metadata (name,difficulty,tagsincluding3d,voxel, andrig), the requiredchangelog,type = "asset-generation",asset_kind = "voxel-animation", and thevariantslist. It is a root key, so it precedes the first table header, and the first entry is the default variant. - Declare
[voxel]with fixedwidth,height,depth, andbackground. It replaces[canvas], which resolution rejects on a voxel case. - Declare
[tool]withbinary = "voxel-anim"and[output]. Both paths carry the{part}token, as inparts/{part}.pngandparts/{part}.actions.json, because an animated model writes one file per part. - Declare
[model], which is required, carrying[[model.animation]]entries with a uniquename, aloopflag, and anauto_playflag. The period, joints, and F-curves are the model’s. - Declare the single
overall[[domain]]. The rig and its animations are judged as a whole against the brief on that one rating, so the case declares no[[review_item]]checklist, no[[reference]], no[build], and no[[check]].
ironward, a siege tank with one required turret_sweep, is the worked example.
sunfront-aegis and caldera-colossus are multi-animation references.
Validate
Section titled “Validate”Run these for every variant.
npm run lint:specstcab prompt --test-case <slug> --version <version> --variant <variant>tcab seed --test-case <slug> --version <version> --variant <variant>prompt catches strict-mode template and manifest errors, including duplicate
animation names and a missing {part} token. seed writes the seeded repository
under tmp/, where you confirm the brief, voxel-anim.config.json, and the
pre-seeded rig.json are self-contained. After editing, force a re-ingest so the
backend picks up the new tables; see
Running the Local Service Stack.
Next steps
Section titled “Next steps”- Create a Voxel Animation Variant to add a brief variation.
- Run a Test Case to exercise it end to end.
- Review a Run to score the result.