Here's my two cents:
P2P:
- Pros:
- No need for a central server: this makes it much cheaper, and more viable for low-budget indie games.
- Scales very well (up to a certain point when the average client just cantcan't handle the bandwidth).
- Very good for data distribution: Suits games where user-created content is dynamically synced. (also just look ate.g. torrents).
- More Stable: It can never happen that the server is having problems and no-one can play (implementation dependent).
- Cons:
- Hard to implement: much harder to create a solid P2P architecture, than a server-client.
- ItsIt's very hard to prevent cheating in such a system, unless you designate an authoritative peer, but then again you lose much of the (which will hinder any benefits of scaling well from P2P).
- Security is hard to achieve.
- A clientsclient's internet connection can influence the game for others too.
- Latency is usually much biggergreater (toughalthough it can be better when joining an internet game with multiple people from a lanLAN network for example).
- May require port forwarding: P2P over the Internet requires port-forwarding, and not everyone is abletechnically-inclined enough to do technically andthat. Additionally, the ISP may prevent this as well. It alsoport forwarding, and it increases the barrier to entry.
Server-Client:
- Pros:
- Easy to implement: ItsIt's as straightforward as it gets.
- If implemented well, scales extremely well. (if the work can be distributed onacross multiple servers).
- Cheating can be avoided easily. (relativecompared to P2P).
- Lower Latency: If the server has a solid connection the latency can be extremely low.
- A player's internet connection never affects the other'sanother's game.
- Cons:
- Costs you money to run the servers: definitely not suitable for a free game. (unless you let the players set up a dedicated server, but that might be a security problem).
- If the server has problems, everyone hasdoes.
I would consider P2P a good choice because the average internet connection is getting better and better, in the future P2P latency might not be a problem at all. Also much about P2P depends on the specific implementation.
There is also some architectures that combine P2P with Server-client.