unreal ยท diff

git:20260203.9fc7b94 to git:20260830.a009b78

8 added, 7 removed. Audit A to A.

---
name: unreal
- description: Develop, test, and automate Unreal Engine 5.x projects (WIP). Covers PlayUnreal automation, Remote Control API, Automation Driver, and CI-friendly E2E flows.
+ description: Develop, test, and automate Unreal Engine 5.x projects with PlayUnreal, Remote Control, Automation Driver, and end-to-end flows. Use when working on Unreal automation, stable UMG selectors, externally driven tests, or CI-friendly packaged-build verification.
---
# Unreal Skill (WIP)
Automate Unreal Engine 5.x with PlayUnreal style external control.
Status: WIP. PlayUnreal repo: https://github.com/Randroids-Dojo/PlayUnreal
## Quick Reference
```bash
# Launch editor with Remote Control enabled
UnrealEditor "/path/MyGame.uproject" -ExecCmds="WebControl.StartServer"
# Packaged build (enable Remote Control)
MyGame.exe -RCWebControlEnable -RCWebInterfaceEnable -ExecCmds="WebControl.StartServer"
- # Wait for Remote Control and ping a PlayUnreal automation actor
- python plugins/unreal/scripts/rc_wait_ready.py \
+ # Wait for Remote Control and ping a PlayUnreal automation actor.
+ # Resolve scripts/rc_wait_ready.py relative to this skill directory.
+ python <skill-dir>/scripts/rc_wait_ready.py \
--host 127.0.0.1 --port 30010 \
--object-path "/Game/Maps/Main.Main:PersistentLevel.PlayUnrealDriver_1"
```
## Setup Checklist
- Enable Remote Control and Automation Driver plugins.
- Add the PlayUnrealAutomation plugin to the project.
- Place the PlayUnreal driver actor or subsystem in the map.
- Tag key UMG widgets with automation IDs for stable selectors.
- Keep Remote Control on LAN/VPN only.
## Selector Strategy
- `id=StartButton` maps to Automation Driver `By::Id`.
- `path=#Menu//Start/<SButton>` maps to `By::Path`.
- `text="Start"` can be implemented via custom traversal if needed.
## PlayUnreal Python (target API)
```python
from playunreal import Unreal
async with Unreal.launch(
uproject="MyGame.uproject",
map="/Game/Maps/MainMenu",
remote_control=True,
) as ue:
page = ue.page()
await page.locator("id=StartButton").click()
await page.locator("id=HUDRoot").wait_for_visible()
await page.screenshot("artifacts/started.png")
```
## Packaged Builds
- Use `-RCWebControlEnable -RCWebInterfaceEnable`.
- Ensure presets and assets are staged if using Remote Control presets.
## References
- - `references/remote-control.md`
- - `references/automation-driver.md`
- - `references/umg-automation.md`
- - `references/playunreal.md`
+ - Read [references/remote-control.md](references/remote-control.md) when configuring or diagnosing the external transport.
+ - Read [references/automation-driver.md](references/automation-driver.md) when implementing input or locator behavior.
+ - Read [references/umg-automation.md](references/umg-automation.md) when adding stable widget selectors.
+ - Read [references/playunreal.md](references/playunreal.md) when working on the PlayUnreal client or launch lifecycle.