IRON LITANY

Crew runtime art revision 4

5 October 2026. Candidate; integrated art and motion approval remain outstanding.

The old loader's unfeatured sphere head, broad block chest and stretched bar arms were visible in the actual first-person transfer frame. This revision authors the anatomy, garments and working hands before adding surface wear. It follows the current creator brief and the binding art direction, using the Diablo I reference listed in REFERENCE_INVENTORY.md. No reference pixels, published character mesh or copied game texture are shipped.

dist/game/src/characters.js now provides independent runtime constructors for commander, gunner, loader and tech priest. The characters share serious adult proportions, a profiled jaw and cranium, raised orbital ridges, recessed eyes, a projected nasal bridge, restrained lips and shaped ears. They have anatomical hip and shoulder pivots, tapered upper and lower limbs, shaped boots and soles, and palms with curled, jointed fingers. Main volumes are authored ring profiles and bevelled contours; sphere heads and broad box torsos are absent.

RoleAuthored silhouette and material identityActual unscaled heightTrianglesMesh submissions after existing static batching
CommanderOlive tailored tunic, wrap seam, high collar, field cap, command strap, rank tabs, belt record1.740 m3,29216
GunnerCharcoal uniform, layered flak breastplate, articulated knees, one-eye sight cuff and dark optical glass1.761 m3,64023
LoaderRusset work shirt, rolled sleeves, heavy shaped leather apron, burn scar, lowered respirator, heatproof gauntlets1.761 m3,83421
Tech priestWeighted red vestment, real cowl opening, recessed augmented face, mechanical arm, angled service pack and linked service appendage1.816 m2,77820

The counts are bounded geometry measurements after batchStaticMeshes on an isolated model, rather than a claim about frame rate in the integrated tank. The engine, outside world, shadow pass and screen resolution still affect play performance.

All surface color comes from one original, code-painted 256 × 256 atlas containing sixteen 64 × 64 tiles. Broad cloth folds, stitched edges, leather creases, handled metal edges and sparse skin marks occupy deliberate areas. Four physical responses separate rough organic surfaces, worn metal, service steel and optical glass. Materials with the same response share a draw; atlas UVs retain their separate palette and surface markings. Face and skin planes remain quiet rather than covered by the former universal striped/noisy texture.

Evidence and limits

These are controlled static model studies on a simple floor. Their perspective field of view is 42 degrees; the gameplay first-person camera uses a wider view. They do not establish normal tank overhead readability, material response in every compartment, loading contact throughout a moving cycle, or approval. The root integration must capture actual overhead, loader approach, shell insertion and crisis states. The source is original geometry/atlas authored in code for this project; no ImageGen concept image is being represented as a runtime model.

Integration contract

import {createCrewCharacter,createTechPriest,poseLoaderArms} from './characters.js';
const commander = createCrewCharacter('commander');
const gunner = createCrewCharacter('gunner');
const loader = createCrewCharacter('loader');
const priest = createTechPriest();
const reach = poseLoaderArms(loader, loading.hands, {shellAxis: roundWorldAxis});

The origin is the floor between the feet; units are metres; positive local z is the face/tool direction. Do not retain the previous loader's 1.08 scale boost. The commander and gunner's userData.arms entries are shoulder pivot groups and their userData.legs entries are hip pivot groups, so the existing crew gesture and walking update can rotate them without orbiting around a limb centre. The loader has an empty general arms list and a loaderRig list of {side, upper, lower, hand, shoulder, upperLength, lowerLength} groups.

poseLoaderArms receives the actual shell centre and longitudinal axis in world space. It places the gloved wrists below the round at two positions along its length, with opposite hand chirality. It solves a two-bone elbow and maintains the physical upper/forearm lengths of 0.372 and 0.365 m. It reports overReach when the foot position cannot reach the target; it deliberately clamps the wrist rather than stretching a giant arm to hide that problem. The caller must adjust worker footwork and facing when overReach is nonzero. This matters because the previous transfer allowed up to 1.25 m from shoulder to target. The new maximum shoulder-to-wrist reach is 0.729 m after its safety margin. The target station, round mesh, worker pose and animation must share the same frame and transform.

Remaining production work

The faces and garments are a materially stronger low-resolution model candidate, but still use economical mesh profiles rather than final sculpted/pre-rendered character masters. Natural facial asymmetry, fatigue, injury changes, individual recruit identity, full driver hand contact and sight operation need further authored work. The loader's physical reach exposes any incorrect existing transfer footwork. The next acceptance is the visible round being gripped and seated through the actual cycle at normal player views. Human art approval has not been given.