Indigauge helps you collect the signals that are hardest to reconstruct after a playtest: when sessions start, what players did, where errors happened, and what players wanted to tell you in the moment.
The fastest path is:
namespace.event events with useful metadata.| Engine | Start here | Best for |
|---|---|---|
| Bevy | Getting started with Bevy | Rust games using Bevy 0.19 |
| Godot | Getting started with Godot | Godot 4 projects using GDScript |
Both SDKs follow the same core model: start one session per game launch, queue events while the player is active, flush in batches, and attach optional feedback to the current session.
Each game should use its own Indigauge public key. The SDK sends this key when it starts a session so the ingest API knows which game the data belongs to.
Use the SDK development mode while you are wiring the integration. Development mode lets you confirm that sessions, events, metadata, and feedback calls are working without filling production analytics with local test data.
.mode(IndigaugeMode::Dev) while testing locally.mode as AUTO; editor and debug builds resolve to DEV.Switch to live telemetry for release builds or live QA once the event names and metadata shape are stable.
Event names must use the strict namespace.event format. Examples:
Use metadata for values that change:
Avoid encoding IDs, timestamps, level numbers, or player choices into the event name itself. That keeps your dashboard easier to filter and compare across builds. See the Event Naming guide for the full rules.
Start with a small event set that answers real questions. You can always add more once you know what you want to inspect.
| Event | Level | Useful metadata |
|---|---|---|
level.start | info | level, difficulty, mode |
level.clear | info | level, durationSeconds, deaths, score |
player.death | info | level, cause, checkpoint |
ui.open | info | screen, source |
save.failed | error | reason, slot, platform |
For games without levels, use names that match your structure: run.start,
match.end, quest.complete, or round.loss.
Session metadata is best for state that describes the whole play session or the current run, such as score, selected character, region, difficulty, matchmaking mode, active level, or experiment assignment.
Prefer session metadata when the value should be visible across many events. Prefer event metadata when the value only matters for a single action.
Player feedback is most useful when it can be opened from inside the game, close to the moment of frustration or delight. Both engine integrations include a feedback flow you can trigger from your own UI.
Good places to expose feedback: