CodeFizz
ToolsDemoDocsRoadmapChangelogPricingFAQ
Get the plugin

Getting Started

  • Introduction
  • Quick Start
  • Requirements
  • Installing the CLI
  • License & Machines

Guides

  • Installing the Plugin
  • The AI Skill
  • CLI vs MCP
  • Multiple Editors
  • How It Works
  • Discovering Commands

Walkthroughs

  • Build a Blueprint with AI
  • Author a Material Graph
  • Create a Niagara System

Reference

  • Reference
  • Niagara
  • PCG
  • Materials
  • StateTree
  • Sequencer
  • Level Actors
  • Project Settings
  • Blueprints
  • Blueprint Structs
  • Enhanced Input
  • Asset Management
  • Bulk Asset Ops
  • Data Assets
  • Object Properties
  • UMG Widgets
  • Data Tables
  • Curves
  • Console Commands
  • Profiling
  • Core
  • Debug

Help

  • FAQ
  • Troubleshooting
  • For AI Agents
DocsReferenceLevel Actors

Level Actors

Every Level Actors command in CodeFizz Editor Agent, with parameters and examples.

Loading…
PreviousSequencerNextProject Settings
CodeFizz

A drop-in Unreal Engine 5 plugin that exposes the entire editor surface (Blueprints, Materials, Niagara, PCG, StateTree, Insights profiling, and more) over the Model Context Protocol. Connect Claude Code, Cursor, VS Code, or any MCP-compatible client and let your AI build inside the engine.

Product

  • Features
  • Docs
  • Tools
  • Demo
  • Roadmap
  • Changelog
  • Pricing
  • FAQ

Resources

  • Install guide
  • Discord
  • YouTube
  • Open-source edition
  • Manage subscription

Legal

  • Refund Policy
  • Privacy Policy
  • Terms of Service

© 2026 CodeFizz. All rights reserved.

CodeFizz Editor Agent is a CodeFizz product. Payments processed by Polar Software, Inc. (Polar), the Merchant of Record.

42 commands. Each shows its parameters and an example, and has a copyable deep link, so you (or an AI agent) can jump straight to one.

get_actors_in_level

List all actors in the current level

Returns every actor currently placed in the active level, including their names, types, and transforms. Use this to get an overview of level contents before performing targeted operations.

example
  cfa get_actors_in_level
find_actors_by_name

Find actors by name pattern

Searches the current level for actors whose label matches the given pattern. Supports partial matching, so you can find groups of related actors without listing every actor in the level.

ParameterTypeRequiredDescription
patternstringYesName pattern to search
example
  cfa find_actors_by_name --pattern "Light"
  cfa find_actors_by_name --pattern "BP_Conveyor"
spawn_actor

Spawn an actor in the level

Creates a new actor instance in the current level at the specified transform. The actor-type defaults to StaticMeshActor but can be any built-in actor class. Use spawn_blueprint_actor for Blueprint-based actors instead.

ParameterTypeRequiredDescription
namestringYesActor name
actor_typestringNoActor type
locationjsonNoJSON array [x,y,z]
rotationjsonNoJSON array [pitch,yaw,roll]
scalejsonNoJSON array [x,y,z]
static_meshstringNoStatic mesh path
example
  cfa spawn_actor --name "MyCube" --actor-type "StaticMeshActor" --location "[0,0,100]" --rotation "[0,45,0]" --scale "[2,2,2]"
  cfa spawn_actor --name "FloorPlane" --static-mesh "/Engine/BasicShapes/Plane.Plane" --location "[0,0,0]"
search_classes

Search available UClasses by name, optionally filtered by a base class

Enumerates loaded UClasses whose name contains the query (case-insensitive), optionally restricted to subclasses of base_class (e.g. 'ActorComponent', 'Actor', or a full path). Excludes abstract (unless include_abstract), deprecated, and transient/generated classes. Returns name, full path, parent, and is_abstract. Use it to discover the exact class name or path to pass to add_component_to_blueprint, spawn_actor_by_class, etc.

ParameterTypeRequiredDescription
querystringNoCase-insensitive substring to match in the class name
base_classstringNoOnly return subclasses of this class (short name or full path)
max_resultsintNoMaximum number of results
include_abstractboolNoInclude abstract classes (default false)
example
  cfa search_classes --query "StaticMesh" --base-class ActorComponent
  cfa search_classes --query Light --base-class Actor --max-results 20
delete_actor

Delete an actor from the level

Removes a placed actor from the current level by its label name. The deletion is immediate and cannot be undone from the CLI, so verify the target with find_actors_by_name first if unsure.

ParameterTypeRequiredDescription
namestringYesActor name
example
  cfa delete_actor --name "MyCube"
set_actor_transform

Set actor location/rotation/scale

Updates the world transform of an existing actor in the level. You can set any combination of location, rotation, and scale -- omitted fields are left unchanged.

ParameterTypeRequiredDescription
namestringYesActor name
locationjsonNoJSON array [x,y,z]
rotationjsonNoJSON array [pitch,yaw,roll]
scalejsonNoJSON array [x,y,z]
example
  cfa set_actor_transform --name "MyCube" --location "[100,200,50]"
  cfa set_actor_transform --name "MyCube" --rotation "[0,90,0]" --scale "[1,1,2]"
spawn_blueprint_actor

Spawn a Blueprint actor instance

Spawns an instance of a Blueprint asset into the current level. Use this instead of spawn_actor when you need to place a Blueprint-based actor with its full component hierarchy and default properties.

ParameterTypeRequiredDescription
blueprint_pathstringYesBlueprint asset path
locationjsonNoJSON array [x,y,z]
rotationjsonNoJSON array [pitch,yaw,roll]
scalejsonNoJSON array [x,y,z]
namestringNoActor name
example
  cfa spawn_blueprint_actor --blueprint-path "/Game/Blueprints/BP_Miner" --location "[500,0,0]"
  cfa spawn_blueprint_actor --blueprint-path "/Game/Blueprints/BP_ConveyorBelt" --location "[0,0,0]" --rotation "[0,90,0]" --name "Belt_01"
spawn_actor_from_class

Spawn an actor from a class name

Spawns an actor using a C++ or Blueprint class name with individual float parameters for location and rotation instead of JSON arrays. Useful when you know the exact class name and want to specify coordinates directly.

ParameterTypeRequiredDescription
class_namestringYesActor class name
location_xfloatNoX location
location_yfloatNoY location
location_zfloatNoZ location
rotation_yawfloatNoYaw rotation
rotation_pitchfloatNoPitch rotation
rotation_rollfloatNoRoll rotation
example
  cfa spawn_actor_from_class --class-name "PointLight" --location-x 100 --location-y 200 --location-z 300
  cfa spawn_actor_from_class --class-name "AMyCustomActor" --location-z 50 --rotation-yaw 45
get_selected_actors

Get currently selected viewport actors

Returns the list of actors currently selected in the Unreal Editor viewport. Useful for inspecting or modifying whatever the user has selected in the editor.

example
  cfa get_selected_actors
get_world_info

Get current level info (world name, actor count)

Returns metadata about the currently loaded world, including the level name, total actor count, and other summary information. Use this to confirm which level is active before performing operations.

example
  cfa get_world_info
take_screenshot

Capture viewport or editor window to PNG

Captures a screenshot of the editor viewport or entire editor window and saves it as a PNG file. If no file path is specified, an auto-generated path is used. The resulting file can be viewed with the Read tool.

ParameterTypeRequiredDescription
file_pathstringNoOutput file path (default: auto)
modestringNoviewport or window
example
  cfa take_screenshot
  cfa take_screenshot --file-path "C:/Screenshots/level_overview.png" --mode "viewport"
  cfa take_screenshot --mode "window"
focus_viewport

Frame the level viewport on an actor or move the camera

Aims the active level editor perspective viewport. Pass an actor label/name to frame it (like pressing F). Add direction (top/bottom/front/back/left/right/iso) or explicit pitch+yaw to frame it FROM a chosen angle, and fill (0-1) or distance to control how tight the framing is. Or pass an explicit location (and optional rotation) to place the camera directly.

ParameterTypeRequiredDescription
actorstringNoActor label or name to frame in the viewport
directionstringNoView angle preset: top/bottom/front/back/left/right/iso (with actor)
pitchfloatNoCustom camera pitch in degrees (overrides direction; use with actor)
yawfloatNoCustom camera yaw in degrees (overrides direction; use with actor)
fillfloatNoFraction of the frame the actor fills, 0-1 (default 1 = tight)
distancefloatNoExplicit camera distance from the actor (overrides fill)
locationstringNoCamera world position: "(X=..,Y=..,Z=..)" or X,Y,Z
rotationstringNoCamera rotation: "(P=..,Y=..,R=..)" (used with location)
realtimeboolNoEnable viewport Realtime so placed effects simulate (default true)
example
  cfa focus_viewport --actor "ElectricBeamTest"
  cfa focus_viewport --actor "Reactor" --direction "top" --fill 0.8
  cfa focus_viewport --actor "Reactor" --pitch -30 --yaw 120 --distance 1500
  cfa focus_viewport --location "(X=600,Y=-600,Z=400)" --rotation "(P=-25,Y=45,R=0)"
get_scene_map

Context-friendly clustered understanding of the level

Summarizes the level so an agent understands it WITHOUT reading a giant per-actor list (scales 10 -> 100k actors). Default returns: content bounds, per-category counts, and one line per detected CLUSTER (actors grouped by mesh, split spatially via grid+union-find connected components), each tagged with an arrangement (grid/ring/line/scattered via PCA + circle-fit + spacing) plus count, instance count, center, size, folder. Also an ASCII density heatmap of the whole level. Drill into a cluster's raw actors with --drill <id> (paginated). Use --export true to write the full flat per-actor JSON to Exports/ (interchange only). label_filter/class_filter scope by label or class-name substring.

ParameterTypeRequiredDescription
class_filterstringNoOnly include actors whose class NAME contains this substring
label_filterstringNoOnly include actors whose outliner LABEL contains this substring
region_gridboolNoInclude the ASCII density heatmap (default true)
grid_sizeintNoDensity heatmap resolution NxN (4-64)
cell_sizefloatNoClustering merge distance in world units (default: auto ~2x median actor size)
drillintNoReturn the raw actors of cluster <id> instead of the summary
pageintNoDrill page index
page_sizeintNoDrill actors per page
exportboolNoWrite the full flat per-actor JSON to Exports/ (interchange)
example
  cfa get_scene_map
  cfa get_scene_map --drill 0 --page 0
  cfa get_scene_map --label-filter "Brick_"
  cfa get_scene_map --export true
get_mesh_info

Native shape/bounds/pivot of a static mesh asset (before placing)

Inspects a UStaticMesh asset (not a placed actor) so you can plan placement precisely: native bounds (size + half-extent), pivot_offset (bounds center relative to the mesh pivot), bounding sphere radius, the REAL collision shape (convex hulls with vertex counts, boxes, spheres, capsules) which conveys weird shapes far better than an AABB, named sockets with local transforms, and vertex/triangle/LOD/material counts.

ParameterTypeRequiredDescription
mesh_pathstringYesStatic mesh content path (object or package path)
include_collisionboolNoInclude collision primitives (the real shape) (default true)
include_socketsboolNoInclude named sockets with local transforms (default true)
example
  cfa get_mesh_info --mesh-path "/Engine/BasicShapes/Cube.Cube"
  cfa get_mesh_info --mesh-path "/Game/Meshes/SM_Rock" --include-collision true
spawn_actors_batch

Spawn many actors from one computed array in a single call

Spawns a whole layout (city, pyramid, grid...) at once from a JSON array of specs, in a single undo transaction. Each entry: {mesh, location [x,y,z], rotation [p,y,r], scale [x,y,z], name, type}. Top-level 'mesh'/'type'/'name_prefix' act as defaults so a shared-mesh batch stays compact. Far faster than one spawn per actor (one bridge call, one mesh load per unique path). Pass the params via --json - (stdin) for large batches. Manage/revert afterwards with delete_actors_batch --name-prefix.

ParameterTypeRequiredDescription
actorsjsonYesJSON array of {mesh,location,rotation,scale,name,type}
meshstringNoDefault static mesh path for entries that omit it
typestringNoDefault actor type (StaticMeshActor/PointLight/SpotLight/DirectionalLight/CameraActor)
name_prefixstringNoAuto-name entries as <prefix><index> when they omit 'name'
folderstringNoPut all spawned actors into this outliner folder (organized on creation)
return_namesboolNoReturn the created labels (default false = counts only)
example
  # build the whole layout in one call (params piped as JSON on stdin)
  echo '{"mesh":"/Engine/BasicShapes/Cube.Cube","name_prefix":"City_","actors":[{"location":[0,0,0],"scale":[10,10,1]},{"location":[500,0,250],"scale":[3,3,5]}]}' | cfa spawn_actors_batch --json -
delete_actors_batch

Bulk-delete actors by name/label prefix or an explicit list

Deletes every actor whose label/name starts with name_prefix, and/or is in the names list, in a single undo transaction. Reverts a spawn_actors_batch in one call.

ParameterTypeRequiredDescription
name_prefixstringNoDelete actors whose label/name starts with this
namesjsonNoJSON array of exact labels/names to delete
example
  cfa delete_actors_batch --name-prefix "City_"
  echo '{"names":["Ramp_A","Ramp_B"]}' | cfa delete_actors_batch --json -
move_actors_to_folder

Put actors into an outliner folder (organization only)

Moves selected actors into a named outliner folder (auto-created; '/' nests). Folders are pure organization, no transform effect. Select actors via name_prefix and/or names.

ParameterTypeRequiredDescription
folderstringYesOutliner folder path ('/' nests)
name_prefixstringNoSelect actors whose label/name starts with this
namesjsonNoJSON array of exact labels/names to select
example
  cfa move_actors_to_folder --folder "Structures/Pyramid" --name-prefix "Brick_"
create_folder

Create an empty outliner folder

Creates an empty outliner folder (World-Partition aware). Use move_actors_to_folder or spawn_actors_batch --folder to populate it.

ParameterTypeRequiredDescription
folderstringYesOutliner folder path ('/' nests)
example
  cfa create_folder --folder "Structures"
delete_folder

Delete an outliner folder (and subfolders)

Deletes an outliner folder by enumerating the world's real folders and removing the exact match (World-Partition safe). Recursive by default (also removes subfolders). Actors inside move up to the parent (not deleted). Returns the count actually removed.

ParameterTypeRequiredDescription
folderstringYesOutliner folder path
recursiveboolNoAlso delete subfolders (default true)
example
  cfa delete_folder --folder "Structures"
list_folders

List all outliner folders in the level

Enumerates every outliner folder (World-Partition aware). Use to verify folder create/delete. Optional filter matches a substring.

ParameterTypeRequiredDescription
filterstringNoOnly list folders whose path contains this
example
  cfa list_folders
  cfa list_folders --filter "Structures"
rename_folder

Rename/move an outliner folder

Renames an outliner folder (and moves its actors + subfolders).

ParameterTypeRequiredDescription
folderstringYesExisting folder path
new_folderstringYesNew folder path
example
  cfa rename_folder --folder "Structures" --new-folder "Buildings"
group_actors

Group actors into an editor Group (AGroupActor)

Creates an editor Group from the selected actors (select one -> selects all, like Ctrl+G). Different from folders (organization) and attachment (transform). Select via name_prefix and/or names (>=2 actors).

ParameterTypeRequiredDescription
name_prefixstringNoSelect actors whose label/name starts with this
namesjsonNoJSON array of exact labels/names to select
example
  cfa group_actors --name-prefix "Brick_"
ungroup_actors

Dissolve the editor Group(s) containing the given actors

Ungroups the AGroupActor(s) that contain the selected actors. Select via name_prefix and/or names.

ParameterTypeRequiredDescription
name_prefixstringNoSelect actors whose label/name starts with this
namesjsonNoJSON array of exact labels/names to select
example
  cfa ungroup_actors --name-prefix "Brick_"
attach_actors

Attach actors as children of a parent (transform hierarchy)

Attaches child actors to a parent so moving/rotating the parent moves the children (keeps world transform, so they stay put visually). Undo-able, outliner-reflected, cycle-validated. Select children via name_prefix and/or names.

ParameterTypeRequiredDescription
parentstringYesThe actor to attach children to (label or name)
name_prefixstringNoSelect child actors whose label/name starts with this
namesjsonNoJSON array of exact child labels/names
example
  cfa attach_actors --parent "Reactor" --name-prefix "Pipe_"
detach_actors

Detach actors from their parent (become independent)

Detaches actors from their attachment parent (keeps world transform). Select via name_prefix and/or names.

ParameterTypeRequiredDescription
name_prefixstringNoSelect actors whose label/name starts with this
namesjsonNoJSON array of exact labels/names
example
  cfa detach_actors --name-prefix "Pipe_"
capture_top_down

Off-screen orthographic top-down (floor-plan) render to PNG

Renders an orthographic top-down floor-plan of the whole level to a PNG off-screen (does not disturb the user's viewport). Auto-fits OrthoWidth to the level footprint. Far more legible than a perspective screenshot for understanding layout.

ParameterTypeRequiredDescription
file_pathstringNoOutput PNG path (default: Saved/Screenshots/MCP_TopDown.png)
resolutionintNoSquare render resolution in pixels (64-8192)
paddingfloatNoExtra margin around the level footprint (>=1.0)
ortho_widthfloatNoOverride the ortho width in world units (default: auto-fit)
centerstringNoOverride view center "X,Y,Z" (e.g. a get_scene_map region center)
example
  cfa capture_top_down
  cfa capture_top_down --file-path "C:/Shots/floorplan.png" --resolution 2048 --padding 1.2
set_actor_property

Set a property at any nested path on a placed actor

Writes any property on the actual placed level actor (not the CDO/Blueprint defaults). Walks dotted paths through structs, FArrayProperty, FSetProperty and static C arrays via Field[N] syntax. Fires PostEditChangeProperty on the top-level FProperty so the renderer/component refresh, and marks the level dirty for save.

ParameterTypeRequiredDescription
actor_labelstringYesActor outliner label or UObject name
property_pathstringYesDotted property path (e.g. Settings.BloomIntensity)
property_valuejsonYesJSON-encoded value (number, bool, string, object, array)
component_namestringNoOptional: anchor path to a named component
example
  cfa set_actor_property --actor-label "PostProcessVolume_1" --property-path "Settings.BloomIntensity" --property-value 2.0
  cfa set_actor_property --actor-label "PostProcessVolume_1" --property-path "Settings.bOverride_BloomIntensity" --property-value true
  cfa set_actor_property --actor-label "PostProcessVolume_1" --property-path "Settings.LensFlareTints[2]" --property-value '{"R":0,"G":1,"B":0,"A":1}'
  cfa set_actor_property --actor-label "MyMeshActor" --component-name "StaticMeshComponent" --property-path "Mobility" --property-value "Movable"
get_actor_property_metadata

Inspect property type/clamp/enum metadata on a placed actor

Returns per-property metadata (cpp_type, ue_type, category, current_value, clamp_min/max, ui_min/max, valid_values for enums, inner/element/key/value types for containers, object_class/meta_class for refs, is_struct/is_array/is_enum/is_object/is_bool flags) PLUS a _summary header (total_available, total_returned, truncated, next_cursor, own_count, inherited_count, class_chain, categories breakdown). Object refs DO NOT auto-descend by default, use component_name to switch context, or pass descend_into_objects=true. max_entries=0 returns only the _summary so you can plan first.

ParameterTypeRequiredDescription
actor_labelstringYesActor outliner label or UObject name
property_pathstringNoOptional dotted path; empty = top-level
filterstringNoCase-insensitive substring on full path
categorystringNoUPROPERTY(Category=X) exact match (case-insensitive)
depthintNoStruct nesting levels to expand
expand_enumsboolNoInclude valid_values for enum-typed fields
include_inheritedboolNoWalk super class properties
descend_into_objectsboolNoIf path lands on object ref, enumerate its class
max_entriesintNoCap on emitted entries (0 = summary only)
cursorintNoPagination offset (use _summary.next_cursor)
component_namestringNoOptional: anchor to a named component
example
  cfa get_actor_property_metadata --actor-label "PostProcessVolume_1" --property-path "Settings.AutoExposureMethod"
  cfa get_actor_property_metadata --actor-label "PostProcessVolume_1" --property-path "Settings" --filter "bloom" --depth 1
  cfa get_actor_property_metadata --actor-label "MCP_TestPointLight" --component-name "LightComponent0" --category "Light" --max-entries 20
  cfa get_actor_property_metadata --actor-label "MCP_TestPointLight" --max-entries 0
  cfa get_actor_property_metadata --actor-label "MCP_TestPointLight" --include-inherited false --component-name "LightComponent0"
get_material_slots

List material element slots (index, slot name, current material, override state) for any target's mesh components, placed actor, Blueprint component template, or a StaticMesh asset

Reads material slots via Epic's own mesh-component API (GetMaterialSlotNames / GetNumMaterials / GetMaterial), for any UMeshComponent (StaticMesh, SkeletalMesh, InstancedStaticMesh). Targets through the universal object resolver, the SAME addressing as set_object_property: 'actor' (+optional 'component') for a placed actor, or 'blueprint_path'/'asset_path' (+optional 'component') for a Blueprint's component template / class defaults. With no 'component' it reports EVERY mesh component on the target. Each slot: index, slot_name, current material, and whether it's an override vs the mesh default; each component is tagged source=instance|blueprint_template. 'mesh_path' reads a StaticMesh asset's slots directly. (actor_label / component_name are still accepted as aliases.)

ParameterTypeRequiredDescription
actorstringNoPlaced actor's label/name (reports all its mesh components, or just 'component')
actor_labelstringNoAlias for 'actor'
blueprint_pathstringNoBlueprint asset: reports its mesh component templates (class defaults). Add 'component' for one.
asset_pathstringNoAny asset path (a Blueprint resolves like blueprint_path)
componentstringNoOptional: restrict to one mesh component (object or class name)
component_namestringNoAlias for 'component'
mesh_pathstringNoA StaticMesh asset path to read slots from directly
example
  cfa get_material_slots --actor "SM_Chair_2"
  cfa get_material_slots --blueprint-path "/Game/BP/BP_Chair.BP_Chair"
  cfa get_material_slots --blueprint-path "/Game/BP/BP_Chair.BP_Chair" --component "Mesh"
  cfa get_material_slots --mesh-path "/Game/Meshes/SM_Chair.SM_Chair"
set_materials_batch

Assign materials per element slot to any target's mesh components, placed actors, Blueprint component templates, one or many, in a single call

Overrides materials via Epic's own UMeshComponent::SetMaterial and finalizes through the universal resolver's ApplyPropertyEdit, so a live edit reregisters the component (shows immediately) and a Blueprint-template edit persists + propagates to instances, exactly like the Details panel. Universal targeting (same addressing as set_object_property): each assignment targets by 'actor' (a placed actor), 'blueprint_path'/'asset_path' (a Blueprint's component template / class defaults), or 'name_prefix' (all matching placed actors, pairs with spawn_actors_batch). 'component' is optional (default = ALL mesh components on the target). Slot is 'slot' (index, default 0), 'slot_name' (resolved via GetMaterialIndex), or 'all_slots'. 'material' is an asset path, or empty string to clear the override back to the mesh default. Pass 'assignments' (an array) to do many at once. Returns applied_count + per-result {component, source, slots, material} + errors (a bad slot lists the valid indices AND slot names).

ParameterTypeRequiredDescription
assignmentsjsonNoJSON array of {actor|blueprint_path|asset_path|name_prefix, component?, slot?|slot_name?|all_slots?, material}, omit to use the top-level fields as one assignment
actorstringNoSingle-assignment: target a placed actor by label/name
blueprint_pathstringNoSingle-assignment: target a Blueprint's component template(s) / class defaults
asset_pathstringNoSingle-assignment: any asset path (a Blueprint resolves like blueprint_path)
name_prefixstringNoSingle-assignment: every placed actor whose label/name starts with this
componentstringNoOptional: restrict to one mesh component (default = all mesh components on the target)
slotintNoElement slot index to set (default 0)
slot_namestringNoElement slot by name (alternative to slot; resolved via GetMaterialIndex)
all_slotsboolNoSet every element slot on the component
materialstringNoMaterial/MaterialInstance asset path, or empty string to clear the override to the mesh default
example
  cfa set_materials_batch --actor "TC_Orange" --material "/Game/CFATest/Materials/M_Orange.M_Orange"
  cfa set_materials_batch --name-prefix "TC_" --slot 0 --material "/Game/CFATest/Materials/M_Concrete.M_Concrete"
  cfa set_materials_batch --blueprint-path "/Game/BP/BP_Chair.BP_Chair" --component "Mesh" --slot-name "Seat" --material "/Game/M/M_Wood.M_Wood"
  cfa set_materials_batch --json '{"assignments":[{"blueprint_path":"/Game/BP/BP_Car.BP_Car","all_slots":true,"material":"/Game/M/M_Red.M_Red"},{"actor":"Wheel","slot":1,"material":""}]}'
spawn_actor_by_class

Spawn ANY AActor subclass, engine, plugin, or Blueprint

Resolves class_path as full UClass path ("/Script/Engine.PostProcessVolume"), Blueprint asset path ("/Game/BP_Miner"), or short name ("PostProcessVolume"). Validates child of AActor + not abstract + not deprecated. Uses UEditorActorSubsystem::SpawnActorFromClass when available so Ctrl+Z restores. Replaces the legacy whitelist of spawn_actor.

ParameterTypeRequiredDescription
class_pathstringYesFull path, BP path, or short name
namestringNoOptional outliner label
locationjsonNoJSON [x,y,z]
rotationjsonNoJSON [pitch,yaw,roll]
scalejsonNoJSON [x,y,z]
example
  cfa spawn_actor_by_class --class-path "/Script/Engine.PostProcessVolume" --name "GlobalPP" --location "[0,0,0]"
  cfa spawn_actor_by_class --class-path "/Script/Engine.SkyAtmosphere"
  cfa spawn_actor_by_class --class-path "/Game/Blueprints/BP_Miner.BP_Miner_C" --location "[500,0,100]" --rotation "[0,90,0]"
find_actors

Flexible actor search by name, label, class, or tag

Combine any number of filters (all AND'd together) to query the level. Useful to confirm an actor exists, list all of a class, or filter by tag. Returns total_scanned/total_matched even when truncated, so you know if you need to widen max_results.

ParameterTypeRequiredDescription
name_patternstringNoCase-insensitive substring on UObject name
label_patternstringNoCase-insensitive substring on outliner label
class_filterstringNoClass name (short or full path)
tagstringNoMatch actors with this Tag
exact_classboolNoRequire exact class match (else IsA)
max_resultsintNoResult cap (0 = unlimited)
include_transformboolNoInclude location/rotation/scale
example
  cfa find_actors --label-pattern "Light" --max-results 10
  cfa find_actors --class-filter "PointLight" --include-transform true
  cfa find_actors --class-filter "/Script/Engine.PostProcessVolume" --exact-class true
  cfa find_actors --tag "MCPModified"
  cfa find_actors --name-pattern "Conveyor" --class-filter "ConveyorBeltActor" --max-results 5
get_actor_properties

Get property values from a live placed actor instance

Reads the placed instance (not CDO). flat=false returns nested JSON with top-level filter; flat=true returns dotted-path dict with path-aware filter, depth limit, and optional per-property metadata, use this for searching deep into structs like FPostProcessSettings.

ParameterTypeRequiredDescription
actor_labelstringYesActor label or UObject name
filterstringNoSubstring filter (top-level for nested, full path for flat)
include_componentsboolNoAlso return component properties
flatboolNoFlat dotted-path dict mode
max_depthintNo(flat) max struct nesting
include_metadataboolNo(flat) emit metadata blob per leaf
expand_arraysboolNo(flat) emit Field[N] entries
array_element_limitintNo(flat) max array elements
categorystringNo(flat) UPROPERTY(Category=X) exact match
include_inheritedboolNo(flat) walk super classes
max_entriesintNo(flat) cap on emitted entries
cursorintNo(flat) pagination offset
example
  cfa get_actor_properties --actor-label "PostProcessVolume_1" --filter "bloom"
  cfa get_actor_properties --actor-label "PostProcessVolume_1" --flat true --filter "bloom" --max-depth 4
  cfa get_actor_properties --actor-label "MyActor" --include-components true --flat true --include-metadata true
quit_editor

Close the connected Unreal Editor the safe way (no process kill)

Shuts down the editor this command is routed to through Unreal's own graceful shutdown, exactly like File > Exit, instead of killing it by PID. By default it discards unsaved changes (like clicking Don't Save). Pass --save to write every unsaved map and asset first. Either way the save and confirm popups are skipped, so it works whether or not the editor was launched unattended. The editor exits a moment after this command returns its result.

ParameterTypeRequiredDescription
saveboolNoSave all unsaved changes before closing (default false = discard unsaved changes)
example
  cfa quit_editor
  cfa quit_editor --save
play_in_editor

Start Play-In-Editor (PIE), in the active viewport, or a new window

Starts a Play-In-Editor session the same way the toolbar Play button does. If a level viewport is currently active/visible, the game plays inside that viewport; if no level viewport is showing (e.g. a Blueprint editor tab is focused), it opens a separate PIE window. Pass --new-window to always open a separate window, or --simulate for Simulate-In-Editor (SIE) instead of play. The session starts a moment after this returns (RequestPlaySession is deferred). Stop it with stop_play_in_editor.

ParameterTypeRequiredDescription
new_windowboolNoAlways open a separate PIE window instead of using the active viewport
simulateboolNoSimulate-In-Editor (SIE) instead of Play-In-Editor
example
  cfa play_in_editor
  cfa play_in_editor --new-window
  cfa play_in_editor --simulate
stop_play_in_editor

Stop the running Play/Simulate-In-Editor session

Ends the active PIE or SIE session via Unreal's RequestEndPlayMap (the safe, deferred path). No-op if nothing is playing. The session ends a moment after this returns.

example
  cfa stop_play_in_editor
list_level_templates

List the New-Level templates the editor offers (Basic, Open World, blanks, project templates)

Reads GUnrealEd->GetTemplateMapInfos(), the exact source the editor's New Level picker uses, plus the two blank options (Empty Level, Empty Open World). Each entry returns display_name, category, template_map (the asset path to pass to create_level's --template), and a partitioned flag for the blank options.

example
  cfa list_level_templates
create_level

Create and open a new level (blank, partitioned, or from a template)

Creates a new map at --asset-path and opens it. With no --template it makes a blank level (add --partitioned for an Empty Open World / World Partition level). With --template (a template_map path or a display name from list_level_templates, e.g. "Basic" or "Open World") it clones that template map. Mirrors ULevelEditorSubsystem::NewLevel / NewLevelFromTemplate. Save the result with save_level (already has a path), a template/blank level is opened but not yet written to disk.

ParameterTypeRequiredDescription
asset_pathstringYesPackage path for the new level, e.g. /Game/Maps/MyLevel
templatestringNoTemplate map path or display name (from list_level_templates). Omit for a blank level.
partitionedboolNoMake a World Partition (Open World) blank level. Ignored when --template is set.
example
  cfa create_level --asset-path /Game/Maps/MyLevel
  cfa create_level --asset-path /Game/Maps/MyWorld --partitioned
  cfa create_level --asset-path /Game/Maps/MyLevel --template "Basic"
open_level

Open an existing level in the editor

Loads the map at --asset-path into the editor (ULevelEditorSubsystem::LoadLevel).

ParameterTypeRequiredDescription
asset_pathstringYesPackage path of the level to open, e.g. /Game/Maps/MyLevel
example
  cfa open_level --asset-path /Game/Maps/MyLevel
save_level

Save the current level in place

Saves the currently open level (ULevelEditorSubsystem::SaveCurrentLevel). A brand-new unsaved level needs save_level_as with a path instead.

example
  cfa save_level
save_level_as

Save the current level to a new asset path

Writes the current editor world to --asset-path (UEditorLoadingAndSavingUtils::SaveMap). Use this to persist a freshly created template/blank level.

ParameterTypeRequiredDescription
asset_pathstringYesPackage path to save the level to, e.g. /Game/Maps/MyLevel
example
  cfa save_level_as --asset-path /Game/Maps/MyLevel
setup_default_scene

Drop a ready-to-light environment (sun, sky, fog, floor) into the current level, with optional lighting presets

Spawns a default lighting/sky rig into the current level in one call so a freshly created empty map is instantly viewable: DirectionalLight (sun), SkyAtmosphere, SkyLight, ExponentialHeightFog, and a floor plane, all filed under an Environment outliner folder. Pass --preset (clear|noon|sunset|overcast|snowy|night) to also apply a physically-grounded grade (sun angle/intensity, fog, atmosphere, exposure, saturation) following Unreal's outdoor-lighting rules, a preset forces the sky rig + a PostProcessVolume on. Without a preset, toggle parts with --sky/--floor/--clouds/--post-process/--player-start and tune the sun with --sun-pitch/--sun-yaw and the floor with --floor-size (metres).

ParameterTypeRequiredDescription
presetstringNoPhysically-grounded lighting preset: clear, noon, sunset, overcast, snowy, night. Forces the sky rig + PostProcessVolume on and grades sun/fog/atmosphere/exposure. Empty = plain rig, no grade.
skyboolNoSpawn the sky rig: sun (atmosphere light) + SkyAtmosphere + SkyLight (real-time capture) + HeightFog
floorboolNoSpawn a floor plane
cloudsboolNoSpawn a VolumetricCloud
post_processboolNoSpawn an unbound PostProcessVolume (exposure/tonemapping)
player_startboolNoSpawn a PlayerStart
sun_pitchfloatNoSun (DirectionalLight) pitch in degrees (Environment Light Mixer default)
sun_yawfloatNoSun (DirectionalLight) yaw in degrees
sun_rollfloatNoSun (DirectionalLight) roll in degrees
floor_sizefloatNoFloor plane size in metres
folderstringNoOutliner folder for the spawned actors
example
  cfa setup_default_scene --preset clear
  cfa setup_default_scene --preset sunset --floor-size 200
  cfa setup_default_scene --preset overcast
  cfa setup_default_scene --clouds --player-start