Godot SDK Setup
Get the Quest Data SDK running in your Godot 4 game in 5 minutes. The plugin installs as an AutoLoad singleton and requires no manual initialization.
Prerequisites
Section titled “Prerequisites”- Godot 4.x (4.0 or higher)
- Quest Data Account (free tier available)
- Game API Key (from dashboard)
- Network: Internet connection (SDK batches events every 10s)
Installation
Section titled “Installation”Step 1: Download the Plugin
Section titled “Step 1: Download the Plugin”- Download the latest SDK from wolke.digitalfactory.at/index.php/s/t7zP3PP6wGD9jQt
- Extract the ZIP — you’ll get an
addons/quest_data/folder - Copy that folder into your Godot project root
Your structure should look like:
MyGame/├── addons/│ └── quest_data/│ ├── plugin.gd│ ├── quest_data.gd│ └── ...├── scenes/└── project.godotStep 2: Enable the Plugin
Section titled “Step 2: Enable the Plugin”- Open Godot and load your project
- Go to Project > Project Settings > Plugins tab
- Search for “Quest Data”
- Enable the checkbox
- Restart Godot
Step 3: Configure API Credentials
Section titled “Step 3: Configure API Credentials”- Go to Project > Project Settings > Quest Data tab (new tab appears after restart)
- Fill in:
- API Key: Your game’s API key (from dashboard)
- API URL:
https://quest-api.digitalfactory.at(default)
- Click Save
# Check that settings are validprint(ProjectSettings.get_setting("quest_data/api_key"))# Output: qd_sk_a1b2c3d4e5...First Event
Section titled “First Event”Test the setup by tracking your first event:
# In any scriptfunc _ready(): QuestData.track("game_start", { "version": "1.0.0", "platform": OS.get_name() })
# Check dashboard: Live Feed should show your event within 10 secondsThe SDK will:
- Queue the event in memory
- Batch with other events (max 10 events per batch)
- Send batch after 10 seconds or when 10+ events queued
- Retry on network failure
Common Configuration
Section titled “Common Configuration”Disable on Dev/Debug
Section titled “Disable on Dev/Debug”You probably don’t want to track events during testing:
# In a config file or autoloadconst QUEST_DATA_ENABLED = OS.get_unique_id() != "dev_machine_id"
func _ready(): if QUEST_DATA_ENABLED: QuestData.track("game_start") else: print("Quest Data disabled for dev")Custom Session ID
Section titled “Custom Session ID”By default, the SDK generates a random session ID. Override it:
QuestData.set_session_id("my_custom_session_id")
# Do this before first track() callTroubleshooting
Section titled “Troubleshooting”Something not working? Start with the Troubleshooting page — it covers:
- How to open the Godot Output + Debugger → Errors panels (you’ll need them for everything below)
Backend unreachablered errors (wrong URL, dead server, DNS, TLS, timeout)- Plugin not loading /
Undefined identifiererrors (incl. the GDScript top-level-call gotcha) - Events not appearing in the dashboard
- Offline-fallback issues
dump_state()for bug reports
Next Steps
Section titled “Next Steps”- Event Tracking — All event types and custom events
- Progression — Level tracking with automatic duration
- Error Tracking — Crashes with stack traces
- Purchase Tracking — Revenue and IAP
- Remote Config & Game Data — Feature flags and balance tables
- Remote Logging — Debug logs sent to dashboard