2
votes

Our Team is developing a Fast-Paced Arena FPS game with a maximum of 10 Players per match(5v5) for Mobile Platforms using Unity. We're really in a dilemma on whether to use a Non-Authoritative or Fully Authoritative Server.


Non-Authoritative Approach : Each player just sends snapshots about it's current position to other Players and Remote Procedure Calls are called for special events like Firing a Weapon or triggering an Explosion. Physics is simulated Locally.

Thinking on Using Photon Unity Networking (PUN) for this approach, because of Mature API and Master-Client Model and Advanced Relays.


Authoritative Approach : The clients just send their Input Snapshots to a Dedicated Server, where the game is simulated using the Inputs and the game state is sent back to the clients, who just Renders it.

Thinking of Using Photon Bolt for this approach, because of Built-In Client-Side Prediction and Lag Compensation which is crucial while using a Dedicated Server.


So, Apart from making it easy for Cheaters to hack my game, what are the drawbacks/Limitations of using a Non-Authoritative Server over Authoritative one? Is Server Authority required in a mobile game? What are your recommendations for the type of game we're trying to make?

Also, How bad(or good) is the overhead of running an Unity Instance on a Dedicated Server(In Headless Mode)?

Thank You!

1

1 Answers

3
votes

So, Apart from making it easy for Cheaters to hack my game, what are the drawbacks/Limitations of using a Non-Authoritative Server over Authoritative one?

De-synchronization is a considerable drawback. It is ok if the physics simulated locally does not affect the functional outcome of the game.

However, for example, if the trajectory of a rocket from a launcher is simulated locally with physics, and whether it hits another player or not is decided locally too, you will end up with players getting killed despite seemingly not being hit by one.

In more serious cases, you might end up with players experiencing completely different outcomes of the match on their machines.

Is Server Authority required in a mobile game?

Not necessarily.

What are your recommendations for the type of game we're trying to make?

For multiplayer games, typically its recommended to have an authoritative server that does calculations for important events (e.g hit by a bullet).

To prevent choppy movement and actions, you would need to implement some form of interpolation/prediction/dead reckoning client side, and do corrections when your authoritative server replies.

Also, How bad(or good) is the overhead of running an Unity Instance on a Dedicated Server(In Headless Mode)?

Im not sure what overhead you are comparing to, but typically a Unity instance ran without graphics and in batchmode as a server is able to effectively handle a multiplayer game of 10 people pretty well.