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.
How it works
Section titled “How it works”[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.
Installation
Section titled “Installation”The Fleet Manager is a Go package. Install it into your Nakama server module:
go get github.com/Gameye/nakama-fleetmanager/fleetmanagerRequires Nakama 3.21+.
Configuration
Section titled “Configuration”Five environment variables configure the Fleet Manager:
| Variable | Description |
|---|---|
GAMEYE_API_TOKEN | Your Gameye API authentication token |
GAMEYE_API_URL | Your Gameye environment URL (provided during onboarding) |
GAMEYE_API_IMAGE | Your application name in Gameye |
GAMEYE_API_IMAGE_VERSION | The specific image tag/version to deploy |
GAMEYE_API_REGION | Target region name (e.g. europe, us-east) |
Using with Unity Matchmaker
Section titled “Using with Unity Matchmaker”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.
Known limitations
Section titled “Known limitations”- Limited session list querying — Gameye’s Session API does not paginate, which limits
FleetManager#Listfor 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.