Published using Google Docs
UltimateHorePack_Documentation(1)
Updated automatically every 5 minutes

Hivemind - Ultimate Horse Pack





Horse and Rider Deformation system

On top of running standard animations, horse comes with a advanced deformation system built within animation blueprint that transforms individual bones based on user input and camera rotation to  achieve more realistic and responsive body movement.

Transforms nodes are located in the AnimGraph of the horse animation blueprint.

Rotation driving values are located within Animation Update Events section of the BP_Horse
These values are set to what we believe looks most natural. However it all can be adjusted for more or less intense deformation if that would suit your setup better.
Current setup affects the Lowerback (area around back legs), spine and the head.

Chest bone rotation is currently deprecated. It looks great on a wild horse without the saddle, however this particular bone rotation is too intense for most saddles resulting in mesh clipping.  That being said, you may want to make use of it depending on your setup.

This package comes with an example BP_Rider prefab with full interaction support. Rider character can mount and ride the horse as well as interact with the hat prop.

Just like the horse, Rider has a similar deformation system built into his animation blueprint to match his twisting and rotation to the likes of the horse. Rotation control values are located within BP_Horse next to the horse rotation values.

BP_Rider character prefab is built on the default Epic mannequins skeleton. Therefore the mannequin model can be swapped with any other mesh that is rigged to this skeleton.






Universal IK correction for Riders Hands and Feet

Due to the nature of the twisting deformations of the moving horse, we are using IK corrections for rider's feet and hands so they would always match the location of Stirrups and saddle grip point.

If a new saddle model were to be added, it would be very likely that its stirrups and hand rest point would be in a different location. If that's the case, it would be recommended to add a new IK profile for riders hands and feet.

IK locator components inside the BP_Horse are used to drive the Riders IK system 

Locator setup consist of Left and Right :
IK_Stirrups (feet corrections inside stirrups)
IK_Knee ( IK offset correction for knee's to ensure that they never clip into the saddle)

IK_Hand ( IK offset correction for riders hands, normally used to match the saddle straps)
IK_Hand_Sprint ( IK Offset location for hands when rider is hunched during Gallop animation)

Depending on what kind of saddle we use, we load a  Update Hand IK  profile function which essentially locks these Locators in their ideal position to ensure no clipping occurs.


And we do the same thing for feet (IK_Stirrups) and Knees (IK_Knee)


To add more profiles, you would need to add additional entries to
Enum_HandIK_Variant and set up a similar offset profile for the feet and knees.








Custom Footstep SFX based on surface material

Each time horses leg collides with the surface it does a line trace downwards, ascertains physical material properties from the impact surface and plays appropriate sound effect.

Normally this sort of setup would just use Surface type parameter built directly into the materials and decide what SFX to play, however due to the nature of new marketplace guidelines, marketplace packs can no longer contain any data which would go into config folder and defaultengine.ini which is where these are stored.

As a direct workaround, our implementation uses only the SurfaceType_Default physcal surface, and instead extrapolates  variants from the value of the  friction parameter

As such each type of physical material type has a static friction value which is used to identify that material during the footstep trace event and play appropriate SFX. Friction values used -  Concrete [1], Dirt [2], Grass [3] and Water [4]. 

If your project requires the usage of friction on physical materials, then it would be highly recommended to unhook this logic from the
Foot SFX trace function inside BP_Horse and replace it with standard physic surface types stored within defaultengine.ini to determine the appropriate sound effect.

Water Detection and Swimming mode



Our horse system is built with a custom swimming mode. One of the Demonstration levels has the example setup with the water asset from official Epic Games Water plugin. BP_Horse is built with a trace function which scans if the horse is submerged in water and automatically switches it into swimming mode or back to walking mode when no longer in water.

That being said, depending on your specific needs - using the water plugin may not be an option. In which case we have a BP_Swimzone blueprint, which can be used to tell the horse which areas of the level are intended to be water zones so the horse would switch into swimming mode when walking over them. Blueprint itself is lightweight and can be duplicated and scaled to cover desired swimming area.

For ideal results, blue preview mesh [water level] should be matched to the surface of your custom water area.





Advanced Saddle customization

Both stylized and realistic versions of the horse have an optional saddle mesh, however only realistic horse version can use Advanced saddle which can be customized.


We exposed some presets which can be selected through
BP_Horse when placed directlly in a level, however these presets are few and just serve as an example selection of some of available saddle materials.

There are various fabric and leather textures and materials available for each individual part of the advanced saddle which can be used to assemble many different variants. For additional customization we've also included custom materials which let you pick your own color tint.

For advanced customization, open BP_AdvancedSaddle and from there you can modify attachments placement, their individual materials and remove / add more props. 



Enhanced Input and Controller Support

This package is using enhanced input system which is a new default input method since UE 5.1.0 and mandatory for all marketplace packages going forward.


ATTENTION : In earlier engine versions than 5.1.0 you need to enable Enhanced input plugin manually and  set Default Player input class  and Input component class into enhanced input.
*********************************************************************************

Current setup fully supports Keyboard + Mouse and Xbox Controllers.

When it comes to PlayStation controllers it gets a little more tricky. There is no way to officially support PlayStation controllers without official Dual Shock plugin which can only be used by developers verified by Sony. That being said, our package is using Windows Raw Input plugin and can read the input from PS controllers. However it cannot differentiate from PS4 and PS5 controllers and thus can only support one or the other at any given time.


By default, this package is set up to recognize PS4 controllers input. If you want it to be compatible with PS5 controllers instead, you need swap
InputMappingsPS4 profile with InputMappingsPS5 on the nodes highlighted in the picture above for both BP_Horse and BP_Rider