BugSplat.Godot 0.1.0

dotnet add package BugSplat.Godot --version 0.1.0
                    
NuGet\Install-Package BugSplat.Godot -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BugSplat.Godot" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="BugSplat.Godot" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="BugSplat.Godot" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add BugSplat.Godot --version 0.1.0
                    
#r "nuget: BugSplat.Godot, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package BugSplat.Godot@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=BugSplat.Godot&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=BugSplat.Godot&version=0.1.0
                    
Install as a Cake Tool

bugsplat-github-banner-basic-outline

BugSplat

Crash and error reporting built for busy developers.

Introduction

BugSplat's BugSplat.Godot package provides crash and exception reporting for Godot C# projects. BugSplat provides you with invaluable insight into the issues tripping up your users. Our Godot integration collects stack traces, log files, and custom metadata so that you can fix bugs and deliver a better user experience.

Before you proceed, please make sure you have completed the following checklist:

Installation

BugSplat's BugSplat.Godot package can be added to your Godot C# project via NuGet.

dotnet add package BugSplat.Godot

This automatically pulls in the BugSplatDotNetStandard dependency. No additional packages are required.

Quick Start

Create a script that initializes BugSplat and add it as an autoload in your project.

using BugSplat.Godot;
using Godot;
using System;

public partial class BugSplatAutoload : Node
{
    private BugSplatNode _bugSplat;

    public override void _Ready()
    {
        _bugSplat = BugSplatNode.Create(
            database: "fred",
            application: "my-godot-crasher",
            version: "1.0.0"
        );

        AddChild(_bugSplat);

        GD.Print("[BugSplat] Crash reporting initialized.");
    }
}

Register the script as an autoload in Project > Project Settings... > Globals > Autoload, and unhandled exceptions will be automatically captured and posted to BugSplat.

To view your crash reports, navigate to the BugSplat Dashboard and ensure you have selected the correct database.

Configuration

After creating a BugSplatNode, you can configure the underlying client via the Client property:

_bugSplat = BugSplatNode.Create("fred", "my-godot-crasher", "1.0.0");

_bugSplat.Client.Description = "Default crash description";
_bugSplat.Client.Email = "support@bugsplat.com";
_bugSplat.Client.Key = "optional-key";
_bugSplat.Client.Notes = "additional notes";
_bugSplat.Client.User = "Fred";
_bugSplat.Client.Attachments.Add(new FileInfo("/path/to/attachment.txt"));

You can also configure BugSplatNode behavior directly:

_bugSplat.PostExceptionsInEditor = false;
_bugSplat.CaptureGodotLog = true;

Usage

Automatic Exception Capture

When a BugSplatNode is in the scene tree, it automatically hooks into AppDomain.CurrentDomain.UnhandledException and TaskScheduler.UnobservedTaskException. Any unhandled exceptions are posted to BugSplat with rate limiting (1 report per 3 seconds).

Try/Catch Reporting

Exceptions can be sent to BugSplat in a try/catch block by calling Post:

try
{
    throw new Exception("BugSplat rocks!");
}
catch (Exception ex)
{
    await _bugSplat.Post(ex);
}

Default values on the BugSplatNode can be overridden per-report with ExceptionPostOptions:

var options = new ExceptionPostOptions()
{
    Description = "a new description",
    Email = "barney@bugsplat.com",
    Key = "a new key!",
    Notes = "some new notes!",
    User = "Barney"
};

options.Attachments.Add(new FileInfo("/path/to/additional.txt"));

await _bugSplat.Post(ex, options);

Event Callbacks

You can listen for crash post results via C# events:

_bugSplat.OnCrashPosted += (response) =>
{
    GD.Print($"[BugSplat] Crash report posted: {response.StatusCode}");
};

_bugSplat.OnCrashPostError += (ex) =>
{
    GD.PrintErr($"[BugSplat] Failed to post crash: {ex.Message}");
};

Preventing Repeated Reports

By default, BugSplat prevents reports from being sent at a rate greater than 1 per every 3 seconds. You can override this by setting ShouldPostException:

_bugSplat.ShouldPostException = (ex) =>
{
    // Custom filtering logic
    return ex is not InvalidOperationException;
};

Adding System Information

You can use Attributes to attach structured system information to every crash report:

_bugSplat.Client.Attributes["os.name"] = OS.GetName();
_bugSplat.Client.Attributes["os.version"] = OS.GetVersion();
_bugSplat.Client.Attributes["locale"] = OS.GetLocale();
_bugSplat.Client.Attributes["processor.name"] = OS.GetProcessorName();
_bugSplat.Client.Attributes["processor.count"] = OS.GetProcessorCount().ToString();
_bugSplat.Client.Attributes["video.adapter.name"] = RenderingServer.GetVideoAdapterName();
_bugSplat.Client.Attributes["video.adapter.vendor"] = RenderingServer.GetVideoAdapterVendor();
_bugSplat.Client.Attributes["godot.version"] = Engine.GetVersionInfo()["string"].ToString();

Attaching Screenshots

You can capture a screenshot from the viewport and attach it to a crash report:

var image = GetViewport().GetTexture().GetImage();
var path = ProjectSettings.GlobalizePath("user://screenshot.png");
image.SavePng(path);
_bugSplat.Client.Attachments.Add(new FileInfo(path));

API

BugSplatNode

Property / Method Description
Client The underlying BugSplatDotNetStandard.BugSplat client. Use this to set Description, Email, Key, Notes, User, Attachments, and Attributes.
PostExceptionsInEditor Should BugSplat post exceptions when running in the Godot editor? Default: true.
CaptureGodotLog Should BugSplat attach godot.log to crash reports? Default: true.
ShouldPostException Optional Func<Exception, bool> guard called before each report is posted.
OnCrashPosted Event fired after a crash report is successfully posted.
OnCrashPostError Event fired when a crash report fails to post.
Create(database, application, version) Static factory that returns a fully initialized BugSplatNode.
Init(database, application, version) Initialize the client. Required if using the parameterless constructor.
Post(Exception, ExceptionPostOptions?) Manually post an exception to BugSplat.
Post(string, ExceptionPostOptions?) Manually post a stack trace string to BugSplat.

ExceptionPostOptions

Property Description
Description Override the default description for this report.
Email Override the default email for this report.
Key Override the default key for this report.
Notes Override the default notes for this report.
User Override the default user for this report.
Attachments Additional files to upload with this report.
Attributes Additional key-value metadata for this report.

Contributing

BugSplat loves open source! If you feel that this package can be improved, please open an Issue. If you have an awesome new feature you'd like to implement, we'd love to merge your Pull Request. You can also send us an email, join us on Discord, or message us via the in-app chat on bugsplat.com.


Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 41 3/20/2026