Skip to content

Give a character its own idle breaks and faces

Designer · 20 min · No code

Result: one companion (an active member the AI drives) fidgets with its own clips and has its own temperament at rest: a cheerful brawler laughs when it turns to a friend, a deadpan lookout looks bored. Every other character keeps its own. You edit one asset per character, and the face table if you want a new expression.

Before you start

  • Companion AI and aggro: when a resting companion strolls, turns to a friend or pulls a face. This recipe only changes which clip and which face.
  • The character needs an anim profile: the data asset set as Anim Profile in its pawn Blueprint's Class Defaults (XenoCore › Animation). Every shipped VRoid member has one beside its pawn, for example Characters/VRoid/Kael/DA_XenoCore_AnimProfile_VRoid_L. For anyone else, make one as in Give a character its own combat animations, step 1.
  • Faces work only on a character with a face: a VRoid member. A Mannequin-bodied member still gets its idle breaks, still turns to its friends and looks at them, but shows no expression.
  • Idle-break clips are animation sequences (not montages) on the UE5 Mannequin skeleton (SK_Mannequin). Characters/Core/Animations/IdleBreaks ships nine you can use: AS_XenoCore_IdleBreak_Browse, _GimmeBreak, _Greeting, _Impatient, _Poise, _Relaxed, _Sneeze, _Stretch and _Waiting. Lyra's own MM_Unarmed_IdleBreak_Fidget, MM_Unarmed_IdleBreak_Scan and MF_Unarmed_Idle_Break work too.

Steps

1. Give the character its own idle breaks

  1. In the Content Browser, double-click the character's anim profile (for Kael, Characters/VRoid/Kael/DA_XenoCore_AnimProfile_VRoid_L).
  2. Under Idle, click + beside Idle Breaks and pick a clip. Repeat for each clip. These play while the weapon is sheathed. Four is a good number: one is picked at random each time and never the same one twice running.
  3. Leave Armed Idle Breaks empty unless you have clips made for holding the weapon. Empty means the stance's own break plays with the weapon out (for the greatsword, Kwang's laugh).
  4. Click Save.

Fails silently: an unarmed fidget with the sword out

A clip in Armed Idle Breaks plays with the weapon in hand. An unarmed fidget there swings its arms straight through the sword, and nothing complains. Leave the list empty rather than borrow an unarmed clip.

How often the character fidgets is not in the profile: it is Idle Break Delay and Idle Break Jitter (XenoCore › Idle Break) in the Class Defaults of the stance's layer Blueprint in Characters/Player/AnimLayers (for example ABP_XenoCore_UnarmedAnimLayers). That setting is shared by everyone using the stance. See Animation.

2. Give the character a temperament

  1. In the same profile, under Face, click + beside Social Expressions to add an entry. These are the faces it pulls when it turns to a companion at rest, and when a companion turns to it.
  2. For each entry set:
    • Expression: a row name from Characters/Core/Face/DT_XenoCore_FaceExpressions, for example Smile, Laugh, Smug or Bored.
    • Chance: how likely, against the other entries in this list.
    • Intensity: 0 to 1, how strongly it is worn.
    • Duration: seconds.
  3. Add entries to Solo Expressions the same way. These are pulled now and then while the character stands alone.
  4. Click Save.

Both lists empty means a neutral face at rest. The faces for battle, a Topple, being downed or a victory come from the face's own rules and are not affected. (See the glossary for Topple and downed.)

The shipped members show the range: Kael is warm (Smile, Happy, Laugh, Thinking), Mira playful (Laugh, Happy, Wink, Giggle), Nia dry (Smug, Smile, Annoyed, Bored).

3. (Optional) Add an expression of your own

  1. Open Characters/Core/Face/DT_XenoCore_FaceExpressions and click Add in the Data Table editor's toolbar. Rename the new row (right-click it > Rename). Its name is what profiles, face rules and Blueprints ask for.
  2. In the row's Curves, click + once per face curve, type the curve name as the key and its weight at full intensity as the value. Use the VRM presets: happy, angry, sad, relaxed, surprised, aa, ih, ou, ee, oh, blink, blinkLeft, blinkRight. Most expressions are a mix: the shipped Annoyed is angry 0.45 with blink 0.3, for narrowed eyes under a half frown.
  3. Tick Suppress Blink for an expression whose eyes are already shut or squeezed.
  4. For movement on top of the mix, such as a laugh's mouth, set Pulse Curve (for example aa), Pulse Weight and Pulse Rate (cycles per second).
  5. Click Save, then use the row name in a profile.

Fails silently: a curve the face does not have

A curve name the VRoid model's face does not have shows nothing and logs nothing, exactly like a typo. The VRM presets above are known to reach the face. Check any row that uses a raw Fcl_* morph curve in Play before you rely on it.

4. (Optional) Play a face from a Blueprint

Call Play Expression On Actor with the character (its pawn or its cosmetic part), a row name, a weight and a duration: for a cutscene beat, a dialogue line or a quest reward. It returns false and does nothing on a character without a face, so it is safe to call on anyone.

To make a companion look at something at the same time, take the companion's controller (Get Controller), Cast To XenoCorePartyMemberController, and call Request Attention on it with the actor and a number of seconds. A player-controlled character has no such controller, so the cast fails and nothing happens.

Test it

  1. Open Maps/L_XenoCore_GaurPlain with the character in the active party, and press Play.
  2. Walk a few steps and stop. Stand still for half a minute.
  3. The character takes its own fidgets from your Idle Breaks, not in step with the others, and no clip twice running.
  4. Now and then it walks up to a companion, the two look at each other, and it wears one of its Social Expressions; the companion may answer with one of its own a moment later.
  5. Draw your weapon. With Armed Idle Breaks empty, its armed fidget is the stance's own.

Idle Breaks and Armed Idle Breaks are copied once, when the body first animates: if you change them while playing, stop and press Play again. Social Expressions and Solo Expressions are read each time a face is chosen, so edits to those show without a restart.

If it doesn't work

Symptom Cause
The character never fidgets The idle break waits Idle Break Delay (8 s) plus up to Idle Break Jitter (6 s) of standing completely still. Out of battle a companion may stroll off before then
It still plays the old stance fidget The Anim Profile is set on a Blueprint the character does not spawn as, or the clips went into the other list (Idle Breaks is weapon away, Armed Idle Breaks weapon drawn)
Saving the pawn reports a clip on the wrong skeleton An idle-break clip is not on SK_Mannequin. Retarget it, or use one of the shipped clips
No face ever shows The character has no face (a Mannequin body), or both expression lists are empty, or Chance is 0 on every entry
One expression never shows The row name is misspelt, or the row uses a curve the face does not have. Both fail silently
Companions never turn to each other They never rest: the leader keeps moving. No activity starts while the leader moves faster than Leader Moving Speed (60 cm/s), a parameter of the XenoCore Party Hold task in Characters/Party/AI/ST_XenoCore_PartyMember