Example Workflows
Common Blueprint AI Assistant usage patterns and real-world examples.
Common Blueprint AI Assistant operations. All examples use batch JSON format unless otherwise noted. Run batches with:
UnrealEditor-Cmd.exe YourProject.uproject -run=BlueprintAIAssistant -verb=batch -input=C:/path/to/batch.json -nullrhi -nosplash -nosound -unattended
1. Export a Blueprint for Review#
Single-verb invocations (no batch needed):
# Quick readable export to terminal (summary is the default format)
-verb=export -asset=/Game/Characters/BP_PlayerCharacter
# Detailed export to file (includes GUIDs)
-verb=export -asset=/Game/Characters/BP_PlayerCharacter --format=detail -out=C:/review/player.txt
# Overview-level export (minimal tokens, good for scanning many BPs)
-verb=export -asset=/Game/Characters/BP_PlayerCharacter --format=overview -out=C:/review/player_overview.txt
2. Scan All Blueprints in a Folder#
{
"operations": [
{"verb": "list", "path": "/Game/Abilities", "class": "Blueprint"}
]
}
Use the returned asset paths to batch-export each one:
{
"operations": [
{"verb": "export", "asset": "/Game/Abilities/BP_FireAbility", "-out": "C:/exports/fire.txt"},
{"verb": "export", "asset": "/Game/Abilities/BP_IceAbility", "-out": "C:/exports/ice.txt"},
{"verb": "export", "asset": "/Game/Abilities/BP_HealAbility", "-out": "C:/exports/heal.txt"}
]
}
3. Add a Replicated Variable#
Add a Health variable with replication, clamping, and metadata:
{
"defaultAsset": "/Game/Characters/BP_Enemy",
"operations": [
{"verb": "add-var", "name": "Health", "type": "Float"},
{"verb": "set-var-default", "name": "Health", "value": "100.0"},
{"verb": "set-var-flags", "name": "Health", "flags": "EditAnywhere,BlueprintReadWrite", "repNotify": "OnRep_Health"},
{"verb": "set-var-meta", "name": "Health", "clampMin": "0", "clampMax": "1000", "category": "Combat"},
{"verb": "compile"},
{"verb": "save"}
]
}
4. Create a Custom Event with Nodes#
Create an event, add a PrintString call, and wire them together:
{
"defaultAsset": "/Game/Abilities/BP_FireAbility",
"operations": [
{"verb": "add-node", "type": "CustomEvent", "eventName": "OnAbilityActivated", "posX": 0, "posY": 0},
{"verb": "add-node", "type": "CallFunction", "function": "PrintString", "class": "KismetSystemLibrary", "posX": 400, "posY": 0},
{"verb": "set-pin-default", "node": "$2", "pin": "InString", "value": "Ability Activated!"},
{"verb": "connect", "srcNode": "$1", "srcPin": "then", "dstNode": "$2", "dstPin": "execute"},
{"verb": "compile"},
{"verb": "save"}
]
}
$1 and $2 resolve to the node GUIDs created by the first and second add-node operations.
5. DataTable Operations#
List rows, add a new row, and populate its fields:
{
"defaultAsset": "/Game/Data/DT_WeaponStats",
"operations": [
{"verb": "dt-list-rows"},
{"verb": "dt-add-row", "row": "Shotgun"},
{"verb": "dt-set-field", "row": "Shotgun", "field": "Damage", "value": "85.0"},
{"verb": "dt-set-field", "row": "Shotgun", "field": "FireRate", "value": "0.8"},
{"verb": "dt-set-field", "row": "Shotgun", "field": "Range", "value": "1200.0"},
{"verb": "dt-set-field", "row": "Shotgun", "field": "MagazineSize", "value": "6"},
{"verb": "save"}
]
}
6. Material Instance Parameter Setup#
Set color and emissive parameters on a material instance:
{
"defaultAsset": "/Game/Materials/MI_EnemyGlow",
"operations": [
{"verb": "mi-set-param", "name": "BaseColor", "value": "(R=1.0,G=0.2,B=0.2,A=1.0)", "paramType": "Vector"},
{"verb": "mi-set-param", "name": "EmissiveStrength", "value": "5.0", "paramType": "Scalar"},
{"verb": "mi-set-param", "name": "RoughnessMultiplier", "value": "0.3", "paramType": "Scalar"},
{"verb": "save"}
]
}
7. Create a New Blueprint from Scratch#
Create a pickup actor with a mesh, overlap sphere, and heal amount variable:
{
"operations": [
{"verb": "create", "asset": "/Game/Actors/BP_HealthPickup", "parent": "Actor"},
{"verb": "add-component", "asset": "/Game/Actors/BP_HealthPickup", "name": "PickupMesh", "class": "StaticMeshComponent"},
{"verb": "add-component", "asset": "/Game/Actors/BP_HealthPickup", "name": "OverlapSphere", "class": "SphereComponent"},
{"verb": "add-var", "asset": "/Game/Actors/BP_HealthPickup", "name": "HealAmount", "type": "Float"},
{"verb": "set-var-default", "asset": "/Game/Actors/BP_HealthPickup", "name": "HealAmount", "value": "50.0"},
{"verb": "set-var-flags", "asset": "/Game/Actors/BP_HealthPickup", "name": "HealAmount", "flags": "EditAnywhere,BlueprintReadWrite"},
{"verb": "set-var-meta", "asset": "/Game/Actors/BP_HealthPickup", "name": "HealAmount", "category": "Pickup", "tooltip": "Amount of health restored on overlap"},
{"verb": "compile", "asset": "/Game/Actors/BP_HealthPickup"},
{"verb": "save", "asset": "/Game/Actors/BP_HealthPickup"}
]
}
Without defaultAsset, each operation specifies the asset path explicitly. Use defaultAsset to avoid repetition:
{
"defaultAsset": "/Game/Actors/BP_HealthPickup",
"operations": [
{"verb": "create", "parent": "Actor"},
{"verb": "add-component", "name": "PickupMesh", "class": "StaticMeshComponent"},
{"verb": "add-component", "name": "OverlapSphere", "class": "SphereComponent"},
{"verb": "add-var", "name": "HealAmount", "type": "Float"},
{"verb": "set-var-default", "name": "HealAmount", "value": "50.0"},
{"verb": "set-var-flags", "name": "HealAmount", "flags": "EditAnywhere,BlueprintReadWrite"},
{"verb": "set-var-meta", "name": "HealAmount", "category": "Pickup", "tooltip": "Amount of health restored on overlap"},
{"verb": "compile"},
{"verb": "save"}
]
}
8. Add a Complete Function with Parameters and Logic#
Create a CalculateDamage function with input/output parameters and internal nodes:
{
"defaultAsset": "/Game/Characters/BP_PlayerCharacter",
"operations": [
{"verb": "add-function", "name": "CalculateDamage"},
{"verb": "add-function-param", "function": "CalculateDamage", "name": "BaseDamage", "type": "Float", "direction": "input"},
{"verb": "add-function-param", "function": "CalculateDamage", "name": "DamageMultiplier", "type": "Float", "direction": "input"},
{"verb": "add-function-param", "function": "CalculateDamage", "name": "FinalDamage", "type": "Float", "direction": "output"},
{"verb": "add-node", "type": "CallFunction", "function": "Multiply_FloatFloat", "class": "KismetMathLibrary", "graph": "CalculateDamage", "posX": 300, "posY": 0},
{"verb": "compile"},
{"verb": "save"}
]
}
9. Audit CDO Properties Across Multiple Blueprints#
Read Class Default Object values from several Blueprints in a single batch:
{
"operations": [
{"verb": "read-cdo", "asset": "/Game/Characters/BP_PlayerCharacter"},
{"verb": "read-cdo", "asset": "/Game/Characters/BP_Enemy_Melee"},
{"verb": "read-cdo", "asset": "/Game/Characters/BP_Enemy_Ranged"},
{"verb": "read-cdo", "asset": "/Game/Characters/BP_Boss"}
]
}
The batch result contains all four CDO snapshots. Compare default values across the project without opening any assets in the editor.
10. Widget Blueprint Setup#
Add UI elements to a Widget Blueprint:
{
"defaultAsset": "/Game/UI/WBP_HealthBar",
"operations": [
{"verb": "widget-add", "name": "HealthContainer", "class": "HorizontalBox"},
{"verb": "widget-add", "name": "HealthBar", "class": "ProgressBar", "parent": "HealthContainer"},
{"verb": "widget-set-property", "widget": "HealthBar", "property": "FillColorAndOpacity", "value": "(R=0.2,G=0.8,B=0.2,A=1.0)"},
{"verb": "widget-add", "name": "HealthText", "class": "TextBlock", "parent": "HealthContainer"},
{"verb": "widget-set-property", "widget": "HealthText", "property": "Text", "value": "100"},
{"verb": "compile"},
{"verb": "save"}
]
}
11. Behavior Tree Inspection#
Read the structure of a Behavior Tree and its associated Blackboard:
{
"operations": [
{"verb": "bt-list", "asset": "/Game/AI/BT_EnemyPatrol"},
{"verb": "export", "asset": "/Game/AI/BT_EnemyPatrol"},
{"verb": "bb-list-keys", "asset": "/Game/AI/BB_EnemyData"}
]
}
12. Register Gameplay Tags#
Add project-level gameplay tags for an ability system:
{
"operations": [
{"verb": "tag-add", "tag": "Ability.Combat.HeavyAttack", "comment": "Heavy melee attack ability tag"},
{"verb": "tag-add", "tag": "Ability.Combat.LightAttack", "comment": "Light melee attack ability tag"},
{"verb": "tag-add", "tag": "Ability.Movement.Dash", "comment": "Dash movement ability tag"},
{"verb": "tag-add", "tag": "Status.Stunned", "comment": "Character is stunned and cannot act"},
{"verb": "tag-add", "tag": "Status.Invulnerable", "comment": "Character cannot take damage"}
]
}