Nakama vs Photon
This is intended to be a brief, objective, technical overview of Nakama and Photon
At a very high level
- Heroic Labs’ Nakama can be hosted on any cloud as well as locally. Photon Server can be hosted on any Windows Server environment, however it loses key capabilities (such as chat) when not hosted by Exit Games.
- Nakama server and the client libraries for various game engines are open source on GitHub. Nakama handles persistent users and shared match state as well as persistent chat history.
- Nakama comes packaged with a database to provide a fully capable collection of games services. No separate solutions are required for user accounts, social login, game storage, etc. Photon Server requires third party integration for all data persistence.
- Nakama can be run on Windows, macOS, and Linux for development and production. Photon Server is available on Windows Server with the .NET Framework.
- All of Nakama’s features: Realtime multiplayer, chat, matchmaker, server authoritative logic, etc. are available with the same server and license.
- Licenses for Nakama Enterprise (for multi-server clusters) includes all features and no artificial CCU limitations.
Feature/Capability | Nakama | Photon Server |
---|---|---|
Multiplayer Engine | NakamaTurn-based and realtime. The engine itself is realtime and works as a message broker. Turn-based games have their state managed in-memory on the server. The server can also be switched into authoritative mode with a game loop in Lua managed per match. | Photon ServerTurn-based and Realtime. The engine is realtime, it works like a message broker with different limits set for Turn-based games. Server authoritative code can be written in C++ or C#. It’s unclear how game state is managed by the server. |
Turn Data Persistence | NakamaYes. | Photon ServerNo. Like a message broker messages are delivered to all connected participants. If a participant drops their connection there is no built-in way to re-sync. |
Automatic Matchmaking | NakamaYes. | Photon ServerNot available in the on-premise server. |
Manual Matchmaking | NakamaYes. | Photon ServerArbitrary room lists and filters. |
In-game Chat | Nakama1 on 1, group, and room-based chat. Available as part of Nakama server and can be self-hosted. | Photon ServerNot available in the on-premise server. |
Chat History | NakamaPersistent chat history, can be kept as long or short as required by the studio. | Photon ServerEphemeral chat history with a temporary message buffer. |
Hosted | NakamaAny cloud of your choice, local or bare metal. | Photon ServerWindows-only VMs and local or bare metal. |
Self-Hostable | NakamaWindows, macOS, and Linux. | Photon ServerWindows only. |
User Identification | NakamaThe service has built-in support for many different login options including reliable unique identifiers and email/password accounts. You can also connect the user via Facebook or Google accounts. | Photon ServerRequires external solution. The multiplayer service does not provide any way to reliably identify players. This must be handled separately through custom service integrations, and requires special consideration on the client side. |
Match Persistence | NakamaAll matches are persisted by the service. Clients can access matches at any point until they end, or the client opts to leave the match. Match state with multiplayer matches can be suspended and resumed via custom functions. | Photon ServerRooms have no built-in persistence. Custom external integrations may be provided to persist room data on a message by message basis. There is no built-in mechanism to allow clients to find and rejoin a room if they’ve disconnected for any reason. |
Transport Protocol | NakamaWebSocket, secure rUDP, WebRTC. | Photon Server |
Sync Behaviour | NakamaData is pushed to clients over a background socket. Data is persisted by the server, and state is tracked, so clients losing network connectivity can rejoin at a later point. | Photon ServerMandatory polling callback expected to be triggered at least 10-50 times per second. Failing to maintain expected rates can lead to client disconnects. Because rooms are stateless, clients re-joining rooms after connection loss cannot catch up, by default. |
Open Source | NakamaFully open source server. | Photon ServerClosed source. |