The Problem
Automated tests fail. Without video, you don't know why.
Test Output:
FAILED: PlayerMovementTest
Expected: Player at position (100, 200)
Actual: Player at position (100, 198)
→ What happened? No idea. Run it again manually?
Why Alternatives Fail
| Tool | Headless? | Problem |
|---|---|---|
| OBS | No | Requires display, manual start |
| NVIDIA ShadowPlay | No | Requires GPU + display |
| FFmpeg screen capture | No | Needs display server |
| RVR | Yes | Records from engine, no display needed |
The Solution
RVR records from inside Unreal Engine. No display. No external process.
# Jenkins/GitHub Actions pipeline
1. Game starts with RVR enabled
2. Automated test runs
3. Test fails → RVR.SaveReplayBuffer()
4. Video uploaded to artifact storage
5. Bug report includes video link
Integration
// In your automated test
if (TestFailed())
{
// Save last 60 seconds
VideoRecorder->SaveReplayBuffer();
// Upload to CI artifacts
FString VideoPath = VideoRecorder->GetLastRecordingPath();
UploadToBuildArtifacts(VideoPath);
}
Key Features
Headless Operation
Runs on build servers without monitors. Works in Docker containers.
Crash Recovery
If game crashes, video is preserved. Captures the crash moment.
Replay Buffer
Always recording. Save only when test fails. No wasted storage.
Event Triggers
Auto-save on assertions, exceptions, test failures.
ROI
80%
Faster flaky test diagnosis
0
"Can't reproduce" from CI
24/7
Automated coverage
Supported Environments
Jenkins
GitHub Actions
GitLab CI
TeamCity
AWS Device Farm
Docker