Skip to content

Integrating Nakama

Nakama is an open-source game backend by Heroic Labs. It handles player accounts, leaderboards, matchmaking, in-app purchases, and real-time multiplayer features.

Gameye provides a native Fleet Manager implementation for Nakama. When Nakama’s matchmaker finds a group of players, it calls the Gameye Fleet Manager, which starts a dedicated server session via the Session API. Nakama receives the IP and port and delivers them to the matched players — the entire flow runs without custom glue code.

[Nakama Matchmaker]
↓ match found
[Gameye Fleet Manager plugin]
↓ POST /session
[Gameye Session API]
↓ container starts (~0.5s)
[Dedicated game server] ←→ [Players]

The Fleet Manager handles the full session lifecycle: creation, player join and leave tracking, backfilling (adding players to existing sessions), and termination.

The Fleet Manager is a Go package. Install it into your Nakama server module:

Terminal window
go get github.com/Gameye/nakama-fleetmanager/fleetmanager

Requires Nakama 3.21+.

Five environment variables configure the Fleet Manager:

VariableDescription
GAMEYE_API_TOKENYour Gameye API authentication token
GAMEYE_API_URLYour Gameye environment URL (provided during onboarding)
GAMEYE_API_IMAGEYour application name in Gameye
GAMEYE_API_IMAGE_VERSIONThe specific image tag/version to deploy
GAMEYE_API_REGIONTarget region name (e.g. europe, us-east)

If you’re migrating from Unity Multiplay and using Unity Matchmaker alongside Nakama, Unity Matchmaker supports third-party hosting providers. You can route allocations to Gameye via the Fleet Manager without changing your matchmaking rules or ticket logic.

  • Limited session list querying — Gameye’s Session API does not paginate, which limits FleetManager#List for studios that need to query large numbers of running sessions programmatically.
  • No built-in retry queue — Sessions are created immediately on request. If session creation fails, retry logic must be handled at the application layer.