← Development journal

/ 3 min read

On foot: getting down from the horse

Ioma can leave the saddle now. Press E and she gets down from the horse's near (left) side, the way riders do. On the ground, WASD walks her relative to the camera, and Shift breaks into a run. Walk back to the horse and press E again to get back on. The horse stays where you left it, and the survey sheet marks it with an ink horseshoe.

The dismount: up in the stirrup, the right leg over the croup, down the flank, landing facing the saddle

If you press E at a gallop, she pulls up first and gets down once the horse has stopped.

Just down: the camera has moved in from the riding view to a closer one on her

Running off across the dunes

Fixed after the first play-through: running looked ridiculous, with fast legs and little ground covered. Each clip's speed was being measured only in the few frames its foot sat lowest, which under-read every run by about half, so the clip was played far faster than the distance it covered. It's now measured from the planted foot across the whole contact. The run also switched to Meshy's RunFast (5 m/s), a real run found in an earlier test rig of her.

Getting back on: a foot in the stirrup, a spring, the swing over, and into the seat

The horse marked on the sheet behind her

The keys stay on screen

The controls used to flash up for seven seconds at the handover and then disappear. Now there's a key card in the lower right whenever the HUD is up. It changes with what you're doing: riding keys in the saddle, walking keys on foot. "E get on" is in red ink when she's close enough to the horse, and greyed out otherwise. It's the HUD's first text, set in IM Fell (the Fell types, OFL, in art/fonts/imfell), a 17th-century face that suits the survey sheet.

The key card: riding, beside the horse, and walking away

Where the animation comes from

  • Walking, jogging and idling use clips we already had. When Ioma was rigged, Meshy produced idle, walk and run clips for her exact skeleton, and they were sitting unused in art/. They're now imported by build_ride.py, and the game samples and blends them itself, with no animation Blueprint. Each clip's natural ground speed is measured from its own feet, so playback follows how fast she's actually moving and her feet don't skate. Walk and jog share one stride phase, so blending between them never crosses her legs.
  • The dismount is animated in code for now. No library we checked has horse animation, including Meshy's roughly 600 clips. So it's keyed joint angles through six beats (seated, up in the stirrup, leg over, sliding down, landing, standing), splined, and eased into her idle at the end. Getting on isn't the dismount played backwards: it has its own beats, left foot up into the stirrup, then a spring off the right leg.
  • Footsteps are detected from her own ankles, using the same touchdown detector the hooves use, so they keep time with any clip or blend. The landing thud is placed on the landing beat.

The honest part

The dismount is a placeholder. It reads clearly and it fits our horse exactly, but it has none of the weight shift and follow-through of real motion, and players will see it hundreds of times. The plan is to replace it with motion capture. That first needs a retargeting pipeline: taking clips made for Unreal's standard Mannequin skeleton (most of Fab and the mocap libraries) and fitting them to Ioma's Meshy skeleton. Built once and proven on one clip, it opens up most of what we'll want: dismounts, kneeling at a well, digging, talking with gestures.

Rough edges

  • The on-foot camera doesn't avoid props, only the horse.
  • Her idle stance is turned about 40° at the hips, so she settles slightly angled after a dismount.
  • Her movement is display-side like the horse's, until heroes become units in the rules library.

Lowwater is in development. These notes capture the game at the time of writing; plans and visuals may change.

More from the making of Lowwater.

Follow along ↗