Migrating from Nakama to Supercraft GSB: A 10-Step Checklist (2026)

Step-by-step 2026 migration guide from self-hosted Nakama to Supercraft Game Server Backend — exporting player accounts, mapping APIs, rewriting RPC functions, billing transition, and zero-downtime cutover.

Self-hosted Nakama (open-source from Heroic Labs) is a strong choice for studios with platform engineers who want full control over their backend. But the operational cost — 24/7 oncall, security patching, scaling decisions, Postgres ops — is real and persistent. This guide walks through migrating a live game from self-hosted Nakama to Supercraft Game Server Backend (GSB), the managed BaaS alternative, with zero downtime.

Migration takes 1-3 weeks for a typical indie game. Nakama's data export is fast; rewriting RPC functions and Lua/TypeScript modules to match GSB's cloud-functions runtime is the long pole.

Before You Start: Is GSB the Right Replacement?

GSB replaces Nakama cleanly if your game uses Nakama primarily for: player auth, save sync, leaderboards, friends/groups, matchmaking, virtual currencies, inventory, and basic real-time features. GSB does not replace Nakama if you depend heavily on Nakama's real-time multiplayer relay (Nakama's authoritative-server runtime) or if you've forked Nakama for source-level customization.

Read the Nakama open-source vs managed comparison first if you're still in the decision phase.

The 10-Step Checklist

Step 1: Audit your Nakama usage

List every Nakama API call your client and server code makes today. Group by category: auth, storage objects, leaderboards, virtual currency, inventory, RPC functions, matchmaker, friends/groups, notifications. The list becomes your migration spec.

Pull a 30-day RPC-call report from your Nakama metrics. RPC calls below 1% of total volume can usually be dropped or deferred during migration.

Step 2: Map Nakama APIs to GSB equivalents

Nakama GSB equivalent Notes
Authenticate (email, custom, device, Steam, etc.) POST /v1/auth/login (email + password) / /v1/auth/anonymous / /v1/auth/oauth Direct mapping. GSB supports email + OAuth (Google, Apple, Steam) + anonymous-promote.
Storage Objects (write/read/delete) Player JSON documents with patch semantics Nakama's collection/key/value model maps to GSB's nested JSON documents. Plan your schema flattening.
Leaderboards / Tournaments Leaderboards API with seasonal boards Direct mapping. Tournaments map to seasonal leaderboards.
Friends / Groups Friends API + Groups API Direct mapping.
Matchmaker GSB matchmaker Map your Nakama matchmaker rule strings to GSB's queue config.
RPC functions (Lua, TypeScript, Go) GSB cloud-functions endpoint Rewrite required. GSB cloud-functions runtime differs from Nakama's; budget the most rewrite time here.
Virtual currency / Wallet Currencies API with atomic transactions Direct mapping.
Real-time multiplayer (Nakama relay) Out of scope If you use Nakama's authoritative-server relay, you'll need a separate networking solution (Mirror, Photon Fusion, Unity Netcode for GameObjects).
Notifications GSB notifications endpoint Direct mapping for in-game; push notifications via your existing FCM/APNS integration.

Step 3: Export your Nakama player data

Use Nakama's built-in export tool or query Postgres directly. Dump player accounts, storage objects, leaderboard records, virtual wallets, and inventory state.

Critical: capture Nakama user IDs alongside the data. You'll need to map Nakama IDs to GSB IDs in step 7.

Step 4: Set up your GSB project

Create a GSB project at gsb.supercraft.host/pricing (start on free tier for migration testing). Configure environments — typically dev, staging, prod. Generate API keys for each.

Step 5: Build the import script

Write a one-shot import script that iterates your Nakama export and creates equivalent GSB entities:

  • For each Nakama user: create a GSB player with anonymous-promote auth, then merge in their email if present
  • For each storage object: write to the matching GSB player document (nesting collection/key into a single JSON tree)
  • For each leaderboard record: write to the matching GSB leaderboard
  • For each wallet entry: write to GSB currencies
  • For each inventory item: write to GSB inventory
  • Write a mapping table: nakama_user_id → gsb_player_id

Test on staging first. Run import in batches of 1,000 players to monitor for errors.

Step 6: Rewrite RPC functions

This is the longest single step. Nakama RPCs (Lua, TypeScript, Go modules) don't translate 1:1 to GSB cloud-functions. For each RPC:

  • Identify the trigger (player call, scheduled task, server-side validation)
  • Map to GSB cloud function equivalent
  • Rewrite the business logic; do NOT just port the code verbatim — runtime semantics differ
  • Write tests; production data is the only audit you'll get

Step 7: Update your client SDK calls

Replace Nakama SDK calls in your game client with GSB SDK calls. Wrap each in a feature flag so you can toggle between Nakama and GSB during cutover.

Use the nakama_user_id → gsb_player_id mapping from step 5 so existing players see their progression seamlessly after the switch.

Step 8: Stage a parallel-write period

For 1-2 weeks before cutover, run both backends in parallel. Every player action writes to both Nakama (current source of truth) and GSB (shadow). This catches mapping bugs before they hit production.

Compare data integrity daily. If GSB diverges from Nakama by more than 0.1%, fix the import script and re-run.

Step 9: Cutover

Pick a low-traffic window (typically a weekday off-hour for your game's primary audience). Flip the feature flag from Nakama to GSB. Monitor for 4 hours minimum.

Keep Nakama running in read-only mode for 30 days as a rollback safety net. Most migrations don't need to roll back, but the buffer covers edge cases.

Step 10: Decommission Nakama

After 30 days of stable GSB-only operation:

  • Shut down Nakama servers
  • Drop Postgres database (after backing up)
  • Cancel cloud hosting bills (EC2, GCE, Azure VMs)
  • Archive import scripts and mapping tables (don't delete — audit trail)
  • Remove Nakama SDKs from your client codebase in the next release

What You Stop Operating

This is the real win of the migration. Things you no longer worry about after moving to managed GSB:

  • Postgres replication, backups, schema migrations, and ops
  • Nakama version upgrades and breaking-change handling
  • Security patches on your Nakama / Postgres / Linux stack
  • Scaling decisions for player concurrency spikes
  • 24/7 on-call rotation for backend incidents
  • SSL certificate renewals on your Nakama public endpoint

Common Pitfalls

  • RPC rewrites are 60% of the work. Plan timeline accordingly.
  • Nakama collection/key/value storage doesn't map 1:1 to nested JSON. Plan schema flattening before importing.
  • Don't migrate the real-time relay. If you depend on Nakama's authoritative-server relay, plan a separate networking solution before cutover.
  • Don't skip the parallel-write period. Cutting over without it is the #1 source of post-migration data loss.

Cost Comparison After Migration

Studios moving from self-hosted Nakama to GSB typically replace ~$300-1,000/mo of cloud hosting + ops time with $19-99/mo of GSB subscription. The bigger savings is engineering time — no more on-call shifts, no more schema-migration anxiety, no more Nakama-version-upgrade sprints.

Bottom Line

Migrating from self-hosted Nakama to managed GSB is a tractable 1-3 week effort for most indie games. The biggest wins post-migration are eliminating ops overhead, predictable flat pricing, and the option to unify your backend with Supercraft dedicated-server hosting under one vendor. The biggest cost is rewriting RPC logic — plan for it. If your team uses Nakama specifically because they want source-level control, stay on Nakama; if they're maintaining it because they had to, GSB removes the maintenance burden.

Ready to start? Sign up for the GSB free tier and start with the parallel-write period in a staging environment. The GSB documentation covers the SDK quickstart for Unity, Unreal, and Godot.