I'd like to build a turn-based, multiplayer iPhone game that will require a game server somewhere to connect the players and dish out the world state data. I'm trying to understand how the game server will work so I can begin designing and building it. Up until now, I only have experience with building web applications and so naturally my mind wants to design the game server to work in a similar fashion as a web server, but can it?
The ASP.NET MVC web servers I've used in the past work by the client sending a request for some web page data to the server and the server generates the HTML or XML or JSON and returns it to the client in an HTTP packet. This process sounds exactly the same for a multiplayer game, except the client probably won't be requesting HTML, but it would make sense to request XML or JSON data, right?
So my questions are...
Thanks so much in advance for your help!
Webservers are missing one important component...
IE. They're stateless. The whole platform of the web (and HTTP servers in general) is based on the pattern that they're stateless meaning they don't hold on to data when you switch from page-to-page.
There are ways around the limitation. On the client-side: you can use a session to hold data while the browser is open; or cookies to store data over a longer term. On the server-side: databases are usually used to store state long-term. So...
Yes, but depending on how much and how long you want to store the state of a game session, you might find that running the game server/engine separately (and not as a webserver) will give you a lot more room to scale/grow in the future.
Yes, and no... XML/JSON is pretty much the way to pass object state around the internet because it's simple and platform-independent. Since you may/not be writing your own server backend I'd suggest you take a look into using XML-RPC before you consider rolling your own solution from scratch.
I'm not sure why you're paranoid about security. If you implement a pretty strict access policy for what an acceptable request/response cycle is there shouldn't be any issues. Like I stated before, look into XML-RPC. The key is, don't give the user access to any more of the game server data than they need.
Nope, mostly because I don't write games. Although, I do have experience writing client/server architecture apps and it's not rocket surgery. I suggest you take a look into joining the Game Development Stack Exchange FAQ site that's about to hit beta.