name: uloop-replay-input description: "Replay recorded PlayMode keyboard and mouse input. Use for exact gameplay reproduction, E2E runs, or consistent demos from JSON recordings."
uloop replay-input
Replay recorded keyboard and mouse input during PlayMode. Loads a JSON recording and injects input frame-by-frame via Input System with zero CLI overhead. Supports looping and progress monitoring.
Usage
# Start replay (auto-detect latest recording)
uloop replay-input --action Start
# Start replay with specific file
uloop replay-input --action Start --input-path scripts/my-play.json
# Start replay with looping
uloop replay-input --action Start --loop true
# Check replay progress
uloop replay-input --action Status
# Stop replay
uloop replay-input --action Stop
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--action |
enum | Start |
Start, Stop, Status |
--input-path |
string | auto | JSON path. Auto-detects latest in .uloop/outputs/InputRecordings/ |
--show-overlay |
boolean | true |
Show replay progress overlay |
--loop |
boolean | false |
Loop continuously |
Deterministic Replay
Replay injects the exact same input frame-by-frame, but the game must also be deterministic to produce identical results. If replay output must be compared across runs, read references/deterministic-replay.md before interpreting failures.
Prerequisites
- Unity must be in PlayMode
- Input System package must be installed (
com.unity.inputsystem) - Use this only when the project already uses the New Input System.
Output
Returns JSON with:
Success: Whether the operation succeededMessage: Status messageAction: Echoes which action was executed (Start,Stop, orStatus)InputPath: Path to recording file (nullable string; populated onStartonly)CurrentFrame: Current replay frame index (nullable int)TotalFrames: Total frames in the recording (nullable int)Progress: Replay progress (nullable float in 0.0 – 1.0)IsReplaying: Whether replay is currently active (nullable bool)
These are the only eight fields. There is no LoopCount, ElapsedSeconds, OverlayVisible, or per-frame inspection data in the response.