When designing a networked multiplayer-game where one player hosts and others connect, there are two strategies I'm aware of:
- Have the host-player's game be the authority, with all other players as dumb-clients trying to catch up with the current game-state. In the code, there will have to be lots of special cases, depending on if the current player is the host or not.
- Make the host a dumb-client like everyone else by running a hidden dedicated server on another thread. The dedicated-server will be the authority, and the host will connect to it like everyone else (through localhost).
What are the advantages/disadvantages of each of these? Which is used most often (or does it vary by game type/size)?