Help us improve BugQuest by completing a short survey

Share Your Feedback

BugQuest Installation Guide

  • Install BugQuest in your Godot project.
  • Link the project to your account in the dev console.
  • Run your game and start seeing real runtime errors.

1Download and Install the BugQuest Plugin

Download the BugQuest addon zip file for Godot from our GitHub repository:

Copy the gdbq folder from the zip file to your project's addons/ folder:

your_project/
├── addons/
└── gdbq/
├── project.godot
└── ...

Enable the addon in your Project Settings under Plugins.

Enable the plugin

2Setup the Plugin

After enabling the plugin, select BugQuest Setup from the Project/Tools menu.

Launch the plugin setup

Click the Setup button to:

  • Automatically generate an API key for your project
  • Create a link to our website to quickly setup an account associated with this project

BugQuest will automatically start tracking errors when your game runs. No additional code is required.

Create an API key

3Visit the Web Interface

Click the link that appears or copy it to your clipboard and paste it in a browser window. This will take you to the web interface where you can quickly create an account and view your errors.

Register with the dev console

BugQuest API

Use the latest BugQuest Godot plugin for the APIs below. GDScript calls use the BugQuest node; C# calls use BugQuest.BugQuestAPI from the dotnet release.

Video capture supports Windows with an NVIDIA GPU capable of NVENC hardware encoding. Godot requires a RenderingDevice renderer (Forward+ or Mobile); Compatibility and headless mode do not capture video. See the Video FAQ.

Call these methods on the main thread after BugQuest has initialized. Recording and file work run asynchronously. C# methods safely return false or do nothing when BugQuest is absent or disabled.

var bq = get_node_or_null("/root/BugQuest")

StartReplay

Replay API

Starts a replay with the supplied label. Returns true if the start request was accepted; false if recording is unavailable or a replay is already active. The server configuration also limits the duration.

  • label / replayLabel: label shown in the dev console.
  • discard_on_timeout / discardReplayOnMaxDurationTimeout: discard on timeout instead of saving. Call StopReplay to keep it before the timeout.
  • maximum_minutes / maxReplayDurationMinutes: requested maximum duration in minutes, capped by the server configuration.

GDScript

start_replay(label: String, discard_on_timeout: bool = false, maximum_minutes: int = 2147483647) -> bool
if bq and not bq.is_replay_recording():
    bq.start_replay("BossFight")

C#

bool StartReplay(string replayLabel, bool discardReplayOnMaxDurationTimeout = false, int maxReplayDurationMinutes = int.MaxValue)
if (!BugQuest.BugQuestAPI.IsReplayRecording())
{
    BugQuest.BugQuestAPI.StartReplay("BossFight");
}

StopReplay

Replay API

Requests completion of the active replay. Returns true if the request was accepted. Saving finishes asynchronously; replay status may remain true while finalization is pending.

  • discard / discardReplay: discard the replay instead of saving it.
  • label / replaceLabel: replace the original label; null preserves it.
  • keep_minutes / onlyKeepLastMinutes: keep only the last N minutes. The default keeps the whole replay.

GDScript

stop_replay(discard: bool = false, label = null, keep_minutes: int = 2147483647) -> bool
if bq:
    bq.stop_replay(false, null, 5)

C#

bool StopReplay(bool discardReplay = false, string replaceLabel = null, int onlyKeepLastMinutes = int.MaxValue)
BugQuest.BugQuestAPI.StopReplay(onlyKeepLastMinutes: 5);

IsReplayRecording

Replay API

Returns true while a replay is active, including pending finalization. Returns false when video is unavailable or disabled.

GDScript

is_replay_recording() -> bool
if bq and bq.is_replay_recording():
    bq.stop_replay()

C#

bool IsReplayRecording()
bool recording = BugQuest.BugQuestAPI.IsReplayRecording();

EnableErrorClips

Error Clips API

Allows automatic error clips again after DisableErrorClips. Clips still require server configuration to enable them and supported hardware. This does not undo DisableAllVideoFeatures.

GDScript

enable_error_clips() -> void
if bq:
    bq.enable_error_clips()

C#

void EnableErrorClips()
BugQuest.BugQuestAPI.EnableErrorClips();

DisableErrorClips

Error Clips API

Suppresses new error clips without stopping replays or error reporting. The setting survives configuration refreshes for the current app session and can be reversed with EnableErrorClips. Clips already requested may finish.

GDScript

disable_error_clips() -> void
if bq:
    bq.disable_error_clips()

C#

void DisableErrorClips()
BugQuest.BugQuestAPI.DisableErrorClips();

DisableAllVideoFeatures

Runtime Control API

Stops capture and disables Error Clips and Replays for the rest of this app session. Error collection and upload continue. The existing GDScript method disable_video() remains an alias.

GDScript

disable_all_video_features() -> void
if bq:
    bq.disable_all_video_features()

C#

void DisableAllVideoFeatures()
BugQuest.BugQuestAPI.DisableAllVideoFeatures();

Disable

Runtime Control API

Disables BugQuest collection, upload, and video for the rest of the current app session. BugQuest starts again on the next application launch unless disabled again.

GDScript

disable() -> void
if bq and not bq.is_disabled():
    bq.disable()

C#

void Disable()
BugQuest.BugQuestAPI.Disable();

SendUserReport

User Reports API

Queues player feedback as a report, with optional attachment file paths. Your game provides the feedback UI. Returns whether the request was accepted locally, not confirmation of server delivery.

  • message / text: feedback text stored in the report message.
  • attachment_paths / attachmentPaths: optional paths to existing files, such as a screenshot.

GDScript

send_user_report(message: String, attachment_paths: PackedStringArray = []) -> bool
if bq:
    bq.send_user_report("The quest marker disappeared")

C#

bool SendUserReport(string text, string[] attachmentPaths = null)
BugQuest.BugQuestAPI.SendUserReport("The quest marker disappeared");

Additional Documentation

Verify Project Setup with GDScript Errors

When properly configured, any GDScript errors and exceptions will automatically be reported to BugQuest.

# Example - These errors will be automatically captured:
printerr("Failed to load player data")

push_error("Invalid item ID: " + str(item_id))

var x = null
x.do_something()   # exception

C# Support

BugQuest will automatically capture and report C# errors printed with GD.PrintErr() and GD.PushError(), as well as unhandled C# exceptions when you install the version.

// Example - These C# errors will be automatically captured
GD.PrintErr("c# PrintErr");
GD.PushError("c# PushError");
throw new Exception("c# test exception");

Note: BugQuest Godot plugin releases include two zip files. You must use the one with dotnet in the name to handle C# errors. The correct zip file is named bugquest-godot-dotnet-<version>.zip.

The BugQuest Godot plugin with C# support requires a .sln file in your project in order to export a build.

Support and Feedback

Please give us your feedback by completing this short survey.
Please email us at support@bugquest.gg if you have any questions or need help.

Legal Documents