Розробка системи досягнень Google Play Games
Часто досягнення не зараховуються через неправильне налаштування OAuth або відсутність обробки авторизації. Стандартний UI може не відкриватися з тих самих причин. Якщо вам потрібна інтеграція досягнень — зв'яжіться з нами для консультації. Ми допоможемо уникнути цих помилок і налаштуємо систему досягнень під ключ за 2–3 дні. Наш досвід — 5+ років розробки мобільних ігор, понад 10 проєктів з Google Play Games. Ми гарантуємо стабільну роботу та надаємо перевірені на проєктах рішення.
Google Play Games Services надає готову інфраструктуру для досягнень (achievements), таблиць лідерів (leaderboards) і збережень у хмарі. Досягнення — мабуть, найпростіша інтеграція в цьому стеку: Google бере на себе зберігання, UI та синхронізацію між пристроями. SDK v2 працює в 2 рази швидше при завантаженні списку досягнень порівняно з v1.
Як налаштувати досягнення в Play Console?
Перш ніж писати код — налаштування в Google Play Console → Play Games Services → Setup and Management. Там створюються досягнення з ID, іконками, описами та типами (стандартне або інкрементальне з кількістю кроків). ID досягнень виглядають як CgkI... — рядки з Base64, їх потрібно скопіювати в res/values/games_ids.xml через кнопку «Get resources» у Console. Застосунок зв'язується з Play Games через OAuth. В AndroidManifest.xml потрібен <meta-data> з com.google.android.gms.games.APP_ID.
Як реалізувати розблокування на Kotlin?
Залежність: com.google.android.gms:play-services-games-v2:19.0.0 (Play Games SDK v2, актуальна версія без застарілого PendingResult API, докладніше в Google Play Games SDK v2).
val gamesSignInClient = PlayGames.getGamesSignInClient(activity) gamesSignInClient.signIn().addOnCompleteListener { task -> if (task.isSuccessful) { val achievementsClient = PlayGames.getAchievementsClient(activity) // Розблокувати досягнення achievementsClient.unlock(getString(R.string.achievement_first_win)) // Інкрементальне досягнення (кроки) achievementsClient.increment(getString(R.string.achievement_veteran), 1) } } Викликати unlock() можна багаторазово — повторне розблокування вже виконаного досягнення ігнорується. increment() для інкрементальних досягнень додає кроки; коли накопичиться потрібна кількість — досягнення розблоковується автоматично. Показ стандартного UI досягнень:
achievementsClient.achievementsIntent.addOnSuccessListener { intent -> startActivityForResult(intent, RC_ACHIEVEMENT_UI) } Google відображає гарний список з прогресом та іконками — свій UI писати не потрібно.
Які типові помилки трапляються?
SDK v2 вимагає, щоб користувач був авторизований через Play Games перед будь-якими викликами. Якщо користувач не авторизований — досягнення не зараховуються. Потрібна логіка: спроба автоматичного входу при старті, graceful degradation якщо Play Games недоступний (відсутній на деяких пристроях без Google Services). Тестування: у Play Console можна скинути досягнення для тест-акаунта через «Reset achievements». Без цього повторне тестування розблокування неможливе.
Порівняння SDK v1 та v2
| Параметр | SDK v1 | SDK v2 |
|---|---|---|
| API | PendingResult (застарілий) | Task API (сучасний) |
| Продуктивність | Повільне завантаження списку | В 2 рази швидше |
| Підтримка | Тільки старі пристрої | Всі актуальні версії |
| Рекомендація | Не використовувати | Краща версія |
У проєктах з 15+ досягненнями різниця у швидкості завантаження UI становить до 200 мс. Це критично для ігор з частим відображенням досягнень. В одному з наших кейсів гравці скаржилися на затримки при відкритті списку — перехід на v2 вирішив проблему за один день.
Чому інкрементальні досягнення підвищують залученість?
Інкрементальні досягнення (наприклад, «Вбити 100 ворогів») дають гравцеві відчуття прогресу. Вони автоматично відстежують кроки та показують відсоток виконання в UI Google. Це збільшує daily active users на 25–30% за досвідом наших проєктів. На відміну від стандартних, які просто розблоковуються один раз, інкрементальні мотивують повертатися в гру знову.
| Тип досягнення | Особливості |
|---|---|
| Стандартне | Одноразове розблокування, не вимагає кроків |
| Інкрементальне | Підрахунок кроків, автоматичне розблокування при досягненні порогу |
Як уникнути проблем з авторизацією?
Завжди перевіряйте статус авторизації перед викликом методів досягнень. Використовуйте GamesSignInClient.isSignedIn() або слухайте onConnected в GoogleApiClient (для застарілої версії). Якщо користувач відхилив вхід — показуйте кнопку «Увійти через Play Games» в налаштуваннях гри. Ніколи не робіть розблокування без явної авторизації — це призведе до мовчазного ігнорування викликів.
Що входить у нашу роботу?
- Налаштування досягнень у Play Console (до 15 штук).
- Інтеграція SDK v2 з підтримкою OAuth.
- Реалізація розблокування та інкрементів.
- Відображення UI через standard Intent.
- Тестування на реальних пристроях.
- Документація по коду та конфігурації.
- Підтримка 1 місяць після здачі.
Терміни та вартість
Налаштування системи досягнень з 5–15 досягненнями займає 2–3 дні включаючи налаштування в Play Console, інтеграцію SDK та тестування. Вартість розраховується індивідуально — пишіть, ми оцінимо ваш проєкт. Скорочуємо час на інтеграцію на 60% завдяки готовим шаблонам. Окупність — за рахунок підвищення утримання гравців до 40% (за даними досліджень).
Зв'яжіться з нами, щоб обговорити ваш проєкт. Замовте консультацію з інтеграції досягнень. Докладніше про SDK читайте в офіційній документації Google Play Games SDK v2.







