SF
STS Forge

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"}
    ]
}