First, you should read through Gaffer on Games's article What every programmer needs to know about game networking. It covers all the important parts on typical networking architectures and their pros and cons. There's also some decent answers here: Limitations of p2p multiplayer games vs client-serverLimitations of p2p multiplayer games vs client-server. But basically you have two architectural choices: P2P or client/server1. It's an important decision since it has huge consequences, like how well you can handle cheating, or compensate for latency, all of which depend on your game; there is no "right" choice.
- P2P is much easier to build later than client/server, especially if the game's architecture was not designed with clear separation of concerns from the start, like mixing game logic with renderingmixing game logic with rendering. As someone who's added client/server networking into such a game, I can attest to it being a huge amount of work.
- Client/server is harder to work with, especially if you are a small team. Any game feature might involve multiple decoupled systems, and additional decisions on how it will be handled: by the client, by the server, by both, and how. For programmers not familiar with this, it can slow down progress.
- However, for the most demanding networked games, client/server is pretty much mandatory, given the severe limitations of P2Psevere limitations of P2P.
- P2P is easierP2P is easier most of the time2
- Client/server is mandatory for online networking for certain genres (action, MMO)
- Writing with networking from the start is easier, and much easier if you choose to do client/server
- But keep in mind the caveat that game development is risky, so there's an advantage to making a game as fast as possiblemaking a game as fast as possible to test its viability