Let's say you're a developer working on a hot new title, and you want to build in multiplayer online support for it. Here's an (overly simplified) look at what you would have to do if you were using Xbox Live.
First, you'd have to set up an online game session. So what do you do? You program your game to fire off a quick message to Xbox Live saying "Hey XBL, set up a new online session for me plzkthx, and make PlayerA the 'owner'." Xbox Live then comes back and says "here's your game session; it's got the following players in it... PlayerA, PlayerB and PlayerC" and bingo, your session is started. As players join and drop off, Xbox Liveautomatically grabs IP addresses from the players, sets up voice channels between the players and fires off messages to your game advising it of new players. XBL is also monitoring the connection speed/quality of all the players and letting the game know.You never have to worry about IP addresses, or setting up voice channels or any of that low-level stuff. All you have to do is keep your lobby screen updated as players join/leave, talk and the connection quality changes.
So then the game is ready to begin. You fire off another message to Xbox Live saying "OK, let's do this. Time to start the game, we're playing with the following settings..." and you tell XBL the game specifics, like map selection, game type, etc. The game begins. As the game goes on, you're sending/receiving your proprietary game packets to/from other players with the updated gamestate information. To send/receive these packets, you aren't talking to the other players directly... rather, you're talking to Xbox Live APIs. You say "send this packet to PlayerC" and Xbox Live takes your packet, encrypts and signs it, and sends it to PlayerC's IP address. PlayerC's Xbox will receive the packet and its Xbox Live API will decrypt and inspect the packets for integrity before passing it to the game, which updates its screen to reflect the new gamestate. Once again, as the developer, you don't have to worry about IP addresses, you don't have to worry about encryption, you don't have to deal with voice support... all you have to do is send and receive your gamestate packets and update the gamestate accordingly.
When the game ends, you simply tell Xbox Live "hey, the game is over, here's the stats and here's who won and lost!" XBL takes this information and stores it in their stats databases for leaderboards and trueskill purposes. Again, you don't have to worry about maintaining your own stats database, or implementing your own skill-tracking
The infrastructure to support all this stuff is massive, complex and expensive. But the end result is you, as a developer, don't have to worry about the heavy lifting of implementing online multiplayer. Doing online multiplayer is as easy as doing system-link multiplayer. And since online multiplayer is easy for you to implement, you're more likely to put it in all of your games. Meaning we (as gamers) get to enjoy online multiplayer in tons and tons of games, from the smallest developers to the biggest AAA productions. We even get online multiplayer in Peggle. Well worth $50/yr if you ask me. If you built a system as complex and robust as Xbox Live, you'd be wanting a subscription fee to use it too.
Of course, all the haters will continue to complain about how "PSN/PC do online for FREE!" or bleat about "dedicated servers"even though their systems are nowhere near as complex or robust as Xbox Live.
Log in to comment