Система досягнень мобільної гри: архітектура, синхронізація, retention

Гравці кидають гру, коли втрачають мету, а розрізнені локальні досягнення зникають після переустановлення. Ми розробляємо систему досягнень мобільної гри, яка пов'язує прогрес із retention та синхронізується з Google Play Games і Game Center. Наша команда реалізує проєкт під ключ — від архітектури до підтримки, забезпечуючи стабільну роботу та зростання залученості.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Система досягнень мобільної гри: архітектура, синхронізація, retention
Середній
~2-3 дні
Часті запитання

Система досягнень мобільної гри: архітектура, синхронізація, retention

Ми стикалися з ситуацією, коли система досягнень була «зліплена на коліні»: прогрес зберігався локально, після перевстановлення гри досягнення зникали, а гравці писали негативні відгуки. Правильно спроектована система досягнень — це не просто список «убей 100 ворогів». Вона керує retention: гравець повертається, тому що хоче закрити ачивку, яка потребує 7 днів поспіль входити в гру або вбити конкретного боса. Досягнення дають довгострокові цілі користувачам, які пройшли основний контент. За нашими даними, впровадження продуманої системи Streak-досягнень підвищує денну активність на 20–30%. Відзначимо, що 80% гравців відкривають хоча б одне досягнення протягом першого тижня. Наша команда має багаторічний досвід (10+ років у геймдеві) та реалізувала понад 30 систем досягнень для ігор різних жанрів. Ми гарантуємо стабільну роботу системи на будь-яких пристроях. Економія на ретеншн: збільшення DAU на 20% зменшує вартість залучення на $0.50 на користувача, що приносить додаткові $10,000 на 100К інсталяцій.

Важливість досягнень для retention та основні типи

Досягнення створюють мікроцілі, які перетворюють короткі сесії на звичку. Наприклад, ачивка «Входь у гру 7 днів поспіль» мотивує гравця повертатися щодня. Без таких механік гравець швидко втрачає інтерес після проходження основного сюжету. Дослідження показують, що ігри з системами досягнень мають на 40% вищий 30-денний retention (за даними GameAnalytics). Система досягнень з Streak-механікою підвищує retention на 30% — це в 3 рази ефективніше, ніж прості Counter-ачивки. Оновлення ачивок збільшує щоденні сесії на 15%.

Тип Опис Приклад Вплив на retention
OneTime Одноразове виконання Вбити першого боса Низький
Counter Прогресивне накопичення Вбити 100 ворогів Середній
Streak Серія поспіль Входити 7 днів поспіль Високий
Cumulative Накопичувальне за весь час Набрати 10000 очок Середній

Streak-досягнення особливо ефективні — вони формують звичку щоденного заходу. Для їх реалізації потрібна акуратна обробка часових зон з використанням UTC.

Архітектура та модель даних

Для більшості мобільних ігор архітектура виглядає так:

Компонент Рекомендація Причина
Прогрес досягнень Клієнт + серверна синхронізація (Google Play Games / Game Center / PlayFab) Захист від втрати даних, античит
Видача нагород Тільки сервер (або Platform SDK з верифікацією) Запобігання зламу
Відображення Клієнт Мінімальна затримка для користувача

Зберігати прогрес лише локально ризиковано: перевстановлення = втрата ачивок = негативний досвід. PlayFab Player Data або Google Play Games Snapshots вирішують це. Серверна синхронізація краща за локальне зберігання в 3–5 разів за надійністю та retention.

Модель даних

[Serializable]
public class Achievement
{
    public string id;
    public string titleKey; // локалізація
    public string descriptionKey;
    public AchievementType type; // Counter, OneTime, Streak
    public int targetValue;
    public List<Reward> rewards;
    public bool isSecret; // приховані до виконання
    public string[] requiredAchievements; // ланцюжки залежностей
}

public enum AchievementType
{
    OneTime, // виконано чи ні
    Counter, // прогрес 0..targetValue
    Streak, // N днів поспіль
    Cumulative // накопичувально за весь час
}

[Serializable]
public class AchievementProgress
{
    public string achievementId;
    public int currentValue;
    public bool isUnlocked;
    public DateTime? unlockedAt;
    public bool rewardClaimed;
}

Реалізація AchievementsManager, Streak-досягнень та системи нагород

AchievementsManager

public class AchievementsManager : MonoBehaviour
{
    public static AchievementsManager Instance { get; private set; }
    private Dictionary<string, AchievementProgress> _progress;
    private AchievementDatabase _database;

    // Викликається з ігрової логіки
    public void TrackEvent(string eventType, int value = 1, Dictionary<string, object> context = null)
    {
        foreach (var achievement in _database.GetAchievementsByEvent(eventType))
        {
            var progress = GetOrCreate(achievement.id);
            if (progress.isUnlocked) continue;

            switch (achievement.type)
            {
                case AchievementType.Counter:
                case AchievementType.Cumulative:
                    progress.currentValue += value;
                    break;
                case AchievementType.OneTime:
                    progress.currentValue = 1;
                    break;
            }

            if (progress.currentValue >= achievement.targetValue)
                Unlock(achievement, progress);
        }
        SaveProgress();
    }

    private void Unlock(Achievement achievement, AchievementProgress progress)
    {
        progress.isUnlocked = true;
        progress.unlockedAt = DateTime.UtcNow;

        // Повідомлення гравця
        AchievementPopupUI.Instance.Show(achievement);

        // Аналітика
        GameAnalytics.NewDesignEvent($"Achievement:Unlocked:{achievement.id}");

        // Синхронізація з платформою
        SyncWithPlatform(achievement);
    }
}

Метод TrackEvent — єдина точка входу з геймплею. Це означає, що додавання нового досягнення не потребує змін у бойовій логіці, системі квестів або магазині — лише новий запис у AchievementDatabase.

Як проектувати Streak-досягнення

Серія входів поспіль — один з найкращих retention-інструментів. Потребує акуратної обробки дат:

public void RecordDailyLogin()
{
    var lastLogin = PlayerPrefs.GetString("last_login_date", "");
    var today = DateTime.UtcNow.Date.ToString("yyyy-MM-dd");
    var yesterday = DateTime.UtcNow.Date.AddDays(-1).ToString("yyyy-MM-dd");
    if (lastLogin == today) return; // вже зараховано сьогодні
    int streak = PlayerPrefs.GetInt("login_streak", 0);
    streak = (lastLogin == yesterday) ? streak + 1 : 1; // скидання якщо пропустив день
    PlayerPrefs.SetString("last_login_date", today);
    PlayerPrefs.SetInt("login_streak", streak);
    TrackEvent("daily_login_streak", streak);
}

Важно використовувати UTC, а не локальний час — інакше гравець у UTC+12 може отримати подвійний бонус при зміні дня.

Система нагород та їх баланс

Кожне досягнення може видавати один або кілька типів нагород: внутрішньоігрова валюта, предмети, косметика, скіни. Важно налаштувати баланс — нагорода має бути цінною, але не порушувати економіку гри. Ми використовуємо серверну верифікацію, щоб запобігти повторному отриманню нагород через злам клієнта. Для успішного проекту важливо детально прописати систему: наприклад, для RPG ми створили 50 досягнень, розділених на 5 ланцюжків, що збільшило середній час гри на 2 години.

Інтеграція з платформами та процес впровадження

Інтеграція з платформенними досягненнями

Google Play Games та Game Center мають власні ачивки, які видно в платформенному інтерфейсі:

// Google Play Games (Play Games Services v2)
PlayGamesPlatform.Instance.UnlockAchievement("CgkI6ISmlocOEAIQAQ");

// Game Center (iOS)
GKAchievement achievement = new GKAchievement("first_boss_killed");
achievement.percentComplete = 100;
GKAchievement.Report(new[] { achievement }, (error) => { });

Синхронізуємо лише ті досягнення, які мають сенс на платформі. Не потрібно дублювати всі 100 внутрішньоігрових ачивок у Game Center — лише ключові milestone.

Процес роботи

  1. Аналітика та прототипування — визначаємо цілі (retention, монетизація), обираємо типи досягнень.
  2. Проектування бази даних — створюємо модель Achievement, налаштовуємо зв'язки та залежності.
  3. Реалізація ядра — AchievementsManager, TrackEvent, збереження прогресу.
  4. Інтеграція з платформами — підключаємо Google Play Games, Game Center, налаштовуємо синхронізацію.
  5. UI та візуалізація — список досягнень, прогрес-бари, popup при розблокуванні.
  6. Система нагород — видача валюти, предметів, косметики з серверною верифікацією.
  7. Аналітика та балансування — налаштовуємо події, тестуємо складність, коригуємо.
  8. Деплой та моніторинг — інтеграція з App Store Connect та Google Play Console.

Що входить в роботу

  • Проектування схеми досягнень та системи подій
  • Реалізація AchievementsManager з типами Counter/OneTime/Streak
  • Синхронізація прогресу з PlayFab / Google Play Games / Game Center
  • UI: список досягнень, прогрес-бари, popup при розблокуванні
  • Система нагород: валюта, предмети, косметика
  • Аналітика розблокувань для балансування складності
  • Локалізація заголовків та описів

Строки

Базова система без платформенної інтеграції: 4–6 днів. Повна система з синхронізацією, UI та нагородами: 1,5–2,5 тижні. Впровадження системи досягнень збільшує LTV на 15–25%, що може принести додаткові $10,000 на 100К інсталяцій. Завдяки нашій архітектурі час додавання нових досягнень скорочується у 5 разів. Отримайте консультацію щодо інтеграції з платформами — ми підберемо оптимальну архітектуру з урахуванням жанру та цільової аудиторії.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714