I have been making a mobile game that is similar to "Street Fighter" where two players play with each other via Internet.
The game sends out a small packet (controller status) to the other party every 30ms (a lot of packets going on).
I am currently using a server to connect two players and all communications are via TCP through the server. The server load increases a lot even for just 30 concurrent players. I know it sounds not wise to let the communication go through the server, so I think the best design should let these two players to communicate directly via UDP after the server hooks them up.
However, I have some questions when trying to move on to the new design:
Since it's a mobile game, players might be using 3G network a lot. Does UDP hole punching work well in 3G network? Does it matter when a player is actually moving physically (such as inside a car)? Do you think I should change the design or any recommendation of better design concepts?