
Back to Unity
DryreL Software Unity
Supabase Game Achievements
Offline-first achievements for Unity games
Unlock achievements instantly, even offline, and sync them safely when the player is back online. Available now on GitHub.
Available on GitHub
- 0 msNetwork wait on unlock
- 3Assemblies, engine-free core
- MITFree on GitHub
Overview
What it does
Offline-first achievements for games: instant local unlocks, crash-safe saves, batched idempotent server sync, an optional unlock overlay and optional Unity Localization.
- Unity
- C#
- Supabase
- uGUI
- MIT license
How it works
From zero to working
- Create the catalogRun a short SQL script once per game in the Supabase SQL editor.
- Add the packageInstall from the Git URL and bootstrap once in your first scene.
- Unlock from gameplayCall TryUnlock. It is instant, saved locally and synced in the background.
Features
Built to just work
- Offline firstTryUnlock never waits for the network; the unlock is instant and stored locally.
- Crash-safe savesProgress survives a crash or a closed game.
- Safe server syncUnlocks are sent to Supabase in batches, and repeating a sync never duplicates them.
- Unlock overlayAn optional on-screen toast when an achievement unlocks.
- LocalizationOptional Unity Localization support for titles and descriptions.
- Engine-free coreThe core assembly has no engine references, so it is easy to test.
- Achievement DashboardAn editor window to manage achievements, restyle the toast with a live preview and set up rules without code.
- Conditional achievementsCounters, quests and "without failing" rules, from the dashboard Rules tab or in code.
- Toast that stays out of the waySlides in, queues instead of overlapping, plays a sound and never blocks input.
- Dialogue System supportOptional unlocks from Dialogue System for Unity, plus a Patreon integration sample.
Get started
Install and use
Install
Window > Package Manager > + > Add package from git URL...
https://github.com/DryreL/Unity-SupabaseGameAchievements.git
Usage
AchievementManager.TryUnlock("first_blood"); // instant, offline-safe
AchievementManager.HasUnlocked("first_blood");
AchievementManager.AchievementUnlocked += e => Debug.Log(e.Definition.Title);
await AchievementManager.SyncAsync(); // optional
Requirements
Before you start
- Unity 2022.3 or newer (tested on 6000.3)
- Newtonsoft Json package (com.unity.nuget.newtonsoft-json)
- uGUI
