Dead City has gone from grey boxes to a kitbashed city. A dead one, as advertised. Time to take the Wayfarer for a walk—and discover that getting up a staircase is rather different from looking as though you are climbing it.
Stairs only he could see
In the storm drain, he walked along an invisible ramp more than a metre above the visible steps. At the motel, the collision boxes had 27 cm risers beneath artwork with 45 cm steps. No animation could fix that: the ground his controller followed had to match the ground we could see.

We replaced the drain’s ramp with tread-shaped footing and separated the motel staircase into its own mesh, using the visible geometry for collision. The old collision boxes and the ramp inside the motel building were removed. Now the controller and the foot solver could agree about where the steps actually were. An accurate solver still gives the wrong answer if it asks the wrong surface where the floor is.
Try the obvious thing: stair animations
Meshy’s stair clips did not fit: the ascent failed to loop cleanly, and the descent was too steep. Mixamo looked more promising, but its roughly 23 cm steps were smaller than ours. Claude rebuilt four clips on the Wayfarer’s avatar, stretching the steps, solving the legs back onto the feet, pinning the planted foot, and removing root travel so each clip looped in place.
Each frame was sampled on the Wayfarer, the foot targets stretched toward a 31 cm riser, and the legs re-solved with two-bone inverse kinematics. Pinning the stance foot prevented the retargeted animation from creeping along the tread. Removing vertical and forward travel from the root let the character controller move the body while the clip repeated in place.
Then his legs disappeared.

The rebuilt clips looked fine when sampled in the Editor. They contained the muscle curves that posed the body, but not the foot IK targets expected by Game Creator’s final animation pass. In play mode, the missing targets pulled the feet toward the hips. Testing a clip on its own had missed what happened when another system processed it.
Writing the goals in the avatar’s expected coordinate frame, including its rotation conventions and the offset to the sole, fixed the spectacular failure. But descents still landed awkwardly and ankles folded over tread edges. A clip rebuilt for a 31 cm riser could not reliably fit the apartment’s 36 cm steps or the motel’s 45 cm ones. The foot destinations had to come from the actual flight.
Let IK find the ground
Final IK’s Grounder already handled uneven ground elsewhere in the city. It casts beneath each foot, adjusts its position, and lowers the hips to accommodate different support heights. Surely the clip could move the legs while the Grounder found the steps?

Instead, the two fought: the clip placed a foot on a tread, and the Grounder could lift it about 12 cm back off. Both systems were trying to correct the same legs. We gave stair placement ownership of the feet and disabled ordinary grounding while it was active.
The next idea kept the stair clips but replaced their landing positions. StairProfile sampled the surface every 3 cm and divided it into treads at height changes of at least 12 cm. StairFootPlacement used the clip’s lift cues, chose a real tread, swung the foot over the edge, and pinned it there.
Putting each footfall on a real step helped, but the animation still dictated when feet lifted. A lift cue could arrive while the other foot was airborne. Missing that cue could leave one foot trailing while the other stepped again. Alternating one-tread and two-tread strides produced a limp.
That was the central lesson: a correct destination does not produce a reliable rhythm. Knowing where a foot belongs is only half the problem. The body must reach that support at the right time, with the other leg available to carry its weight. The staircase needed to control both destination and timing.

The Solution

Why bother?
WorldHopper is about exploring places. Feet that carry weight, knees that bend, and a pause halfway up a flight help the character feel connected to those places. A little more human. Or anthropic, pardon the pun.

Even the hand near the rail came from another system: ambient wall touch, not a stair-specific grip. Those small interactions are beginning to add up. Working with Claude makes it possible to pursue them through the failed attempts and keep refining the result.
More to come. Stay tuned.