This is intended to be a brief, objective, technical overview of Nakama and Firebase
|Feature/Capability||Heroic Cloud (Nakama)||Firebase|
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.’
FirebaseFirebase offers multiple methods to authenticate including third-party social providers. Optional UI element available.
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.
FirebaseFirebase stores JSON data and synchronizes changes with devices and persists data to disk.
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.
FirebaseFirebase 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.
|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.
FirebaseYes. 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.
Heroic Cloud (Nakama)Yes. You can read more about it here.
FirebaseFirebase 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.
FirebaseFirebase does not have any multiplayer capabilities.
Heroic Cloud (Nakama)WebSocket, secure rUDP (reliable-ordered and unreliable-unordered) based on the netcode.io specs.
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.
FirebaseData stored in the Firebase realtime database is pushed to the clients. Authentication, asset storage, etc use request-response model.
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.
FirebaseHosted on Google servers, and cannot be self-hosted.
Heroic Cloud (Nakama)Closed source.