Analytics and crash reporting
Durable event ingest that rolls up into DAU/MAU, retention, funnels, sessions, economy health, and grouped crashes.
Track events with tg.track: they're coalesced into a durable outbox, survive a dropped connection, and flush on reconnect. Counts only: no per-player PII leaves the device.
tg.track('level_complete');
tg.track('boss_defeated', 1); Rollups
A nightly job rolls raw events into materialized metrics: DAU/MAU, new players, day-N retention cohorts, sessions (count + length), per-currency economy health (sources/sinks/net), and developer-defined funnels. View them in the dashboard Analytics tab, read them via the dev API, or ask an agent through the MCP tools.
Crash reporting
Report crashes with tg.crashes.report(message, { stack }). The server fingerprints the normalized stack and groups a flood of reports into a handful of issues, each with a crash-free-users %.
try { gameLoop(); } catch (e) {
tg.crashes.report(e.message, { stack: e.stack, appVersion: '1.4.0' });
} - User-generated content
Author, publish, play, and remix player content, with moderation and remix lineage.
- LiveOps: config, flags, segments and codes
Change the live game with no client deploy: remote config, feature flags, player segments, live events, and promo codes.
- A/B experiments
Split players across variants, measure a metric, and read per-variant conversion: deterministic, sticky assignment built on the flags/segments engine.
- Web push notifications
Re-engage players with self-hosted Web Push (VAPID): subscribe from the game, send from the dashboard/MCP to everyone, a segment, or one player.
- Verifiable RNG
Deterministic, server-seeded randomness so loot and crit rolls can't be client-forged.