Intermediate

Complete reference for all 6 character operations: list characters, inspect stats, tune movement, create data assets and stat tables.

unreal_character

The unreal_character tool provides operations for working with character Blueprints and their associated data — listing characters, reading movement and ability parameters, tuning locomotion, creating data assets, and managing stat tables. It exposes 6 operations.

Operations at a Glance

OperationHintDescription
list_charactersreadOnlyList all character Blueprint classes in the project
get_character_inforeadOnlyGet movement, mesh, and ability data for a character
set_movement_paramsidempotentTune CharacterMovementComponent parameters
create_data_assetCreate a character data asset from a template
update_statsidempotentUpdate stat values on a character data asset
create_stats_tableCreate a DataTable for character stats

list_characters

Returns all Blueprint classes that extend Character (or a Character subclass) in the project.

Parameters

ParameterTypeRequiredDescription
pathstringnoRestrict to a content path prefix. Default: /Game/
parent_classstringnoFilter to a specific parent class name
{
  "operation": "list_characters",
  "params": {}
}
{
  "operation": "list_characters",
  "params": {
    "path": "/Game/Characters/Enemies/",
    "parent_class": "BP_EnemyBase"
  }
}

Response

{
  "characters": [
    {
      "name": "BP_Player",
      "path": "/Game/Characters/BP_Player",
      "parent_class": "/Script/Engine.Character"
    },
    {
      "name": "BP_Enemy_Goblin",
      "path": "/Game/Characters/Enemies/BP_Enemy_Goblin",
      "parent_class": "/Game/Characters/Enemies/BP_EnemyBase"
    }
  ],
  "total": 2
}

get_character_info

Returns detailed information about a character Blueprint — movement component parameters, skeletal mesh assignment, ability system data, and key variable values.

Parameters

ParameterTypeRequiredDescription
pathstringyesFull content path of the character Blueprint
{
  "operation": "get_character_info",
  "params": {
    "path": "/Game/Characters/Enemies/BP_Enemy_Goblin"
  }
}

Response

{
  "name": "BP_Enemy_Goblin",
  "path": "/Game/Characters/Enemies/BP_Enemy_Goblin",
  "parent_class": "/Game/Characters/Enemies/BP_EnemyBase",
  "movement": {
    "MaxWalkSpeed": 300.0,
    "MaxRunSpeed": 600.0,
    "JumpZVelocity": 420.0,
    "GravityScale": 1.0,
    "MaxAcceleration": 2048.0,
    "BrakingDecelerationWalking": 2048.0,
    "GroundFriction": 8.0,
    "bOrientRotationToMovement": true,
    "bUseControllerDesiredRotation": false
  },
  "mesh": {
    "skeletal_mesh": "/Game/Characters/Enemies/SK_Goblin",
    "anim_blueprint": "/Game/Characters/Enemies/ABP_Enemy_Goblin",
    "relative_location": { "x": 0, "y": 0, "z": -90 },
    "relative_rotation": { "pitch": 0, "yaw": -90, "roll": 0 }
  },
  "ability_system": {
    "attribute_set": "/Game/GAS/DA_Goblin_Attributes",
    "granted_abilities": [
      "/Game/GAS/Abilities/GA_Goblin_MeleeAttack",
      "/Game/GAS/Abilities/GA_Goblin_Retreat"
    ]
  },
  "variables": {
    "MaxHealth": 100.0,
    "AggroRange": 800.0,
    "AttackDamage": 15.0
  }
}

set_movement_params

Updates one or more parameters on the character's CharacterMovementComponent. Changes take effect in the next editor session or PIE run.

Parameters

ParameterTypeRequiredDescription
pathstringyesFull content path of the character Blueprint
paramsobjectyesMap of movement parameter names to new values

Commonly Tuned Parameters

ParameterTypeDescription
MaxWalkSpeedfloatMax speed while walking (cm/s)
MaxRunSpeedfloatMax speed while running (cm/s) — set via custom variable if your BP uses one
JumpZVelocityfloatLaunch velocity for jumps (cm/s)
GravityScalefloatGravity multiplier (1.0 = normal)
MaxAccelerationfloatMax acceleration (cm/s²)
BrakingDecelerationWalkingfloatDeceleration when no input
GroundFrictionfloatFriction factor when grounded
AirControlfloatLateral control while airborne (0–1)
bOrientRotationToMovementboolRotate character to face movement direction
bUseControllerDesiredRotationboolRotate toward controller yaw
RotationRateobject{ pitch, yaw, roll } rotation speed (deg/s)
CrouchedHalfHeightfloatCapsule half-height when crouched
MaxStepHeightfloatMax step height the character can walk up
{
  "operation": "set_movement_params",
  "params": {
    "path": "/Game/Characters/BP_Player",
    "params": {
      "MaxWalkSpeed": 400.0,
      "JumpZVelocity": 500.0,
      "AirControl": 0.35,
      "GravityScale": 1.2
    }
  }
}
{
  "operation": "set_movement_params",
  "params": {
    "path": "/Game/Characters/Enemies/BP_Enemy_Goblin",
    "params": {
      "MaxWalkSpeed": 350.0,
      "bOrientRotationToMovement": true,
      "RotationRate": { "pitch": 0, "yaw": 540, "roll": 0 }
    }
  }
}

Note: set_movement_params is tagged idempotentHint — applying the same values twice produces the same result. Safe to parallelize across different character paths.

create_data_asset

Creates a new character data asset (a UPrimaryDataAsset subclass) from a registered template. Data assets store character configuration outside Blueprints, making them easier to tune and data-drive.

Parameters

ParameterTypeRequiredDescription
pathstringyesDestination content path for the new asset
templatestringyesData asset class template name, e.g. CharacterData, EnemyData
valuesobjectnoInitial property values to set on the asset
{
  "operation": "create_data_asset",
  "params": {
    "path": "/Game/Characters/Enemies/DA_Goblin_Config",
    "template": "EnemyData",
    "values": {
      "MaxHealth": 100.0,
      "AttackDamage": 15.0,
      "AggroRange": 800.0,
      "ExperienceReward": 25
    }
  }
}

Response

{
  "path": "/Game/Characters/Enemies/DA_Goblin_Config",
  "type": "EnemyData",
  "created": true
}

update_stats

Updates numeric stat values on an existing character data asset. Useful for balancing passes — change multiple values without opening the editor manually.

Parameters

ParameterTypeRequiredDescription
pathstringyesFull content path of the data asset
statsobjectyesMap of stat names to new values
{
  "operation": "update_stats",
  "params": {
    "path": "/Game/Characters/Enemies/DA_Goblin_Config",
    "stats": {
      "MaxHealth": 120.0,
      "AttackDamage": 18.0,
      "AggroRange": 900.0
    }
  }
}

Tip: Parallelize update_stats calls across multiple data assets to run a full balance pass efficiently. Each call targets a different asset path, so there is no conflict.

// Balance pass — all different assets, safe to parallelize
parallel([
  update_stats({ path: "/Game/.../DA_Goblin_Config",  stats: { MaxHealth: 120, AttackDamage: 18 } }),
  update_stats({ path: "/Game/.../DA_Troll_Config",   stats: { MaxHealth: 400, AttackDamage: 45 } }),
  update_stats({ path: "/Game/.../DA_Skeleton_Config", stats: { MaxHealth: 60,  AttackDamage: 12 } }),
])

create_stats_table

Creates a DataTable asset for character stats. DataTables store rows of structured data and can be read at runtime to drive character parameters.

Parameters

ParameterTypeRequiredDescription
pathstringyesDestination content path for the DataTable
row_structstringyesName of the struct that defines each row's columns
rowsarraynoInitial rows to populate the table. Each element is { name, values }.
{
  "operation": "create_stats_table",
  "params": {
    "path": "/Game/Data/DT_EnemyStats",
    "row_struct": "FEnemyStatsRow",
    "rows": [
      {
        "name": "Goblin",
        "values": { "MaxHealth": 100, "AttackDamage": 15, "MovementSpeed": 300, "ExperienceReward": 25 }
      },
      {
        "name": "GoblinElite",
        "values": { "MaxHealth": 200, "AttackDamage": 25, "MovementSpeed": 350, "ExperienceReward": 60 }
      },
      {
        "name": "Troll",
        "values": { "MaxHealth": 400, "AttackDamage": 45, "MovementSpeed": 200, "ExperienceReward": 150 }
      }
    ]
  }
}

Response

{
  "path": "/Game/Data/DT_EnemyStats",
  "row_struct": "FEnemyStatsRow",
  "rows_created": 3,
  "created": true
}

Common Patterns

Inspect Before Tuning

// Read current values first to understand what you're changing
const info = await get_character_info({ path: "/Game/Characters/BP_Player" })
console.log("Current MaxWalkSpeed:", info.movement.MaxWalkSpeed)

// Apply targeted changes
await set_movement_params({
  path: "/Game/Characters/BP_Player",
  params: {
    MaxWalkSpeed: info.movement.MaxWalkSpeed * 1.1,  // 10% faster
    JumpZVelocity: 500.0
  }
})

Create a Full Enemy Configuration

// 1. Create the Blueprint
await unreal_assets.create_blueprint({
  path: "/Game/Characters/Enemies/BP_Enemy_Troll",
  parent_class: "/Game/Characters/Enemies/BP_EnemyBase"
})

// 2. Set movement parameters
await set_movement_params({
  path: "/Game/Characters/Enemies/BP_Enemy_Troll",
  params: { MaxWalkSpeed: 200.0, JumpZVelocity: 0.0, GravityScale: 1.5 }
})

// 3. Create its data asset
await create_data_asset({
  path: "/Game/Characters/Enemies/DA_Troll_Config",
  template: "EnemyData",
  values: { MaxHealth: 400, AttackDamage: 45, AggroRange: 600, ExperienceReward: 150 }
})