Analytics
Track performance metrics, player behavior, and custom analytics.
Overview
The GameTribe SDK automatically collects key analytics data and allows you to track custom metrics for deeper insights into player behavior.
Automatic Metrics
These metrics are collected automatically when analytics is enabled:
| Metric | Description |
|---|---|
| Session Duration | How long each play session lasts |
| IPM (Interactions Per Minute) | Player engagement intensity |
| Average FPS | Performance across devices |
| Memory Usage | Memory consumption patterns |
| Device Info | Platform, OS, screen size, Unity version |
| Rage Quit Detection | When players exit frustratedly |
csharp
// Enable automatic analytics in PlatformConfigenableAnalytics = true;trackPerformanceMetrics = true;analyticsBatchInterval = 60f; // Send every 60 seconds
Performance Tracking
Track performance metrics to identify issues across different devices:
PerformanceTracker.cs
using UnityEngine;using GameTribe.SDK;public class PerformanceTracker : MonoBehaviour{private float[] fpsBuffer = new float[60];private int fpsIndex = 0;void Update(){// Track FPSfpsBuffer[fpsIndex] = 1f / Time.deltaTime;fpsIndex = (fpsIndex + 1) % fpsBuffer.Length;}public void SendPerformanceReport(){float avgFps = 0f;float minFps = float.MaxValue;foreach (var fps in fpsBuffer){avgFps += fps;if (fps < minFps && fps > 0) minFps = fps;}avgFps /= fpsBuffer.Length;PlatformSDK.Instance.Events.TrackPerformance(new Dictionary<string, object>{{ "avgFps", Mathf.RoundToInt(avgFps) },{ "minFps", Mathf.RoundToInt(minFps) },{ "memoryUsage", System.GC.GetTotalMemory(false) / 1024 / 1024 }, // MB{ "qualityLevel", QualitySettings.GetQualityLevel() }});}}
Feature Usage Analytics
Track which features players use most:
csharp
// Track when player opens shopPlatformSDK.Instance.Events.TrackFeatureUsed(featureName: "item_shop",metadata: new Dictionary<string, object>{{ "timeSpent", shopOpenTime },{ "itemsViewed", viewedItems.Count },{ "purchaseMade", didPurchase }});// Track tutorial completionPlatformSDK.Instance.Events.TrackFeatureUsed(featureName: "tutorial",metadata: new Dictionary<string, object>{{ "completed", true },{ "stepsCompleted", 5 },{ "timeToComplete", tutorialTime }});
Navigation Tracking
Understand how players navigate through your game:
csharp
// Track screen navigationPlatformSDK.Instance.Events.TrackNavigation(fromScreen: "main_menu",toScreen: "level_select");// Track with additional contextPlatformSDK.Instance.Events.TrackNavigation(fromScreen: "game_over",toScreen: "leaderboard",metadata: new Dictionary<string, object>{{ "navigationMethod", "button_click" },{ "timeOnPreviousScreen", 5.2f }});
Error Tracking
Track errors to identify and fix issues:
ErrorTracker.cs
public class ErrorTracker : MonoBehaviour{void OnEnable(){Application.logMessageReceived += HandleLog;}void OnDisable(){Application.logMessageReceived -= HandleLog;}void HandleLog(string logString, string stackTrace, LogType type){if (type == LogType.Error || type == LogType.Exception){PlatformSDK.Instance.Events.TrackError(errorType: type.ToString(),errorMessage: logString,metadata: new Dictionary<string, object>{{ "stackTrace", stackTrace },{ "severity", type == LogType.Exception ? "critical" : "error" }});}}}
Time Tracking
Track how players spend their time in different areas:
csharp
// At end of session, report time breakdownPlatformSDK.Instance.Events.TrackTimeSpent(totalTime: (int)totalSessionTime,breakdown: new Dictionary<string, object>{{ "gameplay", gameplayTime },{ "menus", menuTime },{ "loading", loadingTime },{ "paused", pausedTime },{ "shop", shopTime }});
Custom Metrics
Track any custom data specific to your game:
csharp
// Track custom game-specific metricsPlatformSDK.Instance.Analytics.TrackCustomMetric("power_ups_used", 5);PlatformSDK.Instance.Analytics.TrackCustomMetric("enemies_defeated", 42);PlatformSDK.Instance.Analytics.TrackCustomMetric("coins_collected", 1500);// Track with metadataPlatformSDK.Instance.Events.SendCustomEvent("boss_defeated", new Dictionary<string, object>{{ "bossId", "final_boss" },{ "attemptNumber", 3 },{ "timeToDefeat", 120 },{ "healthRemaining", 25 }});
Analytics Configuration
| Setting | Default | Description |
|---|---|---|
| enableAnalytics | true | Enable/disable all analytics |
| analyticsBatchInterval | 60s | How often to send batched data |
| trackPerformanceMetrics | true | Auto-track FPS, memory, etc. |
Best Practices
- Be selective — Track meaningful metrics, not everything
- Use consistent naming — Establish naming conventions for events
- Include context — Add relevant metadata to events
- Respect privacy — Don't track personal information
- Monitor performance — Track FPS to identify optimization needs