This is intended to be a brief, objective, technical overview of Nakama and Firebase
Feature/Capability | Heroic Cloud (Nakama) | Firebase |
User Identification | 'Nakama offers multiple methods to authenticate: including email/password, third-party social providers like Steam and Game Center. You can also use your existing user accounts service with the server.' | Firebase offers multiple methods to authenticate including third-party social providers. Optional UI element available. |
Data Storage | Data is stored in in JSON format in a postgres-compatible database. Each record has specific read-write permissions and can be updated using JSON-patch operations. All operations are batched and they include transactional update guarantees. | Firebase stores JSON data and synchronizes changes with devices and persists data to disk. |
Asset Storage | Nakama doesn't store asset files directly. Instead you can store a version-specific manifest which lists all files and the link to download the files from cold-line storage like S3. | Firebase stores and serves user-generated content such as photos or videos. |
In-App Chat & Chat History | 1 on 1, group, and room-based chat. Available as part of Nakama server and can be self-hosted. Persistent chat history, can be kept as long or short as required by the studio. | Not available. |
In-App & Push Notifications | Nakama pushes system notifications to the devices that are online automatically. You can send custom notifications and persist them for later delivery. Push Notification is available as a code module. | Yes. You can segment users and send mass notifications, but notifications are not persisted for later delivery. |
Custom Script Runtime | Nakama has an embedded script runtime which utilises the Lua language to extend or override server behaviour. You can use the Runtime as before/after action hooks, RPC calls, or server-to-server HTTP calls. | Cloud Functions are single-purpose JavaScript functions that are executed in a managed Node.js environment. |
Remote configuration | Yes. You can read more about it here. | Firebase Remote Config includes a client library that handles important tasks like fetching parameter values and caching them. |
Matchmaking & Multiplayer Engine | Turn-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. | Firebase does not have any multiplayer capabilities. |
Transport Protocol | WebSocket, secure rUDP (reliable-ordered and unreliable-unordered) based on the netcode.io specs. | WebSockets |
Sync Behaviour | Data is pushed to clients over a background socket. Data is persisted by the server, and state is tracked. If client lose network connectivity, they can then rejoin at a later point. | Data stored in the Firebase realtime database is pushed to the clients. Authentication, asset storage, etc use request-response model. |
Hosted | Any cloud of your choice, local or bare metal. We also offer a Heroic Cloud for developers who do not wish to operationalise their own infrastructure. | Hosted on Google servers, and cannot be self-hosted. |
Open Source | Fully open source server. | Closed source. |
'Nakama offers multiple methods to authenticate: including email/password, third-party social providers like Steam and Game Center. You can also use your existing user accounts service with the server.'
Firebase offers multiple methods to authenticate including third-party social providers. Optional UI element available.
Data is stored in in JSON format in a postgres-compatible database. Each record has specific read-write permissions and can be updated using JSON-patch operations. All operations are batched and they include transactional update guarantees.
Firebase stores JSON data and synchronizes changes with devices and persists data to disk.
Nakama doesn't store asset files directly. Instead you can store a version-specific manifest which lists all files and the link to download the files from cold-line storage like S3.
Firebase stores and serves user-generated content such as photos or videos.
1 on 1, group, and room-based chat. Available as part of Nakama server and can be self-hosted. Persistent chat history, can be kept as long or short as required by the studio.
Not available.
Nakama pushes system notifications to the devices that are online automatically. You can send custom notifications and persist them for later delivery. Push Notification is available as a code module.
Yes. You can segment users and send mass notifications, but notifications are not persisted for later delivery.
Nakama has an embedded script runtime which utilises the Lua language to extend or override server behaviour. You can use the Runtime as before/after action hooks, RPC calls, or server-to-server HTTP calls.
Cloud Functions are single-purpose JavaScript functions that are executed in a managed Node.js environment.
Firebase Remote Config includes a client library that handles important tasks like fetching parameter values and caching them.
Turn-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.
Firebase does not have any multiplayer capabilities.
WebSocket, secure rUDP (reliable-ordered and unreliable-unordered) based on the netcode.io specs.
WebSockets
Data is pushed to clients over a background socket. Data is persisted by the server, and state is tracked. If client lose network connectivity, they can then rejoin at a later point.
Data stored in the Firebase realtime database is pushed to the clients. Authentication, asset storage, etc use request-response model.
Any cloud of your choice, local or bare metal. We also offer a Heroic Cloud for developers who do not wish to operationalise their own infrastructure.
Hosted on Google servers, and cannot be self-hosted.
Closed source.