Hello there,
I am working with Unity for several months now, and I am finally working on the network part of my game. As I discover the common trap linked to network development (NAT and server reachability…) I wonder what is the best (or at least, the most common) strategy for a multiplayer game on smartphones.
The common strategy for PC/Mac games is to allow players, via an option pannel to configure their connectivity options. Also the game often warn players when connectivity is bad so they can configure their routers or their computer to play. Then it’s easier for developers to build up a p2p communication between players thanks to option pannel and the computer nature.
But you can’t ask players to configure their router or some other physical device when they are playing on a phone right? I mean, as long as you can play via 3G or Wifi and don’t have a clue about your connectivity options (when you are using a public wifi access for example) you often can’t modify gate access or stuff like that to enhance network reachability.
The few test I’ve done on my game (helped with some friends) led to complete connectivity failure due to NAT. As my phone uses wifi I’m not sure if ports are reachable or if my router allows NAT connexions because I’m not always at home, using my own wifi (the one I love, the one given by a well configured router).
So how do “real” games do stuff like multiplayer games on mobile? Is the most common solution to have a dedicated server reachable by everyone everywhere? What to say to players (who probably have bought a multiplayer game) when they actually can’t play with others?