Nakama for large online multiplayer games

Hello, Nakama community, I’ve been struggling for a while on which open-source tech stack should I use for my multiplayer game client-server backend architecture, I’m using the Unity game engine to build the game and I’ve come across multiple solutions for the server side including Mirror, Darkrift2, Fish-net, and Nakama, of all the solutions I’ve found Nakama is the only complete solution for a multiplayer game, however, I haven’t yet decided to use Nakama because I have few questions and I hope that the community will provide me with satisfying answers, but first I would like to give you an idea about the game I’m building.

I want to build a multiplayer battle royal mobile video game similar to PUBG and Call of Duty mobile. There are two modes of playing the game, the first mode is 5 players against 5 players which means there are 10 players per match, and the second mode is battle royal where there are 100 players per match consisting of 25 teams 4 players per team.

The first mode 5 against 5 is not difficult to accomplish because there are only 10 players and the map is small compared to the battle royal mode which means there aren’t too many objects to sync between players, the second mode however (Battle royal) is the problem because there are 100 players a match, the map is huge, and there are too many objects to sync between players including vehicles.

Now my questions:

  1. Does Nakama support the rUDP protocol (Reliable UDP)? PS: am using Unity to build the client (The game).

  2. Does Nakama provide the performance and latency required for smooth gameplay regarding the first mode of my game (5 players against 5 players)?

  3. Is Nakama a good choice for a battle royal game where there are 100 players, a huge map, and vehicles (the second mode of the game)?

  4. Does Nakama provide all real-time multiplayer capabilities, including synchronization of game objects, collision detection, and physics simulation?

Notes regarding the fourth question:
I’m curious how multiplayer networking with physics is implemented in Nakama. In the case of a battle royal game, I have a physical world with a large number of players and objects including large collections of weapons and vehicles controlled by different people. I’m anxious about hits, collisions, and physics, I would like to know how Nakama solves this issue.

Most games tackling this challenge will simulate the collision and physics world on the server, and have the clients predict movement.

Thanks for having interest in Nakama, please find your answers below:

  1. Does Nakama support the rUDP protocol (Reliable UDP)? PS: am using Unity to build the client (The game).

Nakama communications are done over HTTPS or Websocket connections. rUDP support is something we’ve been working on behind the scene and is in testing with select studios to get feedback. Ping us over contact@heroiclabs.com with your project details and we can assess whether it’s something that can be added to our private alpha list.

  1. Does Nakama provide the performance and latency required for smooth gameplay regarding the first mode of my game (5 players against 5 players)?
  2. Is Nakama a good choice for a battle royal game where there are 100 players, a huge map, and vehicles (the second mode of the game)?

Nakama scales horizontally and there are studios which have reached peaks of 350,000 CCU in production games using Nakama. Exact performance numbers depend on the game and how efficiently you’ll be able to implement game loop on the server side.

In the past, Nakama has powered the popular Tiny Royale game (from Zynga): https://www.youtube.com/shorts/vIk1VFGV6-g

  1. Does Nakama provide all real-time multiplayer capabilities, including synchronization of game objects, collision detection, and physics simulation?
    Notes regarding the fourth question:
    I’m curious how multiplayer networking with physics is implemented in Nakama.

Nakama can handle the logic for multilplayer, syncvars, and light collision detection.

Physics simulation can also be done very lightly but if you need something sophisticated you are best to use a game engine in headless mode and use Nakama to power all other game features (lobby, wallet, user account, and provisioning headless game engine instances on one of the cloud providers, like GameLift via server-to-server API).

Having said all above, the physics simulation and collision detection in Tiny Royale is all done in Nakama. You can use an authoritative match to power all the logic and interact with messages arriving to the server. Tiny Royale used the TCP protocol and did not need rUDP.

Hope this helps.

1 Like