What are the Drawbacks/ Caveats / Limitations of using a Non-Authoritative Server over a Fully Authoritative Server for Multiplayer Networking?

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!

There are bandwidth limitations in the non-authoratative approach. The server can sometimes end up being a player with a bad connection.