Content/Skills/pie-testing/SKILL.md
Start, stop, and query Play-In-Editor (PIE) sessions for runtime testing of Blueprints, gameplay logic, widgets, AI, and any in-game behavior. Use when the user asks you to "play", "test", "run", "PIE", "start the game", "stop the game", or otherwise needs a live game world to validate changes.
npx skillsauth add kevinpbuckley/vibeue pie-testingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
PIE is the only way to validate runtime behavior — Blueprint logic, AI ticking, animation, input, widget interaction, gameplay events. Without starting PIE, your "fix" is unverified.
PIE control lives on WidgetService for historical reasons (it grew out of widget testing) but applies to ALL runtime testing, not just widgets.
| Method | Description |
|--------|-------------|
| unreal.WidgetService.start_pie() | Start PIE if not already running. Returns True on success or if already running. |
| unreal.WidgetService.stop_pie() | End the current PIE session. Returns True if stopped or already stopped. |
| unreal.WidgetService.is_pie_running() | True if PIE or Simulate-In-Editor is active. |
# 1. Make sure you're starting from a clean state
if unreal.WidgetService.is_pie_running():
unreal.WidgetService.stop_pie()
# 2. Start the session (uses the editor's current PIE settings — default map, viewport)
unreal.WidgetService.start_pie()
# 3. Let the test run / inspect log output / interact via other services
# 4. Stop when done
unreal.WidgetService.stop_pie()
start_pie() returns immediately after RequestPlaySession is queued. The world isn't actually playing until the editor processes the request on its next tick. If you need to act inside the running world, give it a tick or poll is_pie_running().start_pie() returns True if a PIE session already exists — it does NOT restart. Stop first if you need a fresh session.stop_pie() cleans up tracked PIE widgets (those spawned via WidgetService.spawn_widget_in_pie). Other widgets/actors are torn down by the engine as part of RequestEndPlayMap.compile_blueprint(...) before launching PIE to test Blueprint changes.stop_pie() before returning control to the user.LogsToolset)umg-widgets skill's spawn_widget_in_pie)compile_blueprint, find_assets, etc.)get_nodes_in_graph, get_node_pins)testing
Procedurally design an AAA-style open-world FPS map blockout (roads, POIs, fields, forests/treelines, railway/bridges) from a VibeUE-generated landscape, validate it through gated checks, and materialize the plan into real engine geometry (splines, paint layers, foliage, actors).
tools
Create and manage Niagara particle systems - system lifecycle, adding/copying emitters, user parameters, system script settings, scratch-pad authoring
development
Configure Niagara emitter internals - modules, renderers, rapid iteration parameters, graph positioning, and scratch-pad authoring (Custom HLSL + node graph)
tools
Create and modify Blueprint assets, variables, functions, and components