Nakama vs Firebase

This is intended to be a brief, objective, technical overview of Nakama and Firebase

At a very high level

User Identification

Heroic Cloud (Nakama)

‘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

Firebase offers multiple methods to authenticate including third-party social providers. Optional UI element available.
Data Storage

Heroic Cloud (Nakama)

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

Firebase stores JSON data and synchronizes changes with devices and persists data to disk.
Asset Storage

Heroic Cloud (Nakama)

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

Firebase stores and serves user-generated content such as photos or videos.
In-App Chat & Chat History

Heroic Cloud (Nakama)

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.

Firebase

Not available.
In-App & Push Notifications

Heroic Cloud (Nakama)

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.

Firebase

Yes. You can segment users and send mass notifications, but notifications are not persisted for later delivery.
Custom Script Runtime

Heroic Cloud (Nakama)

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.

Firebase

Cloud Functions are single-purpose JavaScript functions that are executed in a managed Node.js environment.
Remote configuration

Heroic Cloud (Nakama)

Yes. You can read more about it here.

Firebase

Firebase Remote Config includes a client library that handles important tasks like fetching parameter values and caching them.
Matchmaking & Multiplayer Engine

Heroic Cloud (Nakama)

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

Firebase does not have any multiplayer capabilities.
Transport Protocol

Heroic Cloud (Nakama)

WebSocket, secure rUDP (reliable-ordered and unreliable-unordered) based on the netcode.io specs.

Firebase

WebSockets
Sync Behaviour

Heroic Cloud (Nakama)

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.

Firebase

Data stored in the Firebase realtime database is pushed to the clients. Authentication, asset storage, etc use request-response model.
Hosted

Heroic Cloud (Nakama)

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.

Firebase

Hosted on Google servers, and cannot be self-hosted.
Open Source

Heroic Cloud (Nakama)

Closed source.

Firebase