Разработка системы достижений 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, актуальная версия без legacy 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.







