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

  1. Create the catalogRun a short SQL script once per game in the Supabase SQL editor.
  2. Add the packageInstall from the Git URL and bootstrap once in your first scene.
  3. 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