CoolZombie: motion-matched AI locomotion demo (no state machine) - #1
Open
miogds wants to merge 5 commits into
Open
CoolZombie: motion-matched AI locomotion demo (no state machine)#1miogds wants to merge 5 commits into
miogds wants to merge 5 commits into
Conversation
added 5 commits
July 26, 2026 23:37
…hine A wandering target orbits the arena and the character chases it: the AI states a goal (desired velocity + facing) each frame and the engine's animation stack — motion matching, inertialized transitions, root motion, foot IK — does everything else. changeAnimation is never called. Placeholder assets: redplayer rig + idle from the engine test resources; run_forward/walk_forward generated from the in-place running clip by injecting linear root travel (2.35 / 0.94 m/s), so the motion database has real traveling locomotion until mocap lands. The scene is written so new .untold clips swap in without code changes. Engine pinned to feature/animation_motion_matching until the animation stack merges into develop. macOS via swift run; MPL-2.0, non-commercial demo.
alignOrientation lerps orientation-matrix columns, which degenerates for large heading changes (the target passing behind the character mixes opposing columns toward zero) and expects physics components this entity doesn't carry — the zombie never turned to follow the target. Replaced with a yaw-only controller: shortest signed arc toward the goal, capped at 3 rad/s, applied with rotateTo.
The demo starts paused behind a title card with a play button; while running only a small translucent pause button sits in the corner, so screen recordings can be armed on a still frame and captured without overlay text. Space toggles too.
Picks up the engine fix for hierarchical assets — the zombie now actually follows its goal instead of marching off along world +Z with the animation churning (the skinned child drifted while the steered root stayed put).
The full animation stack (pose layer through motion matching, with the hierarchical anchor fix) is merged into the fork's develop; the temporary feature-branch pin is no longer needed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
M4 scaffold of the AI animation roadmap: a character that chases a wandering target with no animation state machine. The AI states a goal (desired velocity + facing) once per frame via
setMotionMatchingGoal; the engine stack — motion matching, inertialized transitions, root motion, foot IK — does everything else.changeAnimationis never called.swift run CoolZombie(StarterDemo bootstrap pattern).miolabs/UntoldEnginebranchfeature/animation_motion_matching; switch todeveloponce engine PRs Updated examples untoldengine/UntoldArcade#10/uploaded untold ios project demo untoldengine/UntoldArcade#12 merge.Placeholder assets
The engine ships no traveling locomotion clip, so
run_forward/walk_forwardwere generated from the in-placerunningtest clip by injecting linear root travel (2.35 / 0.94 m/s) and re-encoding as animation-only.untoldfiles — real food for the motion database until mocap lands. The scene swaps assets without code changes: drop in new.untoldclips and the database rebuilds from whatever is loaded (ChingMu MotionDecode retargets planned; attribution note already in the README).MPL-2.0, non-commercial demo.
Known scaffold limits (by design, until real clips land)
alignOrientation; turn clips will replace this.