Advertisement

Question about MMO's

Started by January 29, 2006 05:54 PM
2 comments, last by hplus0603 19 years ago
I thought about it the other day and eversince, a question has been circulating in my mind. Just out of curiosity, how would you go about hosting an MMO? I mean, to make it accessible to massive amounts of people you would obviousely need more servers. But does that mean that you would need to pay for more internet connections too? Like one ethernet cable for each server which would generate one insane internet bill? How does it work?????
Its just like paying for hosting for a website...you pay (usually a monthly fee) for a server(s) to host the game on. The price depends on the bandwidth and harddrive space and such. Or you could have your own servers and pay a place to store them and keep them going and you just pay for the internet yourself. Such as a T1 line or something, just all depends on how big the game is.

Hope that helps!
Advertisement
Fallen's *almost* right.

Depending on the scale of the game, you'll need a varying number of servers, (boxes) to run a game world. These form a network which has to have fast internet access. So, what you usually end up with is a colocated, private network with some hosting provider. Typically these providers charge a certain amount for rack space, maintaining the network hardware and the bandwidth provided.

For a small mini-mmo, like a runescape world, perhaps only a single high-spec box is required. For larger games the world is split into zones each of which (or groups of which) are handled by different machines.

Bandwidth is now becoming less of an issue - 10Mbps balanced connection can quite easily cope with a thousand concurrent players. Good protocol design can improve this. What is an issue, is the complexity of the simulation running the game - if the world is large and detailed, and the players are spread out across it, how is it held in RAM? You can't expect to load and unload chunks every update! What about if it's meant to have its own persistent processes in the background? These sort of factors, although very much sounding like an implementation issue, do affect, in a real way the underlying hardware architecture of the network running the game.

If you're planning on hosting at home or colocating, I'd do something like this:

A) Get the fastest, fattest pipe you can - specifically in upload speed - commands will be generally small, but the data to be sent will be large. Don't over specify though - many providers can ramp up your bandwidth. Colocators can sometime move your network to a faster backbone, with minimal downtime.

B) Network your machines, with a reliable, hardware firewalled and fast router connected to the external pipe. Block every incoming port apart from your listening ones. Have each server's external port in the NAT mapping for the router. The router will maintain the external IP address of the network, which you can place behind a subdomain name (game1.myMMO.com).

C) Code your client/server networking to operate with varying ports. UDP is good for this, since you can use the same unconnected socket to transmit to any server. TCP requires a connection, and therefore an individual socket for each server. Server/server networking, being on a fast, small network doesn't particularly gain anything from being UDP, except perhaps a slight performance gain if heavy transfer is expected and your UDP protocol is good.

For the *really* massive games where a single pipe can't cope with the datastream, many incoming pipes are multiplexed - machines purely dedicated to forwarding traffic to the appropriate connection are used.
Winterdyne Solutions Ltd is recruiting - this thread for details!
This question is actually answered in the Forum FAQ:

Quote:

Q20) I need a server that will stay up longer than my cable modem, but typical web hosts won't let me run my own server program. What are my options?

enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement