Frictionless playtesting and bug reporting for Unreal Engine games.
BugButton continuously records the last 30-60 seconds of gameplay in a ring buffer. When a bug occurs, press the bug button to instantly save an MP4 video - perfect for QA, playtesting, and bug reports!
- 🎥 Continuous Recording - Always recording the last N seconds in memory
- ⚡ Zero Performance Impact - Runs on separate thread, no game hitches
- 🐛 Instant Bug Capture - One button press saves MP4 replay
- 🎮 Windows Only - Optimized for Windows with hardware acceleration
- 📦 Simple API - Just 3 functions: Start, Save, Stop
- Start Recording (e.g., in BeginPlay):
Get BugButton Recorder -> Start Recording (30 seconds, Include UI: true)
- Save Replay when bug happens (e.g., bind to a key):
Get BugButton Recorder -> Save Replay ("%auto%")
- Stop Recording when done (optional):
Get BugButton Recorder -> Stop Recording
#include "BugButtonRecorder.h"
// Start recording
UBugButtonRecorder* Recorder = GEngine->GetEngineSubsystem<UBugButtonRecorder>();
Recorder->StartRecording(30.0f, true); // 30 seconds, include UI
// Save replay when bug occurs
Recorder->SaveReplay(TEXT("%auto%")); // Auto-generates filename in Saved/BugReports/
// Stop recording
Recorder->StopRecording();Start continuous recording.
- BufferSeconds: How many seconds to keep (30 or 60 recommended, max 60)
- bIncludeUI: Include UI/widgets in recording (default: true)
- Returns: True if started successfully
Save the last N seconds to MP4. Recording continues automatically!
- Filename: Where to save (use
"%auto%"for automatic naming inSaved/BugReports/) - Returns: True if save initiated successfully
Stop recording and clear buffer.
Check if recording is active.
Get path to last saved video.
Get current buffer duration.
Videos are saved to:
- Auto mode (
"%auto%"):<Project>/Saved/BugReports/YYYY-MM-DD_HH-MM-SS.mp4 - Custom path: Wherever you specify
- Playtesting: Testers can instantly capture bugs without stopping gameplay
- QA: Automatic video evidence for every bug report
- Speedrunning: Capture unexpected glitches or cool moments
// Bind to F9 key
if (InputComponent)
{
InputComponent->BindKey(EKeys::F9, IE_Pressed, this, &AMyCharacter::OnBugButton);
}
void AMyCharacter::OnBugButton()
{
UBugButtonRecorder* Recorder = GEngine->GetEngineSubsystem<UBugButtonRecorder>();
if (Recorder->IsRecording())
{
Recorder->SaveReplay(TEXT("%auto%"));
// Show UI notification: "Bug replay saved!"
}
}- Platform: Windows only (uses Windows Media Foundation)
- Format: H.264 MP4 (20 Mbps, high quality)
- Resolution: Auto-detects from viewport (1920x1080 typical)
- FPS: 30 FPS (good balance of quality and file size)
- Memory: ~500MB for 30 seconds at 1080p
Subscribe to events in Blueprint or C++:
- OnRecordingStarted: Fired when recording begins
- OnRecordingStopped: Fired when recording stops
- OnReplaySaved: Fired when MP4 is saved (provides file path)
- Windows only (no Mac/Linux/Console support)
- Fixed 30 FPS output
- Maximum 60 second buffer
The following features are available only in FULL version:
- Android, iOS, Mac, Linux, Oculus
- Automated test recording and video sharing
- Audio recording (video only)
Please send email to business@unrealsolutions.com to discuss your needs!
Based on simplified version of Runtime Video Recorder.
Simplified and optimized for the bug reporting use case.
MIT license.
Happy Bug Hunting! 🐛🎥