Skip to content
ClaudeUnreal
GitHub

Spawn & arrange a scene

What you’ll build: a lit scene with three named cubes arranged in a triangle, saved to your level. This is your first interactive loop with ClaudeUnreal — drive the editor with plain English and verify each change with a follow-up tool call.

Time: ~20 minutes · Prerequisites: ClaudeUnreal installed, editor running, an empty level open.

Verify the bridge is live:

ping

Expected: a JSON success payload that includes the editor version and the name of the current level.

Try this prompt:

Spawn a cube at the world origin and name it CenterCube.

What Claude does

spawn_actor takes a fixed enum of actor types (StaticMeshActor, DirectionalLight, PointLight, …) — “Cube” isn’t a type of its own, it’s a static mesh asset. So Claude does two calls:

  1. spawn_actor with type=StaticMeshActor and name=CenterCube to create an empty mesh actor.
  2. set_actor_component_property on CenterCube’s StaticMeshComponent0 to set StaticMesh = /Engine/BasicShapes/Cube.Cube.

The actor appears in the Outliner immediately.

Verify

find_actors_by_name CenterCube

Expected: one entry for CenterCube at location=(0, 0, 0) with class StaticMeshActor.

Step 2 — Spawn two more cubes in a triangle

Section titled “Step 2 — Spawn two more cubes in a triangle”

Try this prompt:

Spawn two more cubes — LeftCube at (300, -300, 0) and RightCube at (300, 300, 0).

What Claude does

Repeats the two-call pattern from Step 1 (spawn StaticMeshActor, then assign the cube mesh) for each new cube. Because ClaudeUnreal uses UE’s Z-up left-handed coordinates in centimeters, (300, -300, 0) means 300 cm forward and 300 cm to the left of origin — see Coordinate system.

Verify

find_actors_by_name Cube

Expected: three rows — CenterCube, LeftCube, RightCube.

Try this prompt:

Add a directional light named TutorialSun, rotated to shine from above at pitch -45 and yaw 30.

What Claude does

Calls spawn_actor with type=DirectionalLight, name=TutorialSun, rotation=(-45, 30, 0). A single call — spawn_actor takes rotation inline, so there’s no separate transform step.

Verify

find_actors_by_name TutorialSun

Expected: one DirectionalLight with a non-identity rotation around (-45, 30, 0).

Step 4 — Rename the cubes with meaningful labels

Section titled “Step 4 — Rename the cubes with meaningful labels”

Try this prompt:

Change the display labels of the three cubes to “Corner A”, “Corner B”, and “Corner C”, in the order CenterCube, LeftCube, RightCube.

What Claude does

Calls set_actor_label three times. The internal FName of each actor stays the same; only the Outliner display label changes. See Actor names vs labels for why this distinction matters.

Verify

find_actors_by_name Corner

Expected: three rows with labels starting with “Corner”.

Try this prompt:

Save the current level.

What Claude does

Calls save_level. No parameters needed — it persists whatever level is currently loaded.

  • spawn_actor — creates actors of a fixed set of built-in types. Supply location and rotation directly on the call.
  • set_actor_component_property — the escape hatch for shaping a fresh actor. Setting StaticMeshComponent0.StaticMesh is how “spawn a cube” actually works under the hood.
  • UE5 coordinates — Z-up, left-handed, centimeters. See Coordinates if (300, -300, 0) felt arbitrary.
  • set_actor_label vs. internal FName — the distinction documented in Actor names vs labels. find_actors_by_name matches both.
  • The verify loop — every change Claude makes can be confirmed with a follow-up tool call. Use this pattern throughout every tutorial.

Next: you’re ready for Build a door Blueprint. Or browse the full Scene & Actors reference.