This is intended to be a brief, objective, technical overview of Nakama and Photon
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. |