Build Rigged Game Assets
Build one truthful actor package from source reference through gameplay and catalog proof.
Establish the contract first
Inspect repository truth before generating or editing files:
- Locate the source image/model, runtime loader, skeleton conventions, action API, equipment system, collision system, catalog schema, review routes, budgets, and tests.
- Classify the actor as or .
- Classify delivery as , , or . Do not call an asset implemented until gameplay loads it.
- Preserve immutable source artifacts separately from optimized runtime files.
- Decide target formats before using a credit-bearing generator.
Copy the matching template from
, fill it in, and keep it beside the implementation or in the project’s asset metadata location:
character-asset-manifest.template.json
monster-asset-manifest.template.json
Run
scripts/validate_asset_manifest.py <manifest>
before building. Re-run with
for shipped-file checks and
only after every acceptance check has actually passed.
Read references/requirements.md before creating the model, rig, actions, equipment, sockets, or collision data. Read references/catalog-and-testing.md when adding the catalog card, inspector, moveset route, telemetry, or release tests.
Build the common actor package
- Preserve the source.
- Record reference images, source tasks, imported files, licenses, generator/model, and material provenance.
- Never overwrite the high-detail source with the runtime optimization.
- Produce the main model.
- Normalize scale, Y-up, forward axis, pivot, ground contact, materials, textures, and triangle budget.
- Ground from feet or authored contact sockets, never a weapon tip, cloth tail, shadow, or VFX.
- Remove isolated triangles, non-manifold fragments, duplicate surfaces, hidden generator debris, and unused nodes.
- Build one stable rig.
- Name root, hips/center mass, head, limbs, feet, and attachment sockets explicitly.
- Keep at most four normalized skin influences per vertex unless the engine contract says otherwise.
- Preserve a deterministic bind pose, finite transforms, positive usable scale, and compatible skeleton identity across every clip.
- Build the action library.
- Give every clip a stable , semantic , loop policy, root-motion policy, duration, contact events, and source.
- Prefer animation-only GLBs for separate clips. They must not smuggle duplicate meshes, materials, or textures.
- Make non-looping actions restartable and return to the intended locomotion/idle state.
- Build runtime integration.
- Use one asset-specific loader/factory with disposal for geometry, materials, textures, mixers, events, observers, renderers, and animation frames.
- Publish source, model, rig, socket, action, equipment, collider, triangle, material, and status metadata.
- Keep a truthful rollback path when replacing a shipped runtime asset.
Apply the character profile
Treat the main model as the persistent body/base layer. Do not fuse swappable equipment into it.
- Declare every canonical slot: headgear, vestment, gloves, leggings, boots, main hand, offhand, and back/ranged.
- Mark unsupported slots explicitly instead of silently omitting them.
- Store supported swords, shields, bows, helmets, armor, and accessories as separate assets or independently addressable roots.
- Bind equipment to named sockets. Declare active and stowed sockets when an item changes state.
- Toggling a slot off must leave no floating trim, grip, one-triangle shards, duplicate baked weapon, or incidental gameplay prop.
- When the source contains no body beneath occluded equipment, create a fitted rig-following underlayer and record that limitation. Do not invent invisible anatomy claims.
- Require the character action roles , , , , , , and . Add block/ward, charged attack, cast, bow aim/shoot, jump, interaction, or class actions when gameplay exposes them.
- Keep equipment visibility independent from action selection unless the action deliberately changes active/stowed state.
Apply the monster profile
Treat a monster as one authored combat actor, not a player wardrobe.
- Do not require wearable slots. Separate only weapons, breakable parts, dropped parts, projectiles, or props that must animate, hide, detach, or collide independently.
- Require the monster action roles , , , , and .
- Add secondary attack, ranged attack, pounce, cast, summon, block, stagger, roar, spawn, or phase-transition roles only when the combat design uses them.
- Define navigation and hurt colliders plus per-attack telegraph, active, and recovery windows.
- Bind attack origins, projectiles, VFX, audio, head/torso targeting, and feet to named sockets.
- Keep visual animation separate from authoritative attack volumes, damage timing, AI state, and navigation.
- Test every attack at its authored range, facing, contact window, interruption, death, and cleanup boundary.
Build the catalog lab
Create both surfaces:
- Catalog card: transparent PNG, truthful label, zero WebGL canvases.
- Selected inspector/review route: exactly one live model canvas with source, status, budgets, rig, sockets, actions, and known boundaries.
Provide:
- drag-to-rotate while preserving page scroll;
- action selection for every shipped clip, including visible Walk, Hit, and Death controls;
- restart and pause/play;
- equipment toggles for characters, including clean all-off and active/stowed states;
- combat-state or attack controls for monsters instead of character gear controls;
- a fallback image until the real model is ready;
- deterministic runtime telemetry defined in the catalog/testing reference.
The inspector must load the same runtime model, rig, clips, equipment rules, and action API claimed by gameplay. A screenshot or separate look-dev mesh is not runtime proof.
Verify and commit
Run the project’s focused asset tests, manifest validator, build, lint, full tests, and
.
In the repository-approved browser:
- verify the card has one transparent image and zero canvases;
- verify the inspector has one model host/canvas;
- click every action and confirm the selected/playing state;
- toggle every character slot individually and all equipment off;
- inspect front, back, and both sides for fragments, holes, grounding, and socket errors;
- drag the model, scroll the page, and test the supported narrow/mobile layout;
- verify fallback and model-load failure behavior;
- verify no broken media or console warning/error.
Commit only the narrow asset lane. Report the manifest, main/runtime models, gear files, rig and sockets, actions, catalog route, status, verification results, known boundaries, and exact commit SHA. Report full-suite baseline failures separately.