<< All versions

Skill v1.0.0

currentLLM-judged scan90/100
meshy-dev/meshy-dcc-adapters/unreal-pie
──Details
PublishedOctober 23, 2026 at 03:44 PM
Content Hashsha256:cfff102ec7156877...
Git SHA7ae5d1f432b7
──Files
Files (1 file, 3.9 KB)
SKILL.md3.9 KBactive
SKILL.md · 112 lines · 3.9 KB

version: "1.0.0" name: unreal-pie description: >- Domain skill - Unreal Engine Play-In-Editor (PIE) closed-loop verification. Provides PIE lifecycle control (enter/pause/resume/exit), controlled input injection (no OS dependency), viewport screenshot capture, output log snapshot, performance sampling, and Automation Test execution with async job polling. Use for reproducible, agent-driven playtest workflows. license: MIT compatibility: Unreal Engine 5.0+, Python 3.9+ allowed-tools: Bash Read metadata: meshy-dcc: dcc: unreal version: "0.1.0" layer: domain stage: validation search-hint: "unreal pie play-in-editor verification input screenshot log perf automation test polling job" tags: "unreal, pie, playtest, input, screenshot, log, perf, automation, test" tools: tools.yaml


Unreal PIE — Play-In-Editor Closed-Loop Verification

Agent-driven PIE session control with controlled input, screenshot capture, log sampling, performance monitoring, and async Automation Test job execution.

Design Principles

  • No broad OS input — all input injection uses Unreal Engine's internal

systems, never pyautogui, SendInput, or similar OS-level APIs.

  • Persistent jobs — Automation Test runs return a job_id that can be

polled for status and cancelled.

  • Reproducible evidence — screenshots, log snapshots, and performance

samples are timestamped and self-contained.

  • One session contract — adapter and project-owned skills import

meshy_dcc_unreal.pie_session so active-world detection, actor lookup, and retryable pie_session_unavailable errors remain consistent.

Scripts

  • pie_control — Enter, pause, resume, or exit PIE.
  • pie_inject_input — Inject keyboard, pointer, scroll, or deterministic

possessed-controller look input into PIE.

  • pie_capture_screenshot — Capture the active viewport to a file.
  • pie_snapshot_log — Snapshot the Output Log buffer with category/message

filters, time/cursor bounds, and optional deduplication.

  • pie_get_status — Query PIE state and performance counters.
  • pie_run_test — Queue an Automation Test run; returns a job_id.
  • pie_poll_test — Poll a previously queued Automation Test job for results.
  • pie_cancel_job — Cancel a running or queued job.

Usage Examples

Full PIE playtest loop

python
# 1. Enter PIE
# MCP tool call: unreal_pie__control
# params: {"action": "enter"}
# 2. Inject a few controlled inputs
# MCP tool call: unreal_pie__inject_input
# params: {"input_type": "key_press", "key": "W"}
# 3. Capture screenshot
# MCP tool call: unreal_pie__capture_screenshot
# params: {"filepath": "C:/playtest/frame_001.png"}
# 4. Check status + perf
# MCP tool call: unreal_pie__get_status
# params: {}
# 5. Snapshot logs
# MCP tool call: unreal_pie__snapshot_log
# params: {
# "filter": "LogCombat", "message_contains": "Damage",
# "since_timestamp": "2026-08-29T10:00:00Z",
# "max_lines": 200, "dedupe": true
# }
# `filter` matches category only (never asset paths or message bodies).
# Use the returned `next_cursor` as `cursor` on the next snapshot.
# When `dedupe` is true, `occurrence_counts` (also exposed as
# `occurrence_count`) aligns with the returned entries.
# `cursor_supported` is false for tail-only unreal.log snapshots; in that case
# `next_cursor` is null and must not be used for continuation.
# 6. Exit PIE
# MCP tool call: unreal_pie__control
# params: {"action": "exit"}

Async Automation Test workflow

python
# 1. Queue a test
# MCP tool call: unreal_pie__run_test
# params: {"filter": "MeshyDcc.Smoke"}
# Returns: {"job_id": "pie_test_20260725_120000_abc123"}
# 2. Poll until complete
# MCP tool call: unreal_pie__poll_test
# params: {"job_id": "pie_test_20260725_120000_abc123"}
# Returns status: "running" | "completed" | "failed" | "cancelled"
# 3. Cancel if needed
# MCP tool call: unreal_pie__cancel_job
# params: {"job_id": "pie_test_20260725_120000_abc123"}
All versions