Інтеграція deltaDNA для мобільної гри
deltaDNA — платформа поведінкової аналітики, яку обирають саме ігрові студії: вона спроектована під ігрові eventi, воронки прогресії, сегментацію по LTV й управління кампаніями прямо з консолі. Це не Google Analytics з ігровими віджетами — інша модель даних, інші SDK й інший процес авторизації подій.
Де звичайно спотикаються при інтеграції
Найпоширеніша проблема — неправильна ініціалізація SDK до старту сесії гри. deltaDNA вимагає виклику DDNA.Instance.StartSDK() до будь-якої відправки подій, інакше eventi йдуть в очередь, яка ніколи не сбросується, й дані теряються без помилок у логу.
На Unity це виглядає так:
// GameAnalyticsManager.cs — викликати в Awake() самого раннього GameObject
DDNA.Instance.SetLoggingLevel(DeltaDNA.Logger.Level.DEBUG);
DDNA.Instance.StartSDK(
"YOUR_ENVIRONMENT_KEY",
"https://collect.deltadna.net/YOUR_COLLECT_URL",
"https://engage.deltadna.net/YOUR_ENGAGE_URL"
);
Друга проблема — обов'язкові параметри схеми подій. deltaDNA перевіряє eventi на відповідність схемі, визначеній в Dashboard. Якщо відправити подію missionStarted без обов'язкового поля missionName — подія не відхиляється явно, вона просто не потрапляє в звіти. Це обнаруживается тільки при перегляді Event Browser спустя кілька днів.
Як будуємо інтеграцію
Схема роботи: спочатку в Dashboard створюємо схему подій під конкретний ігровий цикл, потім генеруємо типізовані обгортки через deltaDNA Event Builder, потім підключаємо SDK.
Для стандартних ігрових подій deltaDNA надає готові класи: GameEvent, Transaction, MissionStartedEvent, MissionCompletedEvent. Для кастомних — успадковуємось від GameEvent:
var missionEvent = new GameEvent("missionStarted")
.AddParam("missionName", "Level_05_Boss")
.AddParam("missionDifficulty", "hard")
.AddParam("playerLevel", 12)
.AddParam("timeSinceLastSession", sessionManager.SecondsSinceLast);
DDNA.Instance.RecordEvent(missionEvent).Run();
Монетизаційні eventi обгортаємо через Transaction — це критично для когортного аналізу LTV:
var transaction = new Transaction(
"Gem Pack Purchase",
"PURCHASE",
new Product().AddVirtualCurrency("Gems", "GRIND", 500),
new Product().SetRealCurrency("USD", 199) // в центах
);
transaction.AddParam("storeItemID", "gem_pack_small");
DDNA.Instance.RecordEvent(transaction).Run();
Параметр SetRealCurrency — реальна валюта в мінімальних одиницях (центи, копійки). Помилка тут зломає всі звіти по ARPU.
Engage — персоналізація прямо з консолі
Окремий модуль deltaDNA — Engage. Дозволяє отримувати параметри A/B тестів й персоналізовані пропозиції з сервера без релізу:
DDNA.Instance.RequestEngagement(
new Engagement("offerWall")
.AddParam("userSegment", playerSegment.ToString()),
response => {
if (response.IsSuccessful) {
var offerData = response.JSON["parameters"];
ShowOffer(offerData["gemPackDiscount"].Value<int>());
}
}
);
Важливо: Engage-запити кешуються SDK на пристрої. Якщо сервер недоступний, повертається останній успішний відповідь. Це потрібно враховувати при проектуванні fallback-логіки.
Що входить у роботу
- Створення й валідація схем подій у deltaDNA Dashboard
- Інтеграція SDK (Unity / Unreal через C++ плагін / нативний iOS Swift / нативний Android Kotlin)
- Реалізація всіх ігрових подій: сесії, прогресія, монетизація, соціальні взаємодії
- Настройка Engage для A/B тестування внутрішньоігрових пропозицій
- Верифікація даних у Event Browser й першопочаткові звіти
Терміни
Базова інтеграція Unity з покриттям 10–15 подій: 2–3 дні. Повний цикл з Engage, кастомними воронками й QA в Event Browser: до 5 днів. Вартість розраховується індивідуально після аналізу вимог.







