Mobile Game Achievements System Development

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Mobile Game Achievements System Development
Medium
~2-3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Mobile Game Achievements System Development

Achievement system isn't just "kill 100 enemies." Properly designed, it manages retention: player returns wanting to unlock achievement requiring 7 daily logins or kill specific boss. Achievements also provide long-term goals for players who finished main content.

Architecture: Local vs Server

For most mobile games architecture looks like:

  • Achievement progress — client + server sync (Google Play Games / Game Center / PlayFab)
  • Reward granting — server only (or Platform SDK with verification)
  • Display — client

Storing progress locally only is risky: reinstall = lost achievements = negative experience. PlayFab Player Data or Google Play Games Snapshots solve this.

Data Model

[Serializable]
public class Achievement
{
    public string id;
    public string titleKey;          // localization
    public string descriptionKey;
    public AchievementType type;     // Counter, OneTime, Streak
    public int targetValue;
    public List<Reward> rewards;
    public bool isSecret;            // hidden until done
    public string[] requiredAchievements; // dependency chains
}

public enum AchievementType
{
    OneTime,    // done or not
    Counter,    // progress 0..targetValue
    Streak,     // N days straight
    Cumulative  // total over all time
}

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

AchievementsManager

public class AchievementsManager : MonoBehaviour
{
    public static AchievementsManager Instance { get; private set; }

    private Dictionary<string, AchievementProgress> _progress;
    private AchievementDatabase _database;

    // Called from game logic
    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;

        // Notify player
        AchievementPopupUI.Instance.Show(achievement);

        // Analytics
        GameAnalytics.NewDesignEvent($"Achievement:Unlocked:{achievement.id}");

        // Sync with platform
        SyncWithPlatform(achievement);
    }
}

TrackEvent is single entry point from gameplay. Adding new achievement needs only AchievementDatabase entry—no changes to combat, quest, or shop systems.

Streak Achievements

Daily streaks are one of best retention tools. Requires careful date handling:

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; // already counted today

    int streak = PlayerPrefs.GetInt("login_streak", 0);
    streak = (lastLogin == yesterday) ? streak + 1 : 1; // reset if missed day

    PlayerPrefs.SetString("last_login_date", today);
    PlayerPrefs.SetInt("login_streak", streak);

    TrackEvent("daily_login_streak", streak);
}

Always use UTC, not local time—otherwise player in UTC+12 could get double bonus at day change.

Platform Achievement Integration

Google Play Games and Game Center have native achievements visible in platform UI:

// 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) => { });

Sync only achievements making sense on platform. Don't duplicate all 100 in-game achievements to Game Center—only key milestones.

What's Included

  • Achievement scheme design and event system
  • AchievementsManager implementation with Counter/OneTime/Streak types
  • Progress sync with PlayFab / Google Play Games / Game Center
  • UI: achievement list, progress bars, unlock popup
  • Reward system: currency, items, cosmetics
  • Analytics of unlocks for difficulty balancing
  • Localized titles and descriptions

Timeline

Basic system without platform integration: 4–6 days. Full system with sync, UI and rewards: 1.5–2.5 weeks. Cost calculated individually.