SDK Overview
Bugnet provides official SDKs for the most popular game engines. Each SDK handles bug report submission, crash log collection, screenshot capture, session tracking, performance profiling, and player context — all with a single init call.
All SDKs are lightweight, single-file packages that add zero performance overhead and can be integrated in under five minutes.
Unity
C# package — Unity 2020.3+
Godot
GDScript addon — Godot 4.x
Unreal Engine
C++ plugin — UE5
Web / HTML5
JavaScript module — any browser
Construct 3
Native addon (SDK v2) — Construct 3 r401+
GameMaker
GML script — GameMaker Studio 2+
Pygame
Python module — Pygame 2.x / Python 3.8+
Unity SDK
The Unity SDK is a lightweight C# package that integrates directly into your project. It provides an in-game bug report widget, automatic crash logging, screenshot capture, session tracking, and performance profiling.
Quick Install
Run one command from your Unity project root (where Assets/ is located). This downloads the SDK into Assets/Scripts/ automatically.
curl -s https://bugnet.io/sdks/unity/install.sh | bashpowershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/unity/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"Manual Installation
- Download
BugnetSDK.csfrom/sdks/unity/BugnetSDK.cs - Drop it into your
Assets/Scripts/folder - Create an empty GameObject in your first scene and attach the
BugnetSDKcomponent - Fill in your API Key and Server URL in the Inspector, or call
Init()from code
Configuration
// Initialize with your API key and server URL
BugnetSDK.Instance.Init(
"YOUR_API_KEY",
"https://api.bugnet.io"
);Reporting Bugs
// Report a bug programmatically
BugnetSDK.Instance.ReportBug(
"Bug title",
"Bug description",
category: "gameplay",
priority: "high",
includeScreenshot: true
);Session Tracking
// Sessions are tracked automatically after Init().
// The session ends automatically when the game quits
// or the BugnetSDK GameObject is destroyed.Performance Profiling
// Performance data (FPS, frame time, memory) is captured
// automatically and sent with each bug report.Session Replays
Studio+Session replays record mouse movement, clicks, and key presses during gameplay. When a bug is reported, the replay is automatically attached so developers can see exactly what the player was doing.
Session replay is controlled by the server — enable it in Project Settings > Session Capture (requires a paid plan). The SDK checks this setting on init and will only record and submit replays when enabled.
// Session replay is automatic — no code needed.
// Once enabled in Project Settings, the SDK records
// input events and sends them with each bug report.Godot SDK
The Godot SDK is a GDScript addon for Godot 4.x. Install it as an autoload and it handles everything automatically.
Quick Install
Run one command from your Godot project root (where project.godot lives). This downloads the SDK and registers the autoload automatically.
curl -s https://bugnet.io/sdks/godot/install.sh | bashpowershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/godot/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"This will:
- Download
BugnetSDK.gdintoaddons/bugnet/ - Add the Bugnet autoload entry to
project.godot
Install from Godot Asset Library
The Bugnet SDK is available on the Godot Asset Library, so you can install it directly from the Godot editor:
- Open your project in the Godot editor
- Go to the AssetLib tab at the top of the editor
- Search for Bugnet
- Click Download, then Install when prompted
- The addon will be installed into
addons/bugnet/automatically - Go to Project > Project Settings > Autoload
- Add
res://addons/bugnet/BugnetSDK.gdwith the name Bugnet
Manual Installation
- Download
BugnetSDK.gd - Save it to
addons/bugnet/in your project - Go to Project > Project Settings > Autoload
- Add the script with name Bugnet
- Set
api_keyandserver_urlin the exported properties
Configuration
# Add BugnetSDK.gd as an Autoload named "Bugnet"
func _ready():
Bugnet.bugnet_init(
"YOUR_API_KEY",
"https://api.bugnet.io"
)Reporting Bugs
# Report a bug
func _input(event):
if event.is_action_pressed("report_bug"):
Bugnet.show_widget()
# Or programmatically
Bugnet.report_bug("Title", "Description", "gameplay", "high")Session Tracking
# Sessions start automatically on init.
# The session ends automatically when the game quits.Session Replays
Studio+When session capture is enabled on your project, the Godot SDK automatically records mouse movement, clicks, and key presses. Replay data is submitted alongside each bug report.
Enable session capture in Project Settings > Session Capture (requires a paid plan). No additional code is needed.
Unreal Engine SDK
The Unreal SDK is a C++ plugin that integrates with the Unreal Engine 5 subsystem architecture.
Quick Install
Run one command from your Unreal project root (where your .uproject file is located). This downloads the SDK files into Source/<ProjectName>/ automatically.
curl -s https://bugnet.io/sdks/unreal/install.sh | bashpowershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/unreal/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"After running the installer, add the following module dependencies to your .Build.cs if not already present:
"HTTP","Json","JsonUtilities"
Manual Installation
- Copy
BugnetSDK.handBugnetSDK.cppinto your project'sSource/folder - Add
"HTTP","Json","JsonUtilities"to your.Build.csPublicDependencyModuleNames - The SDK is a
UGameInstanceSubsystem— access it viaGetGameInstance()->GetSubsystem<UBugnetSDK>()
Configuration
// Get the SDK subsystem from GameInstance
UBugnetSDK* Bugnet = GetGameInstance()
->GetSubsystem<UBugnetSDK>();
// Initialize with API key and server URL
Bugnet->Initialize(
TEXT("YOUR_API_KEY"),
TEXT("https://api.bugnet.io")
);Reporting Bugs
// Report a bug programmatically
Bugnet->ReportBug(
TEXT("Bug title"),
TEXT("Bug description"),
TEXT("gameplay"),
TEXT("high")
);Session Replays
Studio+The Unreal SDK records mouse movement and clicks during gameplay. When a bug is reported, the replay data is automatically attached. Enable session capture in Project Settings > Session Capture (requires a paid plan).
Web / HTML5 SDK
For browser-based games, use the JavaScript SDK. It works with any web game framework — Phaser, PixiJS, Three.js, or plain canvas.
Quick Install
Run one command from your web project root to download the SDK locally:
curl -s https://bugnet.io/sdks/web/install.sh | bashpowershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/web/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"CDN / Script Tag
Or include via a script tag (no download needed):
<script src="https://api.bugnet.io/sdks/web/bugnet-sdk.js"></script>Configuration
Bugnet.init({
apiKey: 'YOUR_API_KEY',
serverUrl: 'https://api.bugnet.io',
gameVersion: '1.0.0'
});Reporting Bugs
// Show the bug report widget
Bugnet.showWidget();
// Or report programmatically
Bugnet.reportBug('Bug title', 'Description', {
category: 'gameplay',
priority: 'high',
includeScreenshot: true
});Session Tracking
// Sessions are tracked automatically after init.
// The session ends automatically on page unload.Session Replays
Studio+The Web SDK records mouse movement, clicks, key presses, scroll, and resize events. Replay data is automatically sent when a bug is reported. Enable session capture in Project Settings > Session Capture (requires a paid plan).
Events are capped at 5,000 per session and mouse movement is throttled to 50ms intervals to keep payloads small.
Construct 3 Addon
The Bugnet addon integrates directly with Construct 3 as a first-class plugin (SDK v2). It requires Construct 3 r401+ and provides crash capture, bug reporting, session tracking, and performance profiling. Use it from Event Sheets or JavaScript scripting.
Installation
- Download
bugnet.c3addon - Open your project in Construct 3
- Drag and drop the
.c3addonfile into the editor to install - In the Project Bar, right-click Object types → Insert new object → select Bugnet
Event Sheet Usage
Use the Bugnet object's actions directly in your event sheets — no JavaScript required:
- Initialize — call on start of layout with your API key, server URL, game version, and auto-capture setting
- Report bug — submit a bug report with title, description, category, and priority
- Show widget / Hide widget — show or hide the built-in bug report overlay
- Set player — set player ID and name for bug reports
- Layout load start / Layout load end — track layout load times
JavaScript Scripting
You can also use Bugnet from Construct 3's JavaScript scripting system:
runOnStartup(async runtime => {
runtime.addEventListener("beforeprojectstart", () => {
const bugnet = runtime.objects.Bugnet.getFirstInstance();
bugnet.initialize("YOUR_API_KEY", "https://api.bugnet.io", "1.0.0");
});
});Reporting Bugs
// Show the bug report widget
bugnet.showWidget();
// Or report programmatically
bugnet.reportBug("Bug title", "Description", "gameplay", "high");Bug Report Widget
The built-in widget gives players a polished bug report form without any extra UI work:
Script Interface Reference
| Method | Description |
|---|---|
initialize(apiKey, serverUrl?, gameVersion?, autoCaptureErrors?) | Initialize the SDK |
reportBug(title, description, category?, priority?) | Submit a bug report |
showWidget() | Show the bug report overlay |
hideWidget() | Hide the bug report overlay |
setPlayer(playerId, playerName) | Set player identity |
| Getter | Returns |
|---|---|
isInitialized | boolean |
gameVersion | string |
platform | string |
sessionToken | string |
lastBugId | string |
Session Tracking
Sessions are tracked automatically after initialization. The session ends on page unload or when the tab is hidden.
Session Replays
Studio+When session capture is enabled on your project, the addon records canvas video replays. Replay data is submitted alongside each bug report.
Enable session capture in Project Settings > Session Capture (requires a paid plan). No additional code is needed.
GameMaker SDK
The GameMaker SDK is a pure GML script that works with GameMaker Studio 2 and GameMaker 2024+. Drop it into your scripts folder and call the init function.
Quick Install
Run one command from your GameMaker project root (where your .yyp file is located). This downloads the SDK into scripts/BugnetSDK/ automatically.
curl -s https://bugnet.io/sdks/gamemaker/install.sh | bashpowershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/gamemaker/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"Manual Installation
- Download
BugnetSDK.gml - In GameMaker, right-click Scripts in the Asset Browser and choose Create Script
- Name it BugnetSDK and paste the contents of the downloaded file
- Call
bugnet_init("YOUR_API_KEY", "https://api.bugnet.io")in your first room's Creation Code or a controller object's Create event
Configuration
// Initialize in a controller object's Create event
bugnet_init("YOUR_API_KEY", "https://api.bugnet.io");Reporting Bugs
// Show the in-game widget
if (keyboard_check_pressed(vk_f1)) {
bugnet_show_widget();
}
// Or report programmatically
bugnet_report_bug("Title", "Description", "gameplay", "high");Session Tracking
// Sessions start automatically on init
// Manual session control:
bugnet_end_session();Session Replays
Studio+When session capture is enabled on your project, the GameMaker SDK automatically records mouse movement, clicks, and key presses. Replay data is submitted alongside each bug report.
Enable session capture in Project Settings > Session Capture (requires a paid plan). No additional code is needed.
Pygame SDK
The Pygame SDK works with Pygame 2.x and Python 3.8+. Install via pip or drop a single file into your project — no extra dependencies required.
Install via pip (Recommended)
pip install bugnet-sdkFor memory usage reporting, install with: pip install bugnet-sdk[memory]
Alternative: Quick Install (single file)
Run one command from your Pygame project directory to download the SDK as a single file:
curl -s https://bugnet.io/sdks/pygame/install.sh | bashpowershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/pygame/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"Manual Installation
- Download
bugnet_sdk.py - Place it in your project root (next to your main game script)
- Import and initialize:
import bugnet_sdk
Configuration
import bugnet_sdk
bugnet_sdk.init(
"YOUR_API_KEY",
"https://api.bugnet.io"
)Reporting Bugs
# In your game loop, pass events to the SDK
for event in pygame.event.get():
bugnet_sdk.handle_event(event)
if event.type == pygame.KEYDOWN and event.key == pygame.K_F1:
bugnet_sdk.show_widget()
# Call update() each frame for widget drawing and freeze detection
bugnet_sdk.update(screen, clock)
# Or report programmatically
bugnet_sdk.report_bug("Title", "Description",
category="gameplay", priority="high")Session Tracking
# Sessions start automatically on init.
# Call shutdown() when your game exits:
bugnet_sdk.shutdown()Session Replays
Studio+When session capture is enabled on your project, the Pygame SDK records mouse movement, clicks, and key presses. Replay data is submitted alongside each bug report.
Enable session capture in Project Settings > Session Capture (requires a paid plan). No additional code is needed.
Session Replays
Studio+Session replays let you see exactly what a player was doing before they submitted a bug report. The SDK records input events (mouse movement, clicks, key presses) and sends them to the server alongside each bug report.
How It Works
- Enable — Turn on session capture in your project settings (Settings > Session Capture). Requires a Studio or AAA plan.
- Record — The SDK automatically records input events from the moment it initializes. Events are capped at 5,000 per session.
- Submit — When a bug is reported (manually or via auto-capture), the replay data is sent to
POST /api/session-replayswith the bug report ID. - View — Open any bug report in the dashboard to view the session replay in the detail panel.
Events Recorded
| Event Type | Data | SDKs |
|---|---|---|
mousemove | x, y, timestamp, screen dimensions | All |
click | x, y, timestamp, screen dimensions | All |
keydown | key name, timestamp | Web, Unity, Godot, Construct 3, GameMaker, Pygame |
scroll | scrollX, scrollY, timestamp | Web |
resize | width, height, timestamp | Web |
API Endpoint
Submit session replay data for a bug report. Requires X-API-Key header.
Payload
{
"bug_report_id": "uuid-of-bug-report",
"duration_sec": 120,
"events": "[{\"type\":\"mousemove\",\"x\":100,\"y\":200,\"t\":1500,...}]",
"metadata": "{\"platform\":\"Windows\",\"resolution\":\"1920x1080\"}"
}Plan Requirements
Session replays require a Studio or AAA plan. On the free plan, the SDK will not record or submit replay data. The server enforces this — even if a replay is submitted from a free-plan project, it will be rejected.
In-Game Widget
The Bugnet widget gives players a way to report bugs directly from inside your game. It opens a lightweight overlay with a description field, screenshot attach, and submit button — all without leaving the game.
Trigger Options
- Keybind — Call
ShowWidget()on a key press (e.g. F1) - Button — Call
ShowWidget()from your own in-game UI button - Automatic — Errors and crashes are auto-captured when
autoCaptureErrorsis enabled
Customization
The widget can be customized to match your game's visual style. You can configure the accent color, placeholder text, and which categories are shown to players.
Screenshot capture is automatic when the widget opens. This behavior is configurable — disable it if your game has sensitive content or if you want players to attach screenshots manually.