We did a multiplayer game last year using Nakama and ended up doing as much as possible client-side because we didn’t have any “real” backend engineers attached to the project. It turned out okay, but now we’re gearing up for another game and this time we do have the opportunity to get a backend engineer on the project.
So, my question is this: for a fast-paced action game (such as a racing game with collisions), would we get best results doing a server-authoritative game, where the server calculates changes and broadcasts them to the players, or is relayed multiplayer a better solution for reducing lag since (I guess) we wouldn’t have the overhead of waiting for the server? What’s the best approach for a fast-paced game?
This is a very broad question and the specifics depend on the details of course, but in general I think server-authoritative matches are a good fit for this. In your racing game example you would run the authoritative simulation on the server to calculate position, velocity, collisions, damage, race progress etc and run prediction/interpolation on the clients.
No, in general the vast majority of time is spent on the network rather than doing calculations. This is true in pretty much all types of multiplayer games no matter their network architecture or client-server model.