Google Play Games Achievements Integration Services
Often achievements don't get unlocked due to incorrect OAuth configuration or missing authorization handling. The standard UI may fail to open for the same reasons. If you need achievements integration, contact us for a consultation. We'll help avoid these pitfalls and set up a complete achievements system in 2–3 days. Our experience includes over 5 years of mobile game development and more than 10 projects with Google Play Games. We guarantee stable operation and provide battle-tested solutions.
Google Play Games Services offers a ready-made infrastructure for achievements, leaderboards, and cloud saves. Achievements are perhaps the simplest integration in this stack: Google handles storage, UI, and cross-device synchronization. SDK v2 loads the achievements list twice as fast as v1.
How to set up achievements in Play Console?
Before writing code — configuration in Google Play Console → Play Games Services → Setup and Management. There you create achievements with IDs, icons, descriptions, and types (standard or incremental with step count). Achievement IDs look like CgkI... — Base64 strings — copy them into res/values/games_ids.xml via the "Get resources" button in Console. The app connects to Play Games via OAuth. In AndroidManifest.xml you need a <meta-data> with com.google.android.gms.games.APP_ID.
How to implement unlocking in Kotlin?
Dependency: com.google.android.gms:play-services-games-v2:19.0.0 (Play Games SDK v2, current version without legacy PendingResult API, see Google Play Games SDK v2).
val gamesSignInClient = PlayGames.getGamesSignInClient(activity) gamesSignInClient.signIn().addOnCompleteListener { task -> if (task.isSuccessful) { val achievementsClient = PlayGames.getAchievementsClient(activity) // Unlock an achievement achievementsClient.unlock(getString(R.string.achievement_first_win)) // Incremental achievement (steps) achievementsClient.increment(getString(R.string.achievement_veteran), 1) } } Calling unlock() multiple times is safe — a second unlock of an already completed achievement is ignored. increment() adds steps for incremental achievements; when the target is reached, the achievement unlocks automatically. To show the standard achievements UI:
achievementsClient.achievementsIntent.addOnSuccessListener { intent -> startActivityForResult(intent, RC_ACHIEVEMENT_UI) } Google displays a polished list with progress and icons — no need to build a custom UI.
What are common pitfalls?
SDK v2 requires the user to be signed into Play Games before any API calls. If the user isn't authenticated, achievements won't be recorded. Your app needs logic for automatic sign-in on startup and graceful degradation when Play Games is unavailable (e.g., on devices without Google Services). For testing, Play Console provides a "Reset achievements" option for test accounts — without it, repeated testing of unlock flows is impossible.
Comparison of SDK v1 and v2
| Parameter | SDK v1 | SDK v2 |
|---|---|---|
| API | PendingResult (legacy) | Task API (modern) |
| Performance | Slow list loading | 2x faster |
| Support | Only old devices | All current versions |
| Recommendation | Do not use | Preferred version |
In projects with 15+ achievements, the UI load time difference can be up to 200 ms. This matters for games that frequently show achievements. In one of our cases, player complaints about delays vanished after switching to v2 in one day.
Why incremental achievements boost engagement?
Incremental achievements (e.g., "Kill 100 enemies") give players a sense of progress. They automatically track steps and display completion percentage in Google's UI. Based on our project experience, this increases daily active users by 25–30%. Unlike standard one-time unlocks, incremental achievements encourage players to return to the game.
| Achievement type | Characteristics |
|---|---|
| Standard | One-time unlock, no steps |
| Incremental | Step counting, auto-unlock at threshold |
How to avoid authorization issues?
Always check the sign-in status before calling achievement methods. Use GamesSignInClient.isSignedIn() or listen to onConnected in GoogleApiClient (for legacy versions). If the user declines sign-in, provide a "Sign in with Play Games" button in the game settings. Never attempt unlocks without explicit authorization — calls will be silently ignored.
What does our work include?
- Configure achievements in Play Console (up to 15 items).
- Integrate SDK v2 with OAuth support.
- Implement unlock and increment logic.
- Display UI via standard Intent.
- Test on real devices.
- Provide code and configuration documentation.
- 1 month of post-delivery support.
Timelines and cost
Setting up an achievements system with 5–15 achievements takes 2–3 days, including Play Console configuration, SDK integration, and testing. The cost is determined individually — contact us to evaluate your project. We reduce integration time by 60% thanks to ready-made templates. The return on investment comes from increasing player retention by up to 40% (according to studies).
Contact us to discuss your project. Request a consultation on achievements integration. For more details on the SDK, see the official Google Play Games SDK v2 documentation.







