Some questions about starting a real-time multiplayer game

hi. I have some multiplayer dev experience but the first time make a commercial real-time shooter game. it’s a simple 2d game with some features. i have some questions based on experience and looking for best practices:

  1. if it turns to a popular game with many users at the same time, should it be a server-authoritative game, or even there are many big games that server only broadcasts the data and any logic is implemented on client-side?

  2. should I use a fully-deterministic physics engine or I can use unity box2d rigid-body to make multiplayer. in my game players can have physical interactions so if I want to use some interpolation/extrapolation algorithms, do I need a fully deterministic engine or box2d as the non-deterministic engine can be good enough? and I don’t know any deterministic 2d physics engine?

This is a little beyond the scope of a Nakama-specific question, but I’ll try to give a high-level answer nonetheless.

if it turns to a popular game with many users at the same time, should it be a server-authoritative game, or even there are many big games that server only broadcasts the data and any logic is implemented on client-side?

Largely a design decision which you need to make. I would recommend server-authoritative, but there are games out there that are client-relayed.

should I use a fully-deterministic physics engine

Again, a design decision which is in your hands. I would argue no, you do not need a deterministic physics engine for a simple 2D shooter. You can even get away with your own ad-hoc “physics engine” by just writing collision, movement, and projectile logic yourself. Depending on the complexity of the game features you’re trying to achieve that can take you quite far. Ultimately look at the tradeoffs and decide what’s most appropriate to your goals and resources. :+1: