
Unreal Engine Developer
- 2 installs
- 404 repo stars
- Updated August 5, 2026
- aiskillstore/marketplace
unreal-engine-developer is a Claude skill that enables agentic Unreal Engine 5 game development via MCP, Python scripting, Blueprints, and C++.
About
unreal-engine-developer enables agentic game development in Unreal Engine 5. It documents how to control the Unreal Editor through MCP servers, Python remote-execution scripting, Blueprint node graphs, and C++, covering level design, asset management, gameplay programming, and technical art. A developer uses it to drive Unreal Editor tasks like spawning actors, importing assets, and building levels via an AI agent.
- Controls Unreal Engine 5 via MCP, Python, Blueprints, and C++
- Documents two unreal-mcp server setups with available tools
- Covers level design, asset management, and gameplay programming
Unreal Engine Developer by the numbers
- 2 all-time installs (skills.sh)
- Ranked #214 of 247 Game Development skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
unreal-engine-developer capabilities & compatibility
- Capabilities
- game development · editor automation · asset management
- Works with
- unity
- Use cases
- orchestration
What unreal-engine-developer says it does
This skill enables complete game development in Unreal Engine 5 through agentic coding.
Uses Unreal's built-in Python Remote Execution. Supports full Unreal Python API.
Unreal embeds Python 3.11.8 - no separate installation needed.
npx skills add https://github.com/aiskillstore/marketplace --skill unreal-engine-developerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2 |
|---|---|
| repo stars | ★ 404 |
| Last updated | August 5, 2026 |
| Repository | aiskillstore/marketplace ↗ |
What it does
Drive Unreal Engine 5 game development tasks via MCP, Python scripting, Blueprints, and C++ through an agent.
Who is it for?
Developers and technical artists building Unreal Engine 5 games with AI-driven editor control.
When should I use this skill?
When doing Unreal Engine 5 level design, asset management, gameplay programming, or technical art via an agent.
What you get
The Unreal Editor is controlled programmatically to create actors, import assets, build levels, and script Blueprints.
- Programmatic Unreal Editor control
- Created actors, assets, levels, and Blueprints
By the numbers
- 2 documented MCP server options
- 12-tool runreal/unreal-mcp table
Files
Unreal Engine Developer & Technical Artist
Overview
This skill enables complete game development in Unreal Engine 5 through agentic coding. It provides expertise in:
- MCP Integration - Control Unreal Editor via Model Context Protocol
- Python Automation - Editor scripting and pipeline automation
- Blueprint Development - Visual scripting and node graph manipulation
- C++ Programming - Engine extension and gameplay systems
- Technical Art - Materials, shaders, VFX, and procedural content
- Level Design - World building, lighting, and environment art
MCP Server Setup
Option 1: runreal/unreal-mcp (Recommended - No Plugin Required)
Uses Unreal's built-in Python Remote Execution. Supports full Unreal Python API.
Prerequisites:
- Unreal Engine 5.4+
- Node.js with npx
Unreal Editor Setup: 1. Edit → Plugins → Enable "Python Editor Script Plugin" 2. Edit → Project Settings → Search "Python" → Enable "Remote Execution" 3. Restart Editor
MCP Client Config:
{
"mcpServers": {
"unreal": {
"command": "npx",
"args": ["-y", "@runreal/unreal-mcp"]
}
}
}Available Tools:
| Tool | Description |
|---|---|
editor_run_python | Execute any Python within Unreal Editor |
editor_list_assets | List all Unreal assets |
editor_export_asset | Export asset to text |
editor_get_asset_info | Get asset info including LOD levels |
editor_search_assets | Search assets by name/path/class |
editor_get_world_outliner | Get all actors with properties |
editor_create_object | Create new actor in world |
editor_update_object | Update existing actor |
editor_delete_object | Delete actor from world |
editor_console_command | Run console command |
editor_take_screenshot | Capture viewport screenshot |
editor_move_camera | Position viewport camera |
Option 2: chongdashu/unreal-mcp (Plugin-Based)
Provides deeper Blueprint and node graph control via C++ plugin.
Prerequisites:
- Unreal Engine 5.5+
- Python 3.12+
- uv package manager
Installation: 1. Copy MCPGameProject/Plugins/UnrealMCP to your project's Plugins folder 2. Generate Visual Studio project files 3. Build project with plugin
MCP Client Config:
{
"mcpServers": {
"unrealMCP": {
"command": "uv",
"args": [
"--directory",
"<path/to/Python>",
"run",
"unreal_mcp_server.py"
]
}
}
}Additional Capabilities:
- Create Blueprint classes with custom components
- Add and configure components (mesh, camera, light)
- Manipulate Blueprint node graphs
- Add event nodes (BeginPlay, Tick)
- Create function call nodes and connect them
- Add variables with types and defaults
---
Python Scripting Reference
Enable Python in Unreal
1. Edit → Plugins → Enable "Python Editor Script Plugin" 2. Edit → Plugins → Enable "Editor Scripting Utilities" 3. Restart Editor
Unreal embeds Python 3.11.8 - no separate installation needed.
Core API Patterns
import unreal
# Asset Registry
asset_registry = unreal.AssetRegistryHelpers.get_asset_registry()
assets = asset_registry.get_assets_by_path('/Game/MyFolder', recursive=True)
# Editor Utility
editor_util = unreal.EditorUtilityLibrary()
selected_assets = editor_util.get_selected_assets()
# Actor Operations
world = unreal.EditorLevelLibrary.get_editor_world()
actors = unreal.EditorLevelLibrary.get_all_level_actors()
# Spawn Actor
location = unreal.Vector(0, 0, 100)
rotation = unreal.Rotator(0, 0, 0)
actor = unreal.EditorLevelLibrary.spawn_actor_from_class(
unreal.StaticMeshActor, location, rotation
)
# Set Properties
actor.set_actor_label('MyActor')
actor.set_actor_location(unreal.Vector(100, 200, 300), False, False)
actor.set_actor_rotation(unreal.Rotator(0, 45, 0), False)
# Static Mesh Component
mesh_component = actor.static_mesh_component
mesh_component.set_static_mesh(
unreal.load_asset('/Game/Meshes/MyMesh')
)
# Material Assignment
material = unreal.load_asset('/Game/Materials/MyMaterial')
mesh_component.set_material(0, material)Asset Management
# Create Asset
factory = unreal.MaterialFactoryNew()
asset_tools = unreal.AssetToolsHelpers.get_asset_tools()
new_material = asset_tools.create_asset(
'M_NewMaterial',
'/Game/Materials',
unreal.Material,
factory
)
# Import Asset
import_task = unreal.AssetImportTask()
import_task.filename = 'C:/path/to/texture.png'
import_task.destination_path = '/Game/Textures'
import_task.automated = True
import_task.save = True
unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks([import_task])
# Generate LODs for Static Mesh
mesh = unreal.load_asset('/Game/Meshes/MyMesh')
options = unreal.EditorStaticMeshLibrary.generate_lod(mesh, 3)
# Save All
unreal.EditorAssetLibrary.save_loaded_assets([new_material])Level Operations
# Load Level
unreal.EditorLevelLibrary.load_level('/Game/Maps/MyLevel')
# Save Current Level
unreal.EditorLevelLibrary.save_current_level()
# Get Level Actors by Class
lights = unreal.EditorFilterLibrary.by_class(
unreal.EditorLevelLibrary.get_all_level_actors(),
unreal.PointLight
)
# Duplicate Actors
duplicates = unreal.EditorLevelLibrary.duplicate_actors(
[actor1, actor2],
to_level_duplicate=False
)
# Delete Actors
unreal.EditorLevelLibrary.destroy_actors([actor])Blueprint Creation via Python
# Create Blueprint
factory = unreal.BlueprintFactory()
factory.set_editor_property('parent_class', unreal.Actor)
asset_tools = unreal.AssetToolsHelpers.get_asset_tools()
blueprint = asset_tools.create_asset(
'BP_MyActor',
'/Game/Blueprints',
unreal.Blueprint,
factory
)
# Add Component
unreal.BlueprintEditorLibrary.add_component(
blueprint,
unreal.StaticMeshComponent
)
# Compile Blueprint
unreal.BlueprintEditorLibrary.compile_blueprint(blueprint)
# Spawn Blueprint Actor
bp_class = unreal.load_class(None, '/Game/Blueprints/BP_MyActor.BP_MyActor_C')
actor = unreal.EditorLevelLibrary.spawn_actor_from_class(
bp_class, unreal.Vector(0,0,0), unreal.Rotator(0,0,0)
)---
Editor Utility Widgets
Create custom Editor tools with Python + Blueprints:
# Execute Python from Editor Utility Widget
# Use "Execute Python Command" node in Blueprint
# Example: Batch rename selected assets
import unreal
assets = unreal.EditorUtilityLibrary.get_selected_assets()
for asset in assets:
old_name = asset.get_name()
new_name = 'SM_' + old_name # Add prefix
unreal.EditorAssetLibrary.rename_asset(
asset.get_path_name(),
asset.get_path_name().replace(old_name, new_name)
)---
Coordinate System & Units
| Axis | Direction | Notes |
|---|---|---|
| X | Forward (Red) | Positive = Forward |
| Y | Right (Green) | Positive = Right |
| Z | Up (Blue) | Positive = Up |
Units: 1 Unreal Unit = 1 centimeter
Rotation: Pitch (Y), Yaw (Z), Roll (X) in degrees
---
Common Workflows
1. Procedural Level Generation
import unreal
import random
def spawn_grid(mesh_path, rows, cols, spacing):
mesh = unreal.load_asset(mesh_path)
for x in range(rows):
for y in range(cols):
loc = unreal.Vector(x * spacing, y * spacing, 0)
actor = unreal.EditorLevelLibrary.spawn_actor_from_class(
unreal.StaticMeshActor, loc, unreal.Rotator(0,0,0)
)
actor.static_mesh_component.set_static_mesh(mesh)
# Random rotation
actor.set_actor_rotation(
unreal.Rotator(0, random.uniform(0, 360), 0), False
)2. Batch Material Assignment
import unreal
def assign_material_to_selection(material_path):
material = unreal.load_asset(material_path)
actors = unreal.EditorLevelLibrary.get_selected_level_actors()
for actor in actors:
components = actor.get_components_by_class(unreal.StaticMeshComponent)
for comp in components:
for i in range(comp.get_num_materials()):
comp.set_material(i, material)3. Export Level Data
import unreal
import json
def export_level_to_json(output_path):
actors = unreal.EditorLevelLibrary.get_all_level_actors()
data = []
for actor in actors:
actor_data = {
'name': actor.get_actor_label(),
'class': actor.get_class().get_name(),
'location': [
actor.get_actor_location().x,
actor.get_actor_location().y,
actor.get_actor_location().z
],
'rotation': [
actor.get_actor_rotation().pitch,
actor.get_actor_rotation().yaw,
actor.get_actor_rotation().roll
]
}
data.append(actor_data)
with open(output_path, 'w') as f:
json.dump(data, f, indent=2)---
Verification Checklist
Before completing any task:
- [ ] Python scripts execute without errors in Unreal Console
- [ ] Assets are saved after creation/modification
- [ ] Blueprint compiles successfully if modified
- [ ] Level saves after actor changes
- [ ] MCP connection verified if using remote execution
- [ ] Screenshots captured for visual verification when relevant
---
Troubleshooting
MCP Connection Issues
1. Verify Python Editor Script Plugin is enabled 2. Verify Remote Execution is enabled in Project Settings 3. Try bind address 0.0.0.0 instead of 127.0.0.1 4. Restart Unreal Editor completely 5. Kill any zombie Node.js processes
Python Script Errors
1. Check Output Log for Python exceptions 2. Verify asset paths use /Game/ prefix 3. Ensure assets are loaded before access 4. Use unreal.load_asset() or unreal.load_class() as needed
Blueprint Compilation Failures
1. Check Message Log for BP errors 2. Verify parent class compatibility 3. Ensure all required pins are connected 4. Save and recompile after node changes
---
Resources
Unreal Engine Developer - Quick Reference
Python API Classes
Core Systems
| Class | Purpose |
|---|---|
unreal.EditorLevelLibrary | Level/actor operations |
unreal.EditorAssetLibrary | Asset CRUD operations |
unreal.EditorUtilityLibrary | Selection and utility |
unreal.AssetToolsHelpers | Asset creation/import |
unreal.BlueprintEditorLibrary | Blueprint manipulation |
Common Actor Classes
| Class | Use Case |
|---|---|
unreal.StaticMeshActor | Static geometry |
unreal.SkeletalMeshActor | Animated meshes |
unreal.PointLight | Point lights |
unreal.SpotLight | Spot lights |
unreal.DirectionalLight | Sun/directional |
unreal.CameraActor | Cameras |
unreal.PlayerStart | Player spawn |
unreal.TriggerBox | Collision triggers |
unreal.BlockingVolume | Invisible collision |
Component Classes
| Class | Purpose |
|---|---|
unreal.StaticMeshComponent | Static mesh rendering |
unreal.SkeletalMeshComponent | Skeletal mesh |
unreal.CameraComponent | Camera view |
unreal.SceneComponent | Transform hierarchy |
unreal.BoxComponent | Box collision |
unreal.SphereComponent | Sphere collision |
unreal.AudioComponent | Sound playback |
unreal.ParticleSystemComponent | VFX |
MCP Tool Quick Reference
runreal/unreal-mcp Tools
editor_run_python - Execute Python code
editor_list_assets - List assets in path
editor_search_assets - Search by name/class
editor_get_asset_info - Asset details + LODs
editor_export_asset - Export to text
editor_get_world_outliner - All actors + properties
editor_create_object - Spawn new actor
editor_update_object - Modify actor
editor_delete_object - Remove actor
editor_console_command - UE console command
editor_take_screenshot - Viewport capture
editor_move_camera - Position viewportchongdashu/unreal-mcp Additional
Actor Management:
- create_actor, delete_actor
- set_actor_transform
- query_actor_properties
- find_actors_by_name
- list_all_actors
Blueprint Development:
- create_blueprint_class
- add_component_to_blueprint
- set_component_properties
- compile_blueprint
- spawn_blueprint_actor
- create_input_mapping
Blueprint Node Graph:
- add_event_node
- create_function_call_node
- connect_nodes
- add_variable
- create_component_reference
- find_nodes
Editor Control:
- focus_viewport
- set_camera_orientationAsset Path Conventions
/Game/ - Project content root
/Game/Maps/ - Level files
/Game/Meshes/ - Static meshes
/Game/Characters/ - Character assets
/Game/Materials/ - Materials
/Game/Textures/ - Textures
/Game/Blueprints/ - Blueprint classes
/Game/VFX/ - Particle systems
/Game/Audio/ - Sound assets
/Engine/ - Engine content
/Engine/BasicShapes/ - Primitive meshesConsole Commands
Rendering
r.SetRes 1920x1080 - Set resolution
HighResShot 2 - High-res screenshot (2x)
ShowFlag.Lighting 0 - Toggle lighting
ShowFlag.PostProcessing 0 - Toggle post processPerformance
stat fps - Show FPS
stat unit - Frame time breakdown
stat gpu - GPU stats
profilegpu - GPU profilerLevel
open MapName - Load level
restartlevel - Restart currentBlueprint Event Nodes
| Event | Fires When |
|---|---|
BeginPlay | Actor spawns/level starts |
Tick | Every frame |
EndPlay | Actor destroyed |
ActorBeginOverlap | Collision start |
ActorEndOverlap | Collision end |
OnHit | Physics collision |
InputAction | Player input |
Material Expressions (Common)
| Node | Purpose |
|---|---|
TextureSample | Sample texture |
Multiply | Blend/tint |
Lerp | Linear interpolate |
Fresnel | Edge glow effect |
WorldPosition | World coords |
Time | Animation driver |
Panner | UV scrolling |
Noise | Procedural noise |
{
"schema_version": "2.0",
"meta": {
"generated_at": "2026-01-16T22:55:14.505Z",
"slug": "dammianmiller-unreal-engine-developer",
"source_url": "https://github.com/DammianMiller/universal-agent-memory/tree/main/.factory/skills/unreal-engine-developer",
"source_ref": "main",
"model": "claude",
"analysis_version": "3.0.0",
"source_type": "community",
"content_hash": "1ae13e1803bb303406db6936a363897676867b2b936d40b9aa57eac68fa2720c",
"tree_hash": "e318f6573cbcb81ea749d678ac2dfecd02b06de5c928907eb84ff000d50dcb0e"
},
"skill": {
"name": "unreal-engine-developer",
"description": "Expert Unreal Engine 5 developer and technical artist for complete game development via agentic coding. Enables AI-driven control of Unreal Editor through MCP, Python scripting, Blueprints, and C++ for level design, asset management, gameplay programming, and visual development.",
"summary": "Expert Unreal Engine 5 developer and technical artist for complete game development via agentic codi...",
"icon": "🎮",
"version": "1.0.0",
"author": "DammianMiller",
"license": "MIT",
"category": "coding",
"tags": [
"unreal-engine",
"game-development",
"mcp",
"blueprints",
"technical-art"
],
"supported_tools": [
"claude",
"codex",
"claude-code"
],
"risk_factors": [
"external_commands",
"network",
"filesystem"
]
},
"security_audit": {
"risk_level": "safe",
"is_blocked": false,
"safe_to_publish": true,
"summary": "Pure documentation skill containing no executable code. All 124 static findings are false positives caused by markdown formatting (backticks as code delimiters) and Unreal Engine terminology being misidentified as security threats. No scripts, network calls, file system vulnerabilities, or external command execution exists in this skill.",
"risk_factor_evidence": [
{
"factor": "external_commands",
"evidence": [
{
"file": "references.md",
"line_start": 8,
"line_end": 8
},
{
"file": "references.md",
"line_start": 9,
"line_end": 9
},
{
"file": "references.md",
"line_start": 10,
"line_end": 10
},
{
"file": "references.md",
"line_start": 11,
"line_end": 11
},
{
"file": "references.md",
"line_start": 12,
"line_end": 12
},
{
"file": "references.md",
"line_start": 17,
"line_end": 17
},
{
"file": "references.md",
"line_start": 18,
"line_end": 18
},
{
"file": "references.md",
"line_start": 19,
"line_end": 19
},
{
"file": "references.md",
"line_start": 20,
"line_end": 20
},
{
"file": "references.md",
"line_start": 21,
"line_end": 21
},
{
"file": "references.md",
"line_start": 22,
"line_end": 22
},
{
"file": "references.md",
"line_start": 23,
"line_end": 23
},
{
"file": "references.md",
"line_start": 24,
"line_end": 24
},
{
"file": "references.md",
"line_start": 25,
"line_end": 25
},
{
"file": "references.md",
"line_start": 30,
"line_end": 30
},
{
"file": "references.md",
"line_start": 31,
"line_end": 31
},
{
"file": "references.md",
"line_start": 32,
"line_end": 32
},
{
"file": "references.md",
"line_start": 33,
"line_end": 33
},
{
"file": "references.md",
"line_start": 34,
"line_end": 34
},
{
"file": "references.md",
"line_start": 35,
"line_end": 35
},
{
"file": "references.md",
"line_start": 36,
"line_end": 36
},
{
"file": "references.md",
"line_start": 37,
"line_end": 37
},
{
"file": "references.md",
"line_start": 42,
"line_end": 55
},
{
"file": "references.md",
"line_start": 55,
"line_end": 58
},
{
"file": "references.md",
"line_start": 58,
"line_end": 85
},
{
"file": "references.md",
"line_start": 85,
"line_end": 89
},
{
"file": "references.md",
"line_start": 89,
"line_end": 101
},
{
"file": "references.md",
"line_start": 101,
"line_end": 106
},
{
"file": "references.md",
"line_start": 106,
"line_end": 111
},
{
"file": "references.md",
"line_start": 111,
"line_end": 114
},
{
"file": "references.md",
"line_start": 114,
"line_end": 119
},
{
"file": "references.md",
"line_start": 119,
"line_end": 122
},
{
"file": "references.md",
"line_start": 122,
"line_end": 125
},
{
"file": "references.md",
"line_start": 125,
"line_end": 131
},
{
"file": "references.md",
"line_start": 131,
"line_end": 132
},
{
"file": "references.md",
"line_start": 132,
"line_end": 133
},
{
"file": "references.md",
"line_start": 133,
"line_end": 134
},
{
"file": "references.md",
"line_start": 134,
"line_end": 135
},
{
"file": "references.md",
"line_start": 135,
"line_end": 136
},
{
"file": "references.md",
"line_start": 136,
"line_end": 137
},
{
"file": "references.md",
"line_start": 137,
"line_end": 143
},
{
"file": "references.md",
"line_start": 143,
"line_end": 144
},
{
"file": "references.md",
"line_start": 144,
"line_end": 145
},
{
"file": "references.md",
"line_start": 145,
"line_end": 146
},
{
"file": "references.md",
"line_start": 146,
"line_end": 147
},
{
"file": "references.md",
"line_start": 147,
"line_end": 148
},
{
"file": "references.md",
"line_start": 148,
"line_end": 149
},
{
"file": "references.md",
"line_start": 149,
"line_end": 150
},
{
"file": "SKILL.md",
"line_start": 35,
"line_end": 44
},
{
"file": "SKILL.md",
"line_start": 44,
"line_end": 49
},
{
"file": "SKILL.md",
"line_start": 49,
"line_end": 50
},
{
"file": "SKILL.md",
"line_start": 50,
"line_end": 51
},
{
"file": "SKILL.md",
"line_start": 51,
"line_end": 52
},
{
"file": "SKILL.md",
"line_start": 52,
"line_end": 53
},
{
"file": "SKILL.md",
"line_start": 53,
"line_end": 54
},
{
"file": "SKILL.md",
"line_start": 54,
"line_end": 55
},
{
"file": "SKILL.md",
"line_start": 55,
"line_end": 56
},
{
"file": "SKILL.md",
"line_start": 56,
"line_end": 57
},
{
"file": "SKILL.md",
"line_start": 57,
"line_end": 58
},
{
"file": "SKILL.md",
"line_start": 58,
"line_end": 59
},
{
"file": "SKILL.md",
"line_start": 59,
"line_end": 60
},
{
"file": "SKILL.md",
"line_start": 60,
"line_end": 72
},
{
"file": "SKILL.md",
"line_start": 72,
"line_end": 77
},
{
"file": "SKILL.md",
"line_start": 77,
"line_end": 91
},
{
"file": "SKILL.md",
"line_start": 91,
"line_end": 115
},
{
"file": "SKILL.md",
"line_start": 115,
"line_end": 151
},
{
"file": "SKILL.md",
"line_start": 151,
"line_end": 155
},
{
"file": "SKILL.md",
"line_start": 155,
"line_end": 180
},
{
"file": "SKILL.md",
"line_start": 180,
"line_end": 184
},
{
"file": "SKILL.md",
"line_start": 184,
"line_end": 205
},
{
"file": "SKILL.md",
"line_start": 205,
"line_end": 209
},
{
"file": "SKILL.md",
"line_start": 209,
"line_end": 236
},
{
"file": "SKILL.md",
"line_start": 236,
"line_end": 244
},
{
"file": "SKILL.md",
"line_start": 244,
"line_end": 259
},
{
"file": "SKILL.md",
"line_start": 259,
"line_end": 281
},
{
"file": "SKILL.md",
"line_start": 281,
"line_end": 298
},
{
"file": "SKILL.md",
"line_start": 298,
"line_end": 302
},
{
"file": "SKILL.md",
"line_start": 302,
"line_end": 314
},
{
"file": "SKILL.md",
"line_start": 314,
"line_end": 318
},
{
"file": "SKILL.md",
"line_start": 318,
"line_end": 345
},
{
"file": "SKILL.md",
"line_start": 345,
"line_end": 368
},
{
"file": "SKILL.md",
"line_start": 368,
"line_end": 368
},
{
"file": "SKILL.md",
"line_start": 368,
"line_end": 375
},
{
"file": "SKILL.md",
"line_start": 375,
"line_end": 377
},
{
"file": "SKILL.md",
"line_start": 377,
"line_end": 377
}
]
},
{
"factor": "network",
"evidence": [
{
"file": "skill-report.json",
"line_start": 6,
"line_end": 6
},
{
"file": "SKILL.md",
"line_start": 390,
"line_end": 390
},
{
"file": "SKILL.md",
"line_start": 391,
"line_end": 391
},
{
"file": "SKILL.md",
"line_start": 392,
"line_end": 392
},
{
"file": "SKILL.md",
"line_start": 393,
"line_end": 393
},
{
"file": "SKILL.md",
"line_start": 394,
"line_end": 394
},
{
"file": "SKILL.md",
"line_start": 368,
"line_end": 368
},
{
"file": "SKILL.md",
"line_start": 368,
"line_end": 368
}
]
},
{
"factor": "filesystem",
"evidence": [
{
"file": "skill-report.json",
"line_start": 6,
"line_end": 6
},
{
"file": "SKILL.md",
"line_start": 343,
"line_end": 343
}
]
}
],
"critical_findings": [],
"high_findings": [],
"medium_findings": [],
"low_findings": [],
"dangerous_patterns": [],
"files_scanned": 3,
"total_lines": 728,
"audit_model": "claude",
"audited_at": "2026-01-16T22:55:14.505Z"
},
"content": {
"user_title": "Develop Unreal Engine 5 Games with AI",
"value_statement": "Creating games in Unreal Engine 5 requires deep knowledge of Python APIs, Blueprints, and editor automation. This skill provides expert-level guidance for controlling Unreal Editor through AI agents using MCP integration, Python scripting, and visual programming patterns.",
"seo_keywords": [
"Unreal Engine 5",
"Claude Code",
"MCP server",
"game development",
"Python scripting",
"Blueprints",
"technical artist",
"level design",
"asset management",
"game engine"
],
"actual_capabilities": [
"Control Unreal Editor via Model Context Protocol (MCP) servers",
"Write Python scripts for asset management and level operations",
"Create and modify Blueprint classes with custom components",
"Automate level design and procedural content generation",
"Configure editor utilities and batch operations",
"Work with materials, shaders, and visual effects"
],
"limitations": [
"Requires Unreal Engine 5.4 or newer with Python Editor Script Plugin enabled",
"MCP server setup requires separate installation (npx @runreal/unreal-mcp or chongdashu plugin)",
"Does not include the actual MCP server binaries - only documentation for setup",
"Blueprints created via AI require manual compilation and testing in editor"
],
"use_cases": [
{
"target_user": "Indie Game Developers",
"title": "Automate Level Design",
"description": "Generate procedural levels, batch place assets, and automate repetitive editor workflows through natural language commands."
},
{
"target_user": "Technical Artists",
"title": "Create Custom Editor Tools",
"description": "Build editor utility widgets and automation scripts for materials, particle effects, and asset pipeline management."
},
{
"target_user": "AI-Assisted Studios",
"title": "Integrate AI with Unreal",
"description": "Connect Claude Code or other AI tools to Unreal Editor for voice-controlled development and automated testing."
}
],
"prompt_templates": [
{
"title": "List Project Assets",
"scenario": "Inventory project content",
"prompt": "List all assets in my Unreal project under /Game/Materials and show their types and paths."
},
{
"title": "Create Material",
"scenario": "Create new material asset",
"prompt": "Create a new material called M_Grass in /Game/Materials with base color, normal, and roughness inputs."
},
{
"title": "Spawn Actors",
"scenario": "Place objects in level",
"prompt": "Spawn a 10x10 grid of SM_Rock actors at /Game/Meshes/Rock, each rotated randomly around Z axis."
},
{
"title": "Export Level Data",
"scenario": "Document level structure",
"prompt": "Export all actors in the current level to JSON with their names, classes, locations, and rotations."
}
],
"output_examples": [
{
"input": "Create 20 trees in a forest arrangement around the player start position",
"output": [
"Loaded SM_Tree mesh from /Game/Meshes/Tree",
"Created 20 tree actors in forest pattern",
"Random rotation applied to each tree (0-360 degrees)",
"All trees saved to level"
]
},
{
"input": "Create a new Blueprint actor with a static mesh component",
"output": [
"Created BP_MyActor Blueprint in /Game/Blueprints",
"Added StaticMeshComponent to Blueprint",
"Set parent class to Actor",
"Blueprint compiled successfully"
]
}
],
"best_practices": [
"Always save assets and levels after batch modifications to prevent data loss",
"Verify Python scripts execute in Unreal Console before running through MCP",
"Use the Output Log to diagnose script errors and verify asset paths use /Game/ prefix"
],
"anti_patterns": [
"Running scripts without saving work first - Unreal Editor can crash",
"Using hardcoded absolute paths instead of /Game/ relative paths",
"Skipping Blueprint compilation verification after automated changes"
],
"faq": [
{
"question": "Which Unreal Engine versions are supported?",
"answer": "Requires Unreal Engine 5.4 or newer. Some Blueprint MCP features need 5.5+. Enable Python Editor Script Plugin."
},
{
"question": "How do I install the MCP server?",
"answer": "Use npx -y @runreal/unreal-mcp for Node.js setup, or install the chongdashu/unreal-mcp C++ plugin for advanced Blueprint control."
},
{
"question": "Can I create full games with this skill?",
"answer": "This skill provides editor automation. Game logic, gameplay systems, and packaged builds require traditional Unreal development workflows."
},
{
"question": "Is my data safe when using MCP?",
"answer": "MCP runs locally connecting to your Unreal Editor instance. No data is sent externally unless you configure network connections."
},
{
"question": "Why are my Python scripts failing?",
"answer": "Common issues: Python Plugin not enabled, Remote Execution disabled, missing /Game/ prefix in paths, or assets not loaded."
},
{
"question": "How does this compare to manually using Blueprints?",
"answer": "AI-assisted development accelerates repetitive tasks like batch operations and asset placement. Complex logic still benefits from manual Blueprint work."
}
]
},
"file_structure": [
{
"name": "references.md",
"type": "file",
"path": "references.md",
"lines": 151
},
{
"name": "SKILL.md",
"type": "file",
"path": "SKILL.md",
"lines": 395
}
]
}
Related skills
FAQ
Which MCP servers does it document?
It documents runreal/unreal-mcp (no plugin required, uses Python Remote Execution) and chongdashu/unreal-mcp (plugin-based, deeper Blueprint control).
What Unreal version is required?
The runreal option needs Unreal Engine 5.4+ and the plugin-based option needs Unreal Engine 5.5+.