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
| Operation | Hint | Description |
|---|---|---|
list_characters | readOnly | List all character Blueprint classes in the project |
get_character_info | readOnly | Get movement, mesh, and ability data for a character |
set_movement_params | idempotent | Tune CharacterMovementComponent parameters |
create_data_asset | — | Create a character data asset from a template |
update_stats | idempotent | Update stat values on a character data asset |
create_stats_table | — | Create a DataTable for character stats |
list_characters
Returns all Blueprint classes that extend Character (or a Character subclass) in the project.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | no | Restrict to a content path prefix. Default: /Game/ |
parent_class | string | no | Filter 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
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | Full 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
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | Full content path of the character Blueprint |
params | object | yes | Map of movement parameter names to new values |
Commonly Tuned Parameters
| Parameter | Type | Description |
|---|---|---|
MaxWalkSpeed | float | Max speed while walking (cm/s) |
MaxRunSpeed | float | Max speed while running (cm/s) — set via custom variable if your BP uses one |
JumpZVelocity | float | Launch velocity for jumps (cm/s) |
GravityScale | float | Gravity multiplier (1.0 = normal) |
MaxAcceleration | float | Max acceleration (cm/s²) |
BrakingDecelerationWalking | float | Deceleration when no input |
GroundFriction | float | Friction factor when grounded |
AirControl | float | Lateral control while airborne (0–1) |
bOrientRotationToMovement | bool | Rotate character to face movement direction |
bUseControllerDesiredRotation | bool | Rotate toward controller yaw |
RotationRate | object | { pitch, yaw, roll } rotation speed (deg/s) |
CrouchedHalfHeight | float | Capsule half-height when crouched |
MaxStepHeight | float | Max 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_paramsis taggedidempotentHint— 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
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | Destination content path for the new asset |
template | string | yes | Data asset class template name, e.g. CharacterData, EnemyData |
values | object | no | Initial 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
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | Full content path of the data asset |
stats | object | yes | Map 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_statscalls 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
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | Destination content path for the DataTable |
row_struct | string | yes | Name of the struct that defines each row's columns |
rows | array | no | Initial 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 }
})