Platform achievements (PGS + Game Center)

Goal: Mirror Warp milestones on Google Play Games Services and Apple Game Center without competing with TEI / iwgf.org. Firebase stays the account of record; platform shells are flair + Level Up eligibility.

Out of scope for this track: Google↔Apple account merge polish, Firebase Game Center auth, PGS/Game Center leaderboards for TEI scores.


Principles

  • TEI is the only skill ladder (OpenSkill, rated rules, advisor gates)
  • One shared Warp catalog → map to Play + Game Center IDs
  • Unlock is one-way: game event → our code → platform APIs
  • Never publish TEI letter/score as a platform leaderboard number

Phase 0 — Catalog & JS API

  • Shared catalog (apps/Warp12/src/platform/achievements/catalog.ts)
    • ≥10 achievements; ≥4 reasonably doable in the first hour (Play Level Up / Quests)
    • Game Center point budget ≤ 1000 total, ≤ 100 each
    • Semantic ids stable forever (first_sector, rated_sector_1, …)
  • Unit tests for catalog invariants (unique ids, GC points sum, early set)
  • TS API: unlockAchievement, progressAchievement, showAchievementsUi
    • No-op on web / desktop
    • Invoke Tauri commands on iOS / Android (native plugin still Phase 2)
  • Local dedupe (don’t spam unlock for already-granted ids)
  • Rust command stubs (achievements_unlock / _progress / _show_ui)

Phase 1 — Console setup (manual)

Google Play Console

  • Enable Play Games Services for org.digitaldefiance.app.warp12
  • Note Games Services project ID → game_services_project_id string resource
  • Create draft achievements matching the catalog (copy + icons)
  • Fill playGamesId in catalog
  • Set real game_services_project_id in Android strings.xml (527330456110)
  • Add license testers; verify unlocks on internal track
  • Publish achievements with a store release (after smoke test)
  • Enable Sidekick on AAB uploads (Level Up); test closed track

App Store Connect / Xcode

  • Enable Game Center capability on the App ID / app version
  • Create matching achievements (prefer .gamekit bundle + sync)
  • Fill gameCenterId in catalog
  • Sandbox / Game Progress Manager test unlocks
  • Submit Game Center components with the app for review
  • Optional: enable Game Center on macOS build for parity

Phase 2 — Native bridges (Tauri mobile plugin)

  • Scaffold tauri-plugin-warp-achievements (Android + iOS)
  • Register plugin in apps/Warp12/src-tauri; add capabilities permissions
  • Android
    • Dependency com.google.android.gms:play-services-games-v2 (pin 21.0.0)
    • Manifest APP_ID meta-data + PlayGamesSdk.initialize (in plugin load)
    • Commands: unlock, progress, showUi
    • Graceful no-op when playGamesId unset / SDK init fails
  • iOS
    • GameKit authenticate (GKLocalPlayer.authenticateHandler)
    • Commands: unlock, progress, showUi
    • Graceful no-op when gameCenterId unset / not signed in
    • Game Center entitlement flag in Entitlements.plist
  • Smoke on device / emulator with draft console achievements
  • Fill real PGS project id in strings.xml (game_services_project_id)
  • Fill playGamesId / gameCenterId in catalog after console create

Phase 3 — Wire game milestones

Call the shared unlock API from real events (never invent TEI from platforms):

Semantic idTrigger sketch
first_launchFirst Bridge session after install
first_sectorAny sector / round completes
first_all_stopPlayer empties hand / All Stop
first_beaconLocal player raises distress beacon
campaign_completeCampaign complete overlay path
rated_sector_1Rated Warp 12 sector successfully applied
rated_sector_10Incremental (backend or local counter)
commission_ensignFederation commission reaches Ensign+
join_crewCrew join succeeds (leaderboard / bridge)
exhibition_warp9Finish a Warp 9 exhibition sector
  • Hook high-confidence events first (first_sector, campaign_complete, first_launch)
  • first_all_stop / first_beacon from table actions
  • Rated / commission hooks from TEI certificate / stats update paths
  • Keep copy: “Federation TEI on iwgf.org” vs “Play / Game Center achievements”

Phase 4 — Polish & Level Up

  • Profile / About blurb explaining the split
  • Optional “View achievements” button (opens platform UI)
  • Achievement icons (federation art; unique per id)
  • Sidekick production enablement after closed testing
  • Revisit Quests / Play Points enrollment (optional monetization)
  • Explicitly do not add PGS/GC leaderboards for TEI

Deferred (separate tracks)

  • Sign in with Apple → Firebase (App Store Guideline 4.8 when shipping Google login on iOS)
  • Account linking Google ↔ Apple for one TEI profile
  • Fun (non-TEI) platform leaderboards / Leagues
  • Firebase Game Center auth provider (not needed for achievements)

Progress log

DateNote
2026-07-19Plan + todo; Phase 0 catalog/API/local dedupe; hooks for launch + campaign complete
2026-07-19Phase 2: tauri-plugin-warp-achievements with PGS v2 (Android) + GameKit (iOS)

Warp 12 — a Double-Twelve domino variant for the NX Epoch.