Download

Horse Mount: How to sync 2 blendspace animations; the rider and the horse?

Hello everyone! So I am working on a mobile game that has an ‘on rails’ section where an archer character is riding on an ai driven horse, and shooting arrows with the touch screen.

Pretty much everything is up and running, which is awesome, but one problem that has come up is that both the blend spaces, the horse’s ‘Idle/Walk/Run’, and the characters ‘Idle/Walk/Run’, which is pretty much her bouncing on the saddle and holding onto the reigns. Since a blendspace is a looping animation, i can’t really get these two to sync up, where she starts her ‘bounce’ at the height of the horses cycle.

A little bit of info is that the archer character is referencing the horses ‘speed’ variable, so they are both using the same float to influence their blendspaces.

My question is how do I sync up the two blendspaces to play at the same time properly? I can’t really ‘start’ the animation because it is an array of looping animations.

I’d appreciate any help!

 ~StevenWaltherMedia

I would just create a merged skeleton of a rider and a horse and author animations using it. Then I would just use the master-pose component feature to attach both skeletal meshes to this skeleton. This way you will have the perfect synchronization.

Hold on, so you are saying to have an invisible character skeleton merged on the horse skeleton and simply have the actual main character skeleton follow the bones? I’m a bit lost.

I thought I would bump this. The problem still persists, and now that I am adding more features on top, I would really like this to be eventually fixed.

Yes, this is a legit way of doing such kind of things.

Why not making a mounted horse version, an unmounted solo and a rider solo?
When he mounts, swap model.
Mhh i would create a timeline event compo to trigger and sync anything, float for ani sync and events for overall sync.

The problem with this is that the main character is a dynamic character who has potential material swaps and different objects attached.

If you can only mount in idle position, I think your solution is simple.

Have a special state where the character and horse plays an animation. the horse would be pretty idle (not doing tons of stuff) while the guy jumps on him. When the jump finishes you can go back to looping with both human and horse.

I had the same problem with a boat instead, where a character would need to hop into a boat that is swinging from side to side (due to waves). What I have done is that, the moment character starts the hop animation, I would get the boat sneakily become idle by blending the anim of “swinging” and anim of “idle for hop”. It was barely noticable and the feet of the hopping character would always land at the correct side of the boat without getting it too deep into boat or having space between.

Long story short, trying to synronize both looping animations can be hard without having the same start point, and this can be achieved by a sneaky-idle animation until the horse hopping ends.

Use Master Pose Component as already suggested. The invisible skeleton for the rider in the horse is virtually free as it is not deforming any polygons. You can see MPC as a way of attaching and copying animation data from one skeletal mesh to another. It is perfectly possible to switch components on your character after using the MPC.

We used MPC in Guardians of Valor on mobile for all mounted units. It allowed for more deforming bones per units as it was split into two draw calls. It also allowed us to perfectly sync the meshes as one actor for almost no extra cost.

Trust me, it is very hassle free once you get it to work. I assume you’re already animating both characters in one scene in the DCC. Now it will be even easier to maintain animations as the rider and horse uses the same animations. No duplicates.