> For the complete documentation index, see [llms.txt](https://hiveminddocs.gitbook.io/hivemind/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hiveminddocs.gitbook.io/hivemind/code-systems/ultimate-horse-system/integration-guide.md).

# Integration Guide

## <mark style="color:blue;">Rider Character logic Transfer Guide</mark>

Purpose of this tutorial is to explain the process on transferring logic from the example rider to a different or custom character class.

### Stage 1 - Rider code transfer, BPI (blueprint interface) setup

All reference calls in BP\_Horse, BP\_Rider and ABP\_HorseRider have been coded to work strictly through the interfaces. This approach enabled relatively seamless code transfer to new character classes without requiring to re-do all reference calls.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcxBy_FMgxYhiikCY_YX0brNEEOw4C3UWU21y7LH6V2TFXMNhQ7CsEjXYaPoiXGLN5jyH6w6R2FIFLqHvC69K57TMB2oOgTy5LX62cgKulMbaYtd2V3QIY2bDQcEHE-kCT2oDevfQSO6t2HnbQN_p-wsHXiI98uNBY?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Before anything else, you need to add the <mark style="color:blue;">BPI\_Horse Riding</mark> Interface to your character class and then recompile the blueprint.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfZpweO5JU60YE_GaFT5KmMZvNLcIAWboEDSTCHvrjuIDbuNe_CyJ0qsFkOyia1vqYO2FQUAAI_ON6CIHSg-RpsVAdf0Nm2xSAXqHkqGdzglH79GOfuMN4EOB8H_PW3rcrh_LvQ6TeBFGNwH636Zo3kxeste9VwIlM?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Next, you need to copy code from <mark style="color:blue;">BP\_Rider</mark> into your character class.\
Picture bellow highlights the nodes which are crucial for the horse Riding framework\
All of <mark style="color:red;">red commented code</mark> handles standard character (while not mounted) input and movement. Assuming your custom character already has input and movement framework in place, all <mark style="color:red;">red</mark> code is redundant. <mark style="color:blue;">Blue and Grey code handles references and tick logic</mark>, while <mark style="color:orange;">orange does animation related events</mark> and <mark style="color:green;">green oversees function calls that affect character states and function calls to other classes</mark>.

Just like the highlighted area in the picture bellow, you want to copy over all code except for

<mark style="color:purple;">PURPLE</mark> and <mark style="color:red;">RED</mark> nodes into your personal character class.  Once you did that, **recompile the blueprint once again**.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeWiQU8aJ9TRRgEEaN_qyQ3UFodXcOaa6hXNqvllcQNr7iewfXjIfs74oCSfzvGOSnSia5gIfvgHMmJK5nR40-wvBCLqQ2gZt6mmbWb2YnZl0AwXMq0waZROiGZQX8YhPAJ0vvlZ_tCnFqVzt9hlBtk99_kP-yABQ?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

After you compile your character class, you will receive errors complaining about non existing variables. For that you'll have to right-click on each Erroring out variable and Create that variable.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdiqxN6s5CndJfplp1q0EuMcdtlydCI2Zdded8gWshh_VkOlcsI9uumx7ew7vk5YbB1QDYPwR5CGY9iojmZA0ksE-ENrRZwdjKZFvE4wBJoROXoBAwJ3tb0WveoVktBstY0XNTE4YH4d-k3bTrQ87eGUNQlVJhaMkc?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Once you did the all, your variable tab look like this

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcetNh7WkgM0qObXW7VQ7Ln63s2GPZmil1UXR5XoLe7T216EccyP6ZFBkPgdhIzUgHrQY25jhRMEhjLsfZOa_7x5uoASMGyFXentDFocJkjFtRLqkPlxZ2gyACfSuch0QhCfxBzQ-mXzW-_YA4T9rM5EXTevKNqLE0?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

You also need to connect the **Begin play Ref setup** and **Tick Events** nodes to your class Begin play and Event Tick areas.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdfW0LnLW4DWKW0equ41EM1TV3AnTyQEgC1BCDiSkKggl0L7HeVHGjek6HmCy42wOO6JXhUhCVLSFQLDqvNP5FGES_adYAvkJWMtomakkO782Rjszz6METUNP1d2CDu7O95ULuUxWO15PiG8SqPyPOISioXE8k_99M?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Great, now that you did it, compile the blueprint again and move to the next stage.

Next step is to implement and connect all the Interface events.\
All <mark style="color:yellow;">Yellow</mark> interface events with Rider Affix should work out of the box after you copied over the code from the Example Rider class into your own characters Event Graph.

This leaves us to connect remaining (affix) **Get\_** and (affix) **Is\_** interface calls

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXf_X3ewgx-GMW1xct5uB0SfatAD7Xc1mhNq_Ke5zJGRLEDwrW49v2GLA0-sPNvKfu89Ysv8_QDScS3p-j97onSDGtLZZo3aMOl6Sf0qRkAi2TqyemRLadzXj5rPl_ora0YXSGVz3DXh0kvnVAOwzm1AwqPMQRNYB8c?key=46QK--VeuIXADJL4pHhiPgg8" alt="" width="375"><figcaption></figcaption></figure>

\
Connect the required plugs in the interface calls like this

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td></td><td><a href="/files/HFAD5J41l0xFqFuOe1OU">/files/HFAD5J41l0xFqFuOe1OU</a></td></tr><tr><td></td><td><a href="/files/3r8ZqaKZuyByOu9DqnjE">/files/3r8ZqaKZuyByOu9DqnjE</a></td></tr><tr><td></td><td><a href="/files/X0kmooDZKIGR9zprlHJK">/files/X0kmooDZKIGR9zprlHJK</a></td></tr><tr><td></td><td><a href="/files/pndfueneWvl3vD2XeWpI">/files/pndfueneWvl3vD2XeWpI</a></td></tr><tr><td></td><td><a href="/files/nzlWqpDqk0jPsE2W3I0J">/files/nzlWqpDqk0jPsE2W3I0J</a></td></tr><tr><td></td><td><a href="/files/j9M3ILYx9SSKzvFMnCWO">/files/j9M3ILYx9SSKzvFMnCWO</a></td></tr><tr><td></td><td><a href="/files/3DTtHFDRd9Mhe7tlkggm">/files/3DTtHFDRd9Mhe7tlkggm</a></td></tr><tr><td></td><td><a href="/files/mkaMIOzaY2FWJhoTfXmp">/files/mkaMIOzaY2FWJhoTfXmp</a></td></tr></tbody></table>

***

### STAGE 2 - Animation Blueprint transfer

Next step is to connect the animation logic (specifically Riding animation states) to your Animation blueprint.

We start the same as for the character class. Open your characters Animation blueprint and add the \
**BPI \_Rider ABP Control** interface to your ABP class and hit Compile

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeXbw_CpTd_2VkYxyQpb-9vWPQIljkGrFh4SWCVeWTBFeezZBW2-4Cd9P0ZqLkQag4zQfl4iTG8ZaKpQXHo9BD2oRndpA3wfWZODlHiYXPWq_ME7so_exTPLSppmQVLgs9kOf82trZ9wY4GChm6I_BwA5lmGibydAI?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Similar to **BP\_Rider** code transfer, you will need to open up **ABP\_HorseRider** and copy over highlighted nodes (example picture bellow), then Hit Compile again.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeuAVbu9mK-SlbvbZSLxdB13dsY5SWFmWJWka2SPL9q6omziZImClIxEkIZKdOeBUyRLnYb86YtmMUp-dR5DYrZoVA4sJbqUAc1MwaJGRc0Ai7Dqn99z9aEqjbbdfVkLqwgmFfj5snbpZHA-DsMp64aRpgoHNEpvGI?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Just like in character class, you will have a lot of errors warning you about missing variables, you'll have to go through each of the missing ones, right click the node and create those variables.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeEJWJmTqA8dwXq-SJhJN7PDnLmhDyRbqXsGpbM8aTqYOl_l6T9-oJr0aeCZkuR_1NfJFLs6O9G7WkGGmwHZkXKJ4UkYTaMXgtriRJ4VV_suN8zWYWKq_rM4ouJNZjLquo191JaF2YUPs4HtjZAWg3dpWtY9MZZYg?key=46QK--VeuIXADJL4pHhiPgg8" alt="" width="375"><figcaption></figcaption></figure>

Additionally, this will include having to recreate all the variables used to Drive animation states in the state machine. It will pop up as errors / warnings in your ABP compile log, just like for the standard code variables, you'll have to go through every single one of them and recreate them.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd_-qmFGrMA8X1aKWk6dPZzyzy9wwvTCNIiCC58IPZcT7qxrXJd-pHfzwLD_N1OhQ2B89gmlXRWIIM7wHBNW6eHg6YSG0s0v8TQf1Gb_WXvCjqF3kZ0Ft9ekNc_DFMcg-hvu_eVW0Ca_oiSPquyGF21EQJp82SaJFQ?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

You will most likely have some logic connected to these nodes bellow, but you need to connect the **Reference setup** node to **Event Blueprint Initialize Animation**\
as well as **Update Animation tick Events** to **Event Blueprint Update Animation**

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcMY6ZR431Ddw-K1TbLDuUMQQUeiNiSdQ1iCDu2YbtwePwjc7EYK1FIVZ5PFxOLzK6vguAa3jwTyKfCNaXPVTNhLBPilV-1ZmoqFqezoDVQdXZv3uVsofqNN-EwToyr-_Cnh84CtDoCT2My1y-NyHjKR6aHtyAv_GI?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Additionally, it's very likely that your character has some form of logic running on tick already, maybe it's IK correction for hands and Feet, maybe it's some form of offset. Regardless, you don't want any logic running on your ABP tick when Rider goes into HorseRiding mode. Which means, you have to branch all your existing Event Tick logic when your character enters Horse mode (except for the Tick events that you just copied over, those ones are intended for horseriding mode). It is recommended you use this node to do so\
![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeNlUtwAw-47xIuBS1c0K4crWr1fxIaccL3SaTkQhRIN1mAe0hEa9Whapu5KCrkpLk1sVEDn2UsFOBxgHGjUVsbu6dZ9ESTQzHcMoIVTHm0C3PVxyKqXJXRzEW53b6qXMvcDJjNcwrU_WGUXcmdPno6X7aj2QAUPQ?key=46QK--VeuIXADJL4pHhiPgg8)

Then, we need to connect the

Grey Interface calls.\
It is recommend that you still go through all the yellow ones to make sure they all got properly carried over when you copied the code.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeLkBPhQNP4Y5Ktg7Fa1vSBoPZ67iba_ftqciBKiUd2EJ49MLzI0wWjnwhJLYGw2pK9fSdAIg8plaVXxYIL1ATuwFAR5Y5GPAFxLRMXW1rpZNTSdTxiXsQfIwYnSNSbbfWHLddH_1qleDlX8p3CCgEa_k68JAuqTQ?key=46QK--VeuIXADJL4pHhiPgg8)

Connect the appropriate variables to these interface calls just like in the pictures bellow.

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td></td><td><a href="/files/rKwYGH2SdyMTImqrIIJx">/files/rKwYGH2SdyMTImqrIIJx</a></td></tr><tr><td></td><td><a href="/files/vy29Deg3OyzSDI8JEliW">/files/vy29Deg3OyzSDI8JEliW</a></td></tr><tr><td></td><td><a href="/files/KgaDGLdT4HGo79ozQqp1">/files/KgaDGLdT4HGo79ozQqp1</a></td></tr><tr><td></td><td><a href="/files/SV4pIu8VJL0YlgE4NXIK">/files/SV4pIu8VJL0YlgE4NXIK</a></td></tr></tbody></table>

Now we need to merge your existing code with the Horse Riding logic in the AnimGraph

You will want to copy entire AnimGraph as is from the ABP\_HorseRider onto your ABP

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXceG1jhXep31IgIMTkCa1VxpEit_6GfXHxiQkHZSsSRdQbDfGgZLLU-1OEGJfguYLjIOZ_zslZ0lieVXjLyh_HuEpIYnlCMSbgzIDdupqRDzVam6BoLVuMbLPuaV3PEim7y-eRuwn1NfbXqitmdli5NJVJHineEyqs?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

In there, the green commented section is the original Epics 3rd Person template character movement.  You can disconnect it, and plug your existing AnimGraph Setup (whatever was originally going to the Output Pose node)

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdQTmIprCfPsmanHwYxYj_uZxfJvU80-X1tkmQ7xJVcwLtmwd6tz7YavjbDs6SNjMRHM1cov1tFoxoGqE9HGcOtjOiCiSZFncegT-YrHpfAWEidrFjWYdPJ_fgEV6cKqnROD5kFYuzZA_clE2Wb3SBYB1SAaGjXFyc?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Your character may differ in size to the original demo character, in which case, he may not socket to the horse in an ideal position when riding it. You can modify the socketing point by opening up the SKEL\_Horse skeleton asset and modifying the RiderSocket location to better fit your character.

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXep47N0HDeor8y4srrUpqS7g3tLFjYgxcoVfa6cf-8IoXLPt7AugotPRqw0KS7EzlizTbsfSJvqWrf5KRBGmjYte9b6DomXeSpbYz7PeZPEzChbNI2L4hZS3vDMpJOulEAhOdLpQLqEsmRJ92bTRrqXzm960dKnkDg?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

That's it! Assuming your character was running on Epics UE5 mannequin Skeleton, your transfer process is complete and you should be able to mount and ride the horse with your personal character actor.

ATTENTION - This section is only relevant if you're using a different skeleton for your Human Character

For this to work with a custom human skeleton, you will have to take few extra steps to make it compatible.

To begin, you need to re-target all humanoid animations to your new skeleton

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfRlm3rZUPloC47Grevzb9K-UAMpw0bdaejEoWgFCmqmmhrfW6T7anwkOv6saHSmhzXUWx8Pm3Pwt2pMXfSu5-F7bgt958NuvMu8yUdP81NXKm0lbLWuuNhwrD51-biAl5_Q8y5YC_pC-4UrLNo4yw-JfFggMwfp9Q?key=46QK--VeuIXADJL4pHhiPgg8)\
Select Rider animation assets and Right click on them to get context menu and choose Retarget Animation Assets<br>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXea6qaGYpfykJjrVJ6-dlisdwJXwAMm2VohOga4D9dGpW8_Ockmr0WPWHb7zLo41ikq6QfCeKEsdCXp797fImsO8dN2GOWcUUGPq8PQL_unbGWNGKp8ECi3IfwUpzqjWFEhOPQ1GDtRSBUR5wUQdzjrzgubiSz2mw?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

You can use the **RTG\_Mannequin** IK retargeter provided with this pack

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcc1F_DYGUoSHUjeDis4SX-AePBiNDfkDVdjCvL9lY0_SoW2RF6T8mXY1uXJ4TF_vNciBdUA2bDVF_llai5k3B9P6kqDBf-urL_sYIfS51-v7vqyOG1AqZ70G2TSkDLzEi5Sf7uqddoay5g9guQlM4q99l3rUTtj8w?key=46QK--VeuIXADJL4pHhiPgg8)

You need to retarget all 21 Rider Animations to your new skeleton. (AnimMan is just an example retarget asset if you're retargeting this to ALS package)

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcXYaBzl6RZCePkDX1HVw8PyfirdqYk_UUGKY2D2dGi5vrUvAfw8nwiElBSRu_0Opaq3_6t57ApbxeTlljGaKYlW98NF9ngz3jA1TswmBzkAScgYACPKm4V--MB-lcoHeBZYIrNk2I850OfNny5geGu_OHYCk1E0MI?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

You also need to recreate BS1D\_RiderMovement blendspace with newly retargeted animations (follow old blendspace asset as a reference)

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeOZkZSm9tVjdFlG6yosoGX_f2_fB7VxVSG9DrILjqZAk9Zhn-eVufcoZqPGZUA1oINLgLl99VHOjcl6HaA-fxWsTBDM2XQxDL51_zPTxML-3PRlwFu-AzPZ_8USAuwAdmc0T-VP-ue-W0AOZqyUL1_mOzlRuEu7jA?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Then you will have to replace all the animation nodes inside your Animation Blueprint with these new retargeted animations. You can do so, by click dragging the animations from Asset browser window within ABP<br>

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdcFPKOFXnjo5oBB7ZFQBusXbkqjVJ0WFjAT0e7wBsoNwqYrExP4oenLPpWThsvk69mEFHbOlxezOL_0fNhr8SvW-R-lNZUnPA5amexlcR2ByRrblRT69JTGHaKJm4TuPrcPG6tvgC9nHOQMLuAYCeceZd6Zc8OogU?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

And drag-dropping them onto the Animation Nodes you want to replace

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd6sgqgAL_zpfIIgs7JOUj_xmOILmNEzS93VTPeJ3FRNxPOCzVmC4ZHoBbovOUmNbdVx78KaXmhRU7LR4RuHuN7l_dlSBBeeKxEcBIHWctpoJmlRW9VpWhzBYH1D_4apPjeoPLpauR83TJs8yrbKsvsmWqJTbLqxA?key=46QK--VeuIXADJL4pHhiPgg8" alt=""><figcaption></figcaption></figure>

Once you did this for every animation state and animation node within the ABP, you're set. Hit compile blueprint and your character should be ready to go and mount the horse.This is the end of this guide!

Thank you for purchasing and using our Horse system package. We hope this guide was useful to you and we would appreciate if you could share your experience with this pack in a form of a review on our marketplace page

<https://www.fab.com/de/listings/0f1d9f24-9f5a-42dd-8934-5d6dbf1bc002>

Have a great day!


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hiveminddocs.gitbook.io/hivemind/code-systems/ultimate-horse-system/integration-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
