Using Synty Live Link in UE5
using GameDevBuddy
Posted on February 2026
In this tutorial, we'll set up the Synty Sidekicks to use Live Link with the help of the GameDevBuddy character creator tool. The GameDevBuddy is a paid tool but its well worth it for the time it saves. You can get 25% off, with the code: D3KRYPTION
STEP 1 - ADD FACIAL CURVES
For each facial body part thats attached to your face, you need to apply animation curves. These curves drive morph targets for facial animation (eyes, mouth, brows, etc).
Open each of the meshes listed below, switch to the Curves tab, paste the curve data provided.
Meshes to Apply Curves To
- Eyebrow (Left) Mesh
- Eyebrow (Right) Mesh
- Eye (Left) Mesh
- Eye (Right) Mesh
- Hair Mesh
- Head Mesh
- Teeth Mesh
- Tongue Mesh
- Ear (Left) Mesh
- Ear (Right) Mesh
- Nose Mesh
- Head Attachment Mesh
- Facial Hair Mesh
Animation Curves
Paste the following into the Curves tab:
AnimCurveViewer(Entries=((CurveName="eyeBlinkLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeLookDownLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeLookInLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeLookOutLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeLookUpLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeSquintLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeWideLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeBlinkRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeLookDownRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeLookInRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeLookOutRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeLookUpRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeSquintRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="eyeWideRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="jawForward",MetaData=(Type=(bMorphtarget=True))),(CurveName="jawLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="jawRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="jawOpen",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthClose",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthFunnel",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthPucker",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthSmileLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthSmileRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthFrownRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthFrownLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthDimpleLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthDimpleRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthStretchLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthStretchRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthRollLower",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthRollUpper",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthShrugLower",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthShrugUpper",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthPressLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthPressRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthLowerDownLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthLowerDownRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthUpperUpLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="mouthUpperUpRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="browDownLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="browDownRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="browInnerUp",MetaData=(Type=(bMorphtarget=True))),(CurveName="browOuterUpLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="browOuterUpRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="cheekPuff",MetaData=(Type=(bMorphtarget=True))),(CurveName="cheekSquintLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="cheekSquintRight",MetaData=(Type=(bMorphtarget=True))),(CurveName="noseSneerLeft",MetaData=(Type=(bMorphtarget=True))),(CurveName="noseSneerRight",MetaData=(Type=(bMorphtarget=True)))))STEP 2 - CREATE THE FACIAL ANIMATION BLUEPRINT
Create a new Animation Blueprint using your Face / Head skeleton. The Animation Blueprint will handle facial animation independently from the body.
In the Event Graph, paste the following logic and create any missing variables.
STEP 3 - SETUP THE ANIM GRAPH
Open the AnimGraph and paste the following logic. This ensures the face follows the body animation correctly while still allowing facial curves to drive morph targets.
STEP 4 - UPDATE ANIMATIONS IN EDITOR
Open your character Blueprint and apply the following editor-only logic. Paste the nodes below and create any missing variables.
STEP 5 - CREATE THE MACRO
Create a new Macro on your character Blueprint with the following logic. On the TRUE branch (bottom path), set the Animation Instance Class to your created FaceABP from step 2.
STEP 6 - UPDATE THE CONSTRUCTION SCRIPT
Finally, modify your Construction Script to use the newly created Macro.
Your character now has a fully functional facial animation setup using live link by simply checking the Use ARKit Face bool and hitting the editor button we added.
Make sure to untick it and CLICK THE BUTTON to remove the AnimBPs.
