Game Engine Integration
Integrate BetaHub directly into your game for seamless in-game bug reporting with automatic media capture.
Overview
BetaHub provides native plugins for popular game engines that enable:
- In-game bug report forms triggered by events or user input
- Automatic video recording of recent gameplay
- Screenshot capture with annotation tools
- Log file attachment for technical debugging
- Customizable reporting workflows
Unity Plugin

Installing BetaHub Unity Plugin
Learn how to install the BetaHub Unity Plugin in your Unity project to enable bug reporting and feedback collection.
Watch ScreencastQuick Setup
- Install Plugin
- Open Package Manager in Unity
- Click
+
→Add package from git URL
- Enter:
https://github.com/betahub-io/unity-plugin.git
- Add to Scene
- Drag
BugReportingFormCanvas
prefab to your scene - Enter your Project ID in the inspector
- Press F12 in game to test
- Drag
Installation Details
Prerequisites
- Unity 2021.1 or later
- Project ID from BetaHub (found in project settings)
Step-by-Step Installation
- Import Package
Window → Package Manager → + → Add package from git URL https://github.com/betahub-io/unity-plugin.git
- Import Samples (Recommended)
- Expand Samples in Package Manager
- Click Import to see how the plugin works
- Install FFmpeg
- Go to
Tools → BetaHub → Install FFmpeg
- Enables video recording functionality
- Supports Windows, macOS, and Linux
- Go to
Configuration Options
BugReportingFormCanvas Settings:
- Shortcut Key (Default: F12) - Key to open bug report form
- Performance Sampler
- Sample Frequency - How often to sample performance
- Sample Duration - How long to sample
- Game Recorder
- Frame Rate (Default: 30) - Video recording frame rate
- Recording Duration (Default: 60) - Maximum video length
Programmatic Usage
Opening the Bug Report Form
// Get the bug report UI component
BH_BugReportUI bugReportUI = FindObjectOfType<BH_BugReportUI>();
// Open the form
bugReportUI.SetActive(true);
Default Inclusions
Content | Included by Default | Control Property |
---|---|---|
Video | Yes | IncludeVideo |
Player.log | Yes | IncludePlayerLog |
Screenshots | No | Manual addition |
Adding Screenshots
// Add a screenshot to the bug report
bugReportUI.AddScreenshot(screenshotPath, removeAfterUpload: true);
Parameters:
path
- Full path to screenshot fileremoveAfterUpload
- Delete file after successful upload
Take screenshots before opening menus. Screenshots of the actual bug are more valuable than UI screenshots.
For multiple screenshots, save as JPG to reduce upload time. Upload happens in background, but incomplete uploads may occur if the game closes early.
Adding Custom Log Files
// Add custom log files
bugReportUI.AddLog(logFilePath, removeAfterUpload: true);
Parameters:
path
- Full path to log fileremoveAfterUpload
- Delete file after successful upload
Call AddScreenshot and AddLog methods each time you want to include files. The plugin doesn’t store them between reports.
Advanced Integration
Event-Driven Reporting
public class CrashHandler : MonoBehaviour
{
void OnApplicationException(string condition, string stackTrace, LogType type)
{
if (type == LogType.Exception || type == LogType.Error)
{
// Take screenshot of error state
StartCoroutine(CaptureAndReport());
}
}
IEnumerator CaptureAndReport()
{
// Capture screenshot
yield return new WaitForEndOfFrame();
ScreenCapture.CaptureScreenshot("crash_screenshot.png");
// Open bug report with screenshot
BH_BugReportUI bugReportUI = FindObjectOfType<BH_BugReportUI>();
bugReportUI.AddScreenshot("crash_screenshot.png", true);
bugReportUI.SetActive(true);
}
}
Custom Button Integration
public class UIManager : MonoBehaviour
{
public Button reportBugButton;
void Start()
{
reportBugButton.onClick.AddListener(OpenBugReport);
}
void OpenBugReport()
{
BH_BugReportUI bugReportUI = FindObjectOfType<BH_BugReportUI>();
bugReportUI.SetActive(true);
}
}
Unreal Plugin

Installing BetaHub Unreal Plugin
Learn how to install the BetaHub Unreal Plugin in your Unreal project to enable bug reporting and feedback collection.
Watch ScreencastQuick Setup
- Install Plugin
- Create
Plugins
folder in project root - Download latest release from GitHub
- Extract to
YourProject/Plugins/BetaHubBugReporter/
- Restart Unreal Editor
- Create
- Configure
- Open Project Settings → BetaHub Bug Reporter
- Enter your Project ID
- Press F12 in game to test
Installation Details
Prerequisites
- Unreal Engine (compatible versions listed on GitHub)
- Project ID from BetaHub
Step-by-Step Installation
- Prepare Directory
YourProject/ ├── Plugins/ (create if doesn't exist) │ └── BetaHubBugReporter/
- Download and Extract
- Visit GitHub Releases
- Download latest
.zip
file - Extract contents to
Plugins/BetaHubBugReporter/
- Rebuild Plugin
- Restart Unreal Editor
- Click ‘Yes’ when prompted to rebuild
- Wait for compilation to complete
- Verify Installation
- Go to Edit → Plugins
- Search for “BetaHub Bug Reporter”
- Ensure plugin is enabled
Configuration Settings
Project Settings → BetaHub Bug Reporter:
- API Endpoint - BetaHub API URL (default: https://app.betahub.io)
- Project ID - Your project identifier
- Spawn Background Service on Startup - Auto-start service
- Enable Shortcut - Enable F12 hotkey
- Shortcut Key - Customizable trigger key
- Max Recorded Frames - Video recording limit
- Max Recording Duration - Maximum video length
- Report Form Widget Class - Custom UI widget (default: BugReportForm)
- Popup Widget Class - Custom popup widget (default: BugReportFormPopup)
Programmatic Usage
Blueprint Integration
Available Blueprint Nodes:
- Start Service - Begin background recording
- Stop Service - End background recording
- Spawn Bug Report Widget - Open bug report form
C++ Integration
#include "BH_Manager.h"
// Create manager instance
UBH_Manager* BugReportManager = NewObject<UBH_Manager>();
// Control background service
BugReportManager->StartService();
BugReportManager->StopService();
// Open bug report form
BugReportManager->SpawnBugReportWidget(true); // bTryCaptureMouse
Advanced Integration
Custom Event Triggers
// Trigger bug report on game crash
void AMyGameMode::HandleCrash()
{
// Capture current state
UBH_Manager* BugReportManager = GetBugReportManager();
BugReportManager->SpawnBugReportWidget(true);
}
Performance Monitoring Integration
// Monitor FPS and trigger reports on performance issues
void APerformanceMonitor::CheckPerformance()
{
float CurrentFPS = 1.0f / GetWorld()->GetDeltaSeconds();
if (CurrentFPS < MinAcceptableFPS)
{
// Auto-trigger performance bug report
UBH_Manager* BugReportManager = GetBugReportManager();
BugReportManager->SpawnBugReportWidget(false);
}
}
Best Practices
Integration Strategy
Start Simple:
- Begin with default F12 hotkey
- Test with basic bug reports
- Gradually add custom triggers
User Experience:
- Provide clear instructions to players
- Make bug reporting optional
- Avoid interrupting critical gameplay
Media Capture:
- Take screenshots before opening menus
- Keep video recordings focused and relevant
- Include relevant log files
Performance Considerations
Video Recording:
- Monitor impact on game performance
- Adjust frame rate based on target platform
- Consider memory usage for longer recordings
Background Services:
- Start services only when needed
- Stop services during intensive gameplay
- Monitor CPU and memory overhead
Testing and Validation
Development Testing:
- Test in various game states
- Verify media capture quality
- Ensure log files contain relevant information
User Acceptance Testing:
- Train testers on bug reporting process
- Gather feedback on form usability
- Iterate based on user experience
Troubleshooting
Common Issues
Unity Plugin:
- FFmpeg Not Found - Run Tools → BetaHub → Install FFmpeg
- Form Not Opening - Check Project ID configuration
- Videos Not Recording - Verify FFmpeg installation and permissions
Unreal Plugin:
- Plugin Not Loading - Verify extraction path and restart editor
- Missing Permissions - Check file permissions in Plugins folder
- Blueprint Errors - Ensure plugin is enabled in Project Settings
Getting Help
For technical support:
- Check plugin GitHub repositories for issues and updates
- Join our Discord server for community help
- Review the FAQ for common solutions
Next Steps
- External Tool Integrations - Connect with project management tools
- API Access - Custom integration development
- Advanced Features - Explore AI-powered capabilities