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 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.

Linux / macOS
curl -s https://bugnet.io/sdks/unity/install.sh | bash
Windows (PowerShell)
powershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/unity/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"

Manual Installation

  1. Download BugnetSDK.cs from /sdks/unity/BugnetSDK.cs
  2. Drop it into your Assets/Scripts/ folder
  3. Create an empty GameObject in your first scene and attach the BugnetSDK component
  4. Fill in your API Key and Server URL in the Inspector, or call Init() from code

Configuration

C#
// Initialize with your API key and server URL
BugnetSDK.Instance.Init(
  "YOUR_API_KEY",
  "https://api.bugnet.io"
);

Reporting Bugs

C#
// Report a bug programmatically
BugnetSDK.Instance.ReportBug(
  "Bug title",
  "Bug description",
  category: "gameplay",
  priority: "high",
  includeScreenshot: true
);

Session Tracking

C#
// Sessions are tracked automatically after Init().
// The session ends automatically when the game quits
// or the BugnetSDK GameObject is destroyed.

Performance Profiling

C#
// 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.

C#
// 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.

Linux / macOS
curl -s https://bugnet.io/sdks/godot/install.sh | bash
Windows (PowerShell)
powershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/godot/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"

This will:

  1. Download BugnetSDK.gd into addons/bugnet/
  2. 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:

  1. Open your project in the Godot editor
  2. Go to the AssetLib tab at the top of the editor
  3. Search for Bugnet
  4. Click Download, then Install when prompted
  5. The addon will be installed into addons/bugnet/ automatically
  6. Go to Project > Project Settings > Autoload
  7. Add res://addons/bugnet/BugnetSDK.gd with the name Bugnet
Tip: You can also browse the listing directly at godotengine.org/asset-library and download from there.

Manual Installation

  1. Download BugnetSDK.gd
  2. Save it to addons/bugnet/ in your project
  3. Go to Project > Project Settings > Autoload
  4. Add the script with name Bugnet
  5. Set api_key and server_url in the exported properties

Configuration

GDScript
# Add BugnetSDK.gd as an Autoload named "Bugnet"
func _ready():
  Bugnet.bugnet_init(
    "YOUR_API_KEY",
    "https://api.bugnet.io"
  )

Reporting Bugs

GDScript
# 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

GDScript
# 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.

Linux / macOS
curl -s https://bugnet.io/sdks/unreal/install.sh | bash
Windows (PowerShell)
powershell -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

  1. Copy BugnetSDK.h and BugnetSDK.cpp into your project's Source/ folder
  2. Add "HTTP", "Json", "JsonUtilities" to your .Build.cs PublicDependencyModuleNames
  3. The SDK is a UGameInstanceSubsystem — access it via GetGameInstance()->GetSubsystem<UBugnetSDK>()

Configuration

C++
// 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

C++
// 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:

Linux / macOS
curl -s https://bugnet.io/sdks/web/install.sh | bash
Windows (PowerShell)
powershell -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):

HTML
<script src="https://api.bugnet.io/sdks/web/bugnet-sdk.js"></script>

Configuration

JavaScript
Bugnet.init({
  apiKey:    'YOUR_API_KEY',
  serverUrl: 'https://api.bugnet.io',
  gameVersion: '1.0.0'
});

Reporting Bugs

JavaScript
// Show the bug report widget
Bugnet.showWidget();

// Or report programmatically
Bugnet.reportBug('Bug title', 'Description', {
  category: 'gameplay',
  priority: 'high',
  includeScreenshot: true
});

Session Tracking

JavaScript
// 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

  1. Download bugnet.c3addon
  2. Open your project in Construct 3
  3. Drag and drop the .c3addon file into the editor to install
  4. In the Project Bar, right-click Object typesInsert 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:

main.js
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

JavaScript
// 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:

Bugnet bug report widget in a Construct 3 game

Script Interface Reference

MethodDescription
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
GetterReturns
isInitializedboolean
gameVersionstring
platformstring
sessionTokenstring
lastBugIdstring

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.

Linux / macOS
curl -s https://bugnet.io/sdks/gamemaker/install.sh | bash
Windows (PowerShell)
powershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/gamemaker/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"

Manual Installation

  1. Download BugnetSDK.gml
  2. In GameMaker, right-click Scripts in the Asset Browser and choose Create Script
  3. Name it BugnetSDK and paste the contents of the downloaded file
  4. 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

GML
// Initialize in a controller object's Create event
bugnet_init("YOUR_API_KEY", "https://api.bugnet.io");

Reporting Bugs

GML
// 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

GML
// 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
pip install bugnet-sdk

For 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:

Linux / macOS
curl -s https://bugnet.io/sdks/pygame/install.sh | bash
Windows (PowerShell)
powershell -ExecutionPolicy Bypass -c "& { iwr -useb https://bugnet.io/sdks/pygame/install.ps1 -OutFile $env:TEMP\bugnet.ps1; & $env:TEMP\bugnet.ps1 }"

Manual Installation

  1. Download bugnet_sdk.py
  2. Place it in your project root (next to your main game script)
  3. Import and initialize: import bugnet_sdk

Configuration

Python
import bugnet_sdk

bugnet_sdk.init(
    "YOUR_API_KEY",
    "https://api.bugnet.io"
)

Reporting Bugs

Python
# 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

Python
# 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

  1. Enable — Turn on session capture in your project settings (Settings > Session Capture). Requires a Studio or AAA plan.
  2. Record — The SDK automatically records input events from the moment it initializes. Events are capped at 5,000 per session.
  3. Submit — When a bug is reported (manually or via auto-capture), the replay data is sent to POST /api/session-replays with the bug report ID.
  4. View — Open any bug report in the dashboard to view the session replay in the detail panel.

Events Recorded

Event TypeDataSDKs
mousemovex, y, timestamp, screen dimensionsAll
clickx, y, timestamp, screen dimensionsAll
keydownkey name, timestampWeb, Unity, Godot, Construct 3, GameMaker, Pygame
scrollscrollX, scrollY, timestampWeb
resizewidth, height, timestampWeb

API Endpoint

POST /api/session-replays

Submit session replay data for a bug report. Requires X-API-Key header.

Payload

JSON
{
  "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 autoCaptureErrors is 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.