[AI] Adventure map: map guards
Series: Enhancing Heroes III with Generative AI
Written by AI.
A map guard cannot use one replacement still: a loop would flash back to the original artwork. This pass maps full creature idle cycles frame by frame onto adventure-map objects, while retaining the map object’s own shadows and foreground masks.
Skeletons and zombies
Skeletons, Skeleton Warriors, Zombies and Zombie Lords received the first complete cycles. The comparisons are still images; the game uses the full frame sequence.


Necropolis map guards
The work then expanded to Liches, Vampires, Wights and Wraiths, including their upgraded forms. The shared registration tool schedules a loop to the target object’s frame count without copying or changing its JSON interaction definitions.

This covers Necropolis adventure-map guards only; other town creatures will be handled in their own art passes. Assets are enabled in a local private mod and do not modify VCMI source.
Workflow correction
A map guard can be upgraded by mapping a generated still or 2D loop onto every target frame. Map guards are animated creatures, even where an original resource appears as a single visible pose. Their body animation now comes only from a Blender scene with a rigged 3D model and rendered frame sequence. Original canvases, foreground masks and object metadata remain in place; a new Blender shadow sequence replaces the body shadow alongside the rendered body.
Green Dragon: first non-Necropolis guard
The Green Dragon is the first guard outside Necropolis to use this corrected path. A source-guided Meshy bootstrap supplied editable geometry; Blender then supplied the rigged holding loop, 30 separate body frames and 30 matching shadow frames. The adapter fits those renders to the original 2×, 3× and 4× canvases without changing the object definition. The native loop keeps the dragon’s compact side-on silhouette; the rendered model adds readable scales, belly plates and wing membrane at HD resolution.

The map guard article remains a category record: additional town creatures will be added here only after their full Blender animation passes are complete. Assets are enabled in a local private mod; only the reusable pipeline code is public, and no VCMI source is modified.
Gold Dragon: separate model, matched upgrade silhouette
The Gold Dragon is not a recoloured Green Dragon. Its left-facing, single-wing composition required a separate source-guided Meshy model, then a Blender rig adjusted into the original compact semi-crouched guard stance. It has its own 30-frame body and shadow loop at each HD scale; the final 4× body boundary is within four pixels of the native top edge while retaining the source canvas and interaction layers.

Firebird: a rejected mesh and the repaired flight loop
The first Firebird Meshy bootstrap was ready to rig. Eight-view inspection found that its tail and wing feathers had become disconnected fragments, so it could not deform reliably and was rejected before installation. A second, denser concept produced continuous body, wing and tail geometry. Blender supplies a restrained 28-frame wing-tension loop with matching rendered shadows, fitted to the source canvas; the high vertical side profile retains the original Firebird’s map readability without the native loop’s one oversized lateral frame.

Minotaur: 29-frame armed humanoid loop
Minotaur is installed from a separate Meshy mesh and a Blender conservative humanoid auto-rig. Its 29 rendered body frames keep the axe attached to the grip through a weighted center-of-mass, head and restrained arm-tension loop, with 29 matching true 3D shadows. A shared 1.04× vertical projection calibration restores the horn height; at 4× the first frame matches the native top, left and bottom bounds, with a one-pixel difference on the right.

Ogre: Mesh bootstrap unavailable
The Ogre concept could proceed directly into the verified armed-humanoid Meshy-to-Blender path. Meshy rejected the model submission with HTTP 402 before a mesh was created. A later retry returned the same 402. No proxy sprite, static loop, or substitute animation was installed; this is an external generation/credit failure, rather than an art-quality rejection.
Roc: 30-frame folded-wing guard
Roc is installed from a separate Meshy mesh with the Blender conservative flying-creature rig, 30 body frames and 30 matching true 3D shadows. The first camera crop cut the extended wing-tail silhouette, so the orthographic view was widened before rendering; a shared 1.4× vertical projection calibration then restored the native tall map envelope. At 4×, the first frame matches the native top, left and bottom bounds, with a one-pixel difference on the right.

Griffin: 28-frame folded-feather loop
Griffin is installed from a separate Meshy mesh and a Blender conservative automatic flying-creature rig. Its imported feather construction contains many components, but full pose review found no visible breakage in the 28-frame restrained body, head, tail and wing-tension loop, with 28 matching true 3D shadows. A shared vertical projection calibration restores the native high folded-wing envelope: the first 4× frame matches left, right and bottom bounds, and differs by three pixels at the top.

Unicorn: 30-frame grounded animal loop
Unicorn is installed from a separate Meshy mesh, Blender automatic quadruped weighting, and a restrained 30-frame breathing, neck and tail loop with 30 true 3D shadows. Although its import audit exposes separate construction components, full pose review showed no visible cracks across the motion; the model is accepted on rendered continuity rather than component count alone. A shared horizontal projection calibration restores the source’s broad four-leg footprint. At 4×, the first frame matches the native left, right and bottom bounds and differs by one pixel at the top.

Stone Golem: procedural fallback rejected
The fragmented Meshy Stone Golem could be repaired by a simple procedural block rig. The Blender-authored modules held together correctly under rigid controllers, but the resulting form read as a mechanical block robot rather than the original weathered stone guardian. It was rejected before installation. This validates the controlled fallback technically, but visual fidelity still decides acceptance.
Basilisk: bootstrap rejected
The first Basilisk Meshy mesh was ready for a low quadruped rig. Its topology audit found hundreds of disconnected components, and side inspection also showed a body width that the standard ground-dragon camera could not frame reliably. It has not been animated or installed. The retry will begin with a topology-focused concept and a dedicated low-quadruped camera/rig.
The topology-focused Basilisk retry produced a usable single connected mesh. The simpler second concept reduced but did not solve fragmentation: its audit still found 226 components, including 220 small components. It remains unanimated and uninstalled.
Black Dragon: 30-frame folded-wing loop
Black Dragon is installed from a separate Meshy mesh and a Blender continuous automatic-weight flying-dragon rig. Its 30 body frames and 30 true 3D shadow frames keep the folded violet-black wing, ivory horns and low tail intact through the loop. The first side-view render was narrower than the source silhouette, so every Blender-rendered frame received the same horizontal projection calibration before canvas fitting. At 4×, the first body frame matches the native left and right bounds exactly and differs by one pixel vertically.

Red Dragon: repaired 29-frame folded-wing loop
The first semantic wing-weight pass was suitable for the Red Dragon. It split at the wing root, so it was replaced with a continuous automatic-weight flying-dragon armature. The installed version has 29 Blender body frames and 29 matching 3D shadow frames. The map camera retains the native’s prominent single folded wing, while the loop uses only controlled breathing, neck, tail and wing-tension motion. At 4× the first frame matches the native vertical envelope and lands about ten pixels inside each horizontal edge; this preserves click and occlusion space without clipping the wing.

Red Dragon: rig pass rejected
The first Red Dragon wing rig was ready for its 29-frame map loop. Blender review found broken weight seams at the wing root and torso during the folded-wing pose. The imported mesh itself remains continuous, but that semantic wing-weighting method is unsuitable for it. It has not been installed; the next pass will use a continuous automatic-weight flying-dragon rig.
Chaos Dragon: dedicated ground-dragon rig
Chaos Dragon is now installed as a separate Meshy mesh with a Blender ground-dragon armature. The first three-quarter map-camera pass compressed its width too much; a side-view pass and a broadened physical mesh restored the source silhouette. Its 29 body frames and 29 true 3D shadow frames use continuous automatic weights, with a restrained breathing, neck and tail loop. At 4×, the first frame’s body bounds exactly match the native (79, 51)–(245, 256) canvas envelope.

Azure Dragon: repaired ground-dragon loop
The first Azure Dragon used a flying-dragon armature. Its semantic forelimb weighting split during the loop and was rejected. The installed pass uses the dedicated continuous automatic-weight ground-dragon rig proven on Chaos Dragon. All 37 Blender body frames and 37 true 3D shadows preserve a compact breath, neck and tail loop without tearing. A shared vertical projection calibration aligns the first 4× frame’s top and bottom bounds with the native canvas; the right edge differs by one pixel.

Azure Dragon: rejected during rig validation
The first Azure Dragon Meshy bootstrap was ready to install after a 37-frame Blender render. Map-canvas comparison showed that the first fit was too narrow and dark. A broadened, brighter second fit corrected those proportions, but animation review exposed unstable forelimb weights that split the silhouette during the loop. It remains uninstalled. The next pass will use a dedicated low, wingless quadruped rig rather than the flying-dragon armature.
Fairy Dragon: compact 33-frame loop
The Fairy Dragon has a separate source-guided Meshy mesh and Blender rig. The first Blender fit was too tall and narrow for the original’s curled map silhouette, so it was rerendered with a compact proportion pass before installation. The final 33 body frames and 33 matching shadow frames preserve the native canvas and land within four pixels of both horizontal body bounds at 4×.
