> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinemation.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Character setup

> Create a project-owned Sci-Fi FPS Pack character, retarget its animations, and add custom virtual bones.

export const productName_2 = "Sci-Fi FPS Pack"

export const intro_2 = "Add the custom virtual bones required by the target character's procedural animation and IK setup after the animation override is active."

export const skeletonAssetName_0 = "the Skeleton used by SKM_Operator"

export const sourceBoneGuidance_0 = "the parent or reference bone required by the target IK or aiming setup"

export const targetBoneGuidance_0 = "the bone that the virtual bone should follow"

export const virtualBoneNaming_0 = "the naming convention used by the target Animation Blueprint, keeping Unreal's VB prefix"

export const animationBlueprintName_0 = "ABP_SciFi-FPS"

export const expectedResult_2 = "The target Skeleton contains the virtual bones required by ABP_SciFi-FPS, and the procedural graph resolves its IK and aiming targets when BP_ProjectPlayer is previewed."

export const productName_1 = "Sci-Fi FPS Pack"

export const intro_1 = "Use an animation override to keep the source Sci-Fi FPS Pack assets unchanged while you retarget their character and item animations to the project mesh."

export const targetMeshName_0 = "SKM_Operator"

export const overrideAssetName_0 = "DA_SKM_Operator_Override"

export const createOverrideImageCaption_0 = "Create an animation override from the custom skeletal mesh."

export const createOverrideImage_0 = 
  <img
    src="/images/gameplay-framework/unreal/CreateAnimationOverrideMenu.png"
    alt="Unreal Content Browser with SKM_Operator selected and Create Animation Override highlighted under Scripted Asset Actions"
  />

export const targetConfigName_0 = "DA_SciFi-FPS_Config"

export const targetConfigImageCaption_0 = "Assign the target configuration and character mesh to the override asset."

export const targetConfigImage_0 = 
  <img
    src="/images/gameplay-framework/unreal/AnimationOverride_AssignTargetConfig.png"
    alt="Animation override data asset with Config set to DA_SciFi-FPS_Config and Character Mesh set to SKM_Operator"
  />

export const retargetActionImageCaption_0 = "Open Retarget Animations for the created override asset."

export const retargetActionImage_0 = 
  <img
    src="/images/gameplay-framework/unreal/AnimationOverride_RetargetAnimations.png"
    alt="Unreal Content Browser context menu for DA_SKM_Operator_Override with Retarget Animations highlighted"
  />

export const ikRetargeterName_0 = "IKRetargeter_UE5_UE5"

export const retargetAssetSummary_0 = "54 animation assets and 4 Animation Blueprints"

export const retargeterImageCaption_0 = "Choose the UE5-to-UE5 IK Retargeter in the Override Retarget window."

export const retargeterImage_0 = 
  <img
    src="/images/gameplay-framework/unreal/AnimationOverride_Retarget_PickIKRetargeterAsset.png"
    alt="Override Retarget window with IKRetargeter_UE5_UE5 selected and UE4 and UE5 retargeter assets visible"
  />

export const resultFolderName_0 = "Retargeted"

export const resultFolderImageCaption_0 = "Choose the project-owned folder for the generated retargeted assets."

export const resultFolderImage_0 = 
  <img
    src="/images/gameplay-framework/unreal/AnimationOverride_Retarget_ResultFolder.png"
    alt="Unreal Content Browser showing the Retargeted folder and DA_SKM_Operator_Override data asset"
  />

export const characterBlueprintName_1 = "BP_ProjectPlayer"

export const finalMeshImageCaption_0 = "Set the target mesh on the character Blueprint Mesh component."

export const finalMeshImage_0 = 
  <img
    src="/images/gameplay-framework/unreal/AnimationOverride_AssignCustomCharacterMesh.png"
    alt="Character Blueprint Mesh component with Skeletal Mesh Asset set to SKM_Operator"
  />

export const finalStateImageCaption_0 = "Final state with the animation override added under the Gameplay Animation component Overrides list."

export const finalStateImage_0 = 
  <img
    src="/images/gameplay-framework/unreal/AnimationSettings_AddAnimationOverrideAsset.png"
    alt="Gameplay Animation component with DA_SKM_Operator_Override added under Overrides"
  />

export const expectedResult_1 = "BP_ProjectPlayer uses SKM_Operator, AC_GameplayAnimation contains DA_SKM_Operator_Override, and the override maps route playback to retargeted assets without modifying the original Sci-Fi FPS Pack content."

export const productName_0 = "Sci-Fi FPS Pack"

export const intro_0 = "Create a child of the supplied character, retain the inherited Gameplay Framework and ShooterCore components, configure the supplied item classes, and validate the project pawn."

export const characterBlueprintName_0 = "BP_ProjectPlayer"

export const characterClass_0 = "BP_SciFi_Character"

export const inheritedComponents_0 = <><code>Camera</code>, <code>AC_FirstPersonCamera</code>, <code>AC_GameplayAnimation</code>, <code>AC_IKMotionPlayer</code>, and <code>AC_RecoilAnimation</code></>

export const characterComponentsCaption_0 = "BP_SciFi_Character inherits camera, gameplay animation, IK motion, recoil, and character presentation components."

export const characterComponentsImage_0 = 
  <img
    src="/images/sci-fi-fps-pack/unreal/sci-fi-fps_character-components.png"
    alt="BP SciFi Character Components panel with inherited camera, animation, IK motion, recoil, and mesh components"
  />

export const itemClasses_0 = <><code>BP_ARX_Mk2</code>, <code>BP_Gepard</code>, <code>BP_M97</code>, <code>BP_Onyx</code>, <code>BP_RPG90</code>, and <code>BP_TP12</code>, or a tested subset</>

export const itemClassesCaption_0 = "BP_SciFi_Character item class list with the six supplied Sci-Fi weapons."

export const itemClassesImage_0 = 
  <img
    src="/images/sci-fi-fps-pack/unreal/sci-fi-fps_character-details-items-list.png"
    alt="BP SciFi Character Details panel listing ARX Mk2, Gepard, M97, Onyx, RPG90, and TP12 item classes"
  />

export const mappingContexts_0 = <><code>IMC_Gameplay_Core</code> and <code>IMC_Shooter_Core</code></>

export const possessionCaption_0 = "BP_Gameplay_Character possession event extending the parent setup path."

export const possessionImage_0 = 
  <img
    src="/images/gameplay-framework/unreal/gameplay-character_event-posessed.png"
    alt="BP Gameplay Character On Possessed Blueprint event calling the character initialization flow"
  />

export const demoMap_0 = "/Game/KINEMATION/Sci-fi_FPS_Pack/Demo/Maps/Sci-fi_Shooter_Map"

export const expectedResult_0 = "BP_ProjectPlayer is the project-owned child character, inherits the supplied runtime components, spawns the configured item classes, and responds to the shared Gameplay Framework and ShooterCore input contexts."

This setup combines the pack character workflow with the [Animation override](/sci-fi-fps-pack/unreal/tutorials/animation-override) workflow. Create the project character, retarget the animation set to its mesh, apply the override, and then add any virtual bones required by the procedural Animation Blueprint.

## Before you begin

* Complete [Installation](/sci-fi-fps-pack/unreal/get-started/installation) and review [Sci-Fi content](/sci-fi-fps-pack/unreal/get-started/sci-fi-content).
* Create project-owned folders for the child Blueprint, animation configuration, override asset, retargeted assets, and virtual-bone changes.
* Prepare <code>SKM\_Operator</code> and the compatible <code>IKRetargeter\_UE5\_UE5</code> asset.
* Keep the target mesh, Skeleton, Animation Blueprint, and UE4 or UE5 animation family compatible.

## Set up {productName_0}

{intro_0}

<Steps>
  <Step title="Create a project character">
    Create a child Blueprint named <code>{characterBlueprintName_0}</code> from <code>{characterClass_0}</code>. Store the child in a project-owned content folder.
  </Step>

  <Step title="Preserve inherited runtime components">
    Keep {inheritedComponents_0}. Configure project-specific behavior in the child instead of rebuilding the parent flow.

    <Frame caption={characterComponentsCaption_0}>
      {characterComponentsImage_0}
    </Frame>
  </Step>

  <Step title="Configure the item classes">
    Populate <code>ItemClasses</code> with {itemClasses_0}. The parent spawns these classes into the runtime <code>Items</code> array.

    <Frame caption={itemClassesCaption_0}>
      {itemClassesImage_0}
    </Frame>
  </Step>

  <Step title="Initialize possession and input">
    Call the parent <code>OnPossessed</code> behavior before project-specific setup. Add {mappingContexts_0} to the owning local player's Enhanced Input subsystem.

    <Frame caption={possessionCaption_0}>
      {possessionImage_0}
    </Frame>
  </Step>

  <Step title="Select the pawn and test">
    Set <code>{characterBlueprintName_0}</code> as the default pawn in a valid project game mode. Open <code>{demoMap_0}</code> and run play-in-editor.
  </Step>
</Steps>

<Check>
  {expectedResult_0}
</Check>

## Create an animation override for {productName_1}

{intro_1}

<Steps>
  <Step title="Create the override asset">
    In the Content Browser, select <code>{targetMeshName_0}</code>. Right-click it and choose **Scripted Asset Actions > Create Animation Override**. Unreal creates <code>{overrideAssetName_0}</code> as a data asset.

    <Frame caption={createOverrideImageCaption_0}>
      {createOverrideImage_0}
    </Frame>
  </Step>

  <Step title="Assign the target configuration">
    Select <code>{overrideAssetName_0}</code>. Set **Config** to <code>{targetConfigName_0}</code> and confirm that **Character Mesh** references <code>{targetMeshName_0}</code>.

    <Frame caption={targetConfigImageCaption_0}>
      {targetConfigImage_0}
    </Frame>
  </Step>

  <Step title="Open the retarget window">
    Right-click <code>{overrideAssetName_0}</code> and choose **Scripted Asset Actions > Retarget Animations**.

    <Frame caption={retargetActionImageCaption_0}>
      {retargetActionImage_0}
    </Frame>
  </Step>

  <Step title="Configure and run the retarget">
    In the **Retargeting** section, set **IKRetargeter** to <code>{ikRetargeterName_0}</code>. Confirm that **Source Mesh** and **Target Mesh** resolve to the intended skeletons. Review {retargetAssetSummary_0} under **Animations** and **Anim Blueprints**, then click **Retarget**.

    <Frame caption={retargeterImageCaption_0}>
      {retargeterImage_0}
    </Frame>
  </Step>

  <Step title="Choose the result folder">
    Choose the project-owned <code>{resultFolderName_0}</code> folder when the retarget window asks where to store the generated assets. Keep generated files outside the imported pack content.

    <Frame caption={resultFolderImageCaption_0}>
      {resultFolderImage_0}
    </Frame>

    After retargeting completes, select <code>{overrideAssetName_0}</code> again and run **Scripted Asset Actions > Update Override**. This refreshes the **Animation Overrides** and **Anim Blueprint Overrides** maps with the generated replacements.
  </Step>

  <Step title="Apply the override to the character Blueprint">
    Open <code>{characterBlueprintName_1}</code>. Select its **Mesh** component and set **Skeletal Mesh Asset** to <code>{targetMeshName_0}</code>.

    <Frame caption={finalMeshImageCaption_0}>
      {finalMeshImage_0}
    </Frame>

    Then select the **Gameplay Animation** component (<code>AC\_GameplayAnimation</code>) and add <code>{overrideAssetName_0}</code> under **Overrides**. Save the Blueprint. The override list should contain the new asset as shown in the final state.

    <Frame caption={finalStateImageCaption_0}>
      {finalStateImage_0}
    </Frame>
  </Step>
</Steps>

<Check>
  {expectedResult_1}
</Check>

## Add custom virtual bones to {productName_2}

{intro_2}

Virtual bones are non-skinnable entries in a Skeleton. Each one is parented to a source bone and follows a separate target bone. Animation Blueprints can use them as stable IK, aiming, or look-at targets.

<Steps>
  <Step title="Open the target Skeleton">
    Open <code>{skeletonAssetName_0}</code> in the Animation or Skeleton Editor. Confirm that this is the Skeleton used by the target character mesh and procedural Animation Blueprint.
  </Step>

  <Step title="Choose the source bone">
    In the **Skeleton Tree**, select {sourceBoneGuidance_0}. This bone becomes the parent of the new virtual bone.
  </Step>

  <Step title="Add the virtual bone">
    Right-click the selected bone and choose **Add Virtual Bone**. In **Pick Target Bone**, choose {targetBoneGuidance_0}. Unreal adds a <code>VB</code>-prefixed entry to the Skeleton Tree.
  </Step>

  <Step title="Name and repeat the setup">
    Rename the virtual bone using {virtualBoneNaming_0}. Repeat the process for each target required by <code>{animationBlueprintName_0}</code>, then save the Skeleton.
  </Step>

  <Step title="Verify the Animation Blueprint">
    Open <code>{animationBlueprintName_0}</code> and confirm that its IK, aiming, or look-at nodes reference the new virtual bones. Preview a movement and aiming pose before testing the character in play-in-editor.
  </Step>
</Steps>

<Note>
  Virtual bones belong to the Skeleton and are generated for animation playback. They do not add skinned geometry or replace a required authored bone.
</Note>

<Check>
  {expectedResult_2}
</Check>

## Next step

Continue to [Project integration](/sci-fi-fps-pack/unreal/tutorials/project-integration).
