Skip to main content
GameDev.net gamedev.net
🔒 Locked

which server types are needed for mmorpg games?

Started by lookkool3 Nov 23, 2010 at 3:19 PM 11 replies 13.8k views
Original Post
lookkool3
lookkool3
what types of servers do i need to run a mmorpg game?

dont worry about the little details of the game. i just want to no what the basics are for getting everything set up and running ... just simple things like a runescape type game engine or WOW ... what servers do i need to get a simple setup going like the website with a forum then the game itself with in game chat and maybe in game voip ...
frob
frob
The games you listed are BIG. Really big.

Each Shard or Realm or other logical world is backed by many load-balanced front-end machines, and these are supported by an array of back-end machines. Runescape has about 200 server sites, based on their announcements, so probably around 1500+. WoW probably has around 4000+ globally, based on the number of Realms.

These are expensive setups at major sites, supporting millions of users.


But you didn't describe such a game.


If you just want your own little persistent world game, you don't need anything special. A single hosting machine hooked up to a database backend is more than enough. You can support several thousand players with it since they will not be online at the same time. The most important number to note is the peak simultaneous users (PSU) which will be a tiny fraction of the number of registered users.

The bottleneck will generally be network throughput, although if you code it poorly you will hit bottlenecks of databases or other machine resources.

We use the number of around 650 clients per machine to keep the machines responsive. We could probably go up to 1500 PSU, but that would be a serious strain on the network and other resources.

For you, that likely means you could support a few hundred thousand user accounts on a single server before needing something more scalable.
Antheus
Antheus
Quote:
Original post by frob
WoW probably has around 4000+ globally, based on the number of Realms.


Oldie, but goodie.


Quote:
i just want to no what the basics are for getting everything set up and running ..

This is probably the simplest full vertical stack that works out of box.
frob
frob
Quote:
Original post by Antheus
Quote:
Original post by frob
WoW probably has around 4000+ globally, based on the number of Realms.


Oldie, but goodie.

"WoW’s infrastructure includes 13,250 server blades"

That's a considerable number. :-)
lookkool3
lookkool3
ok maybe i should be more specific ... lets take runescape for example

the game it self has one main landscape then the smaller parts when u go on a quest or something your in a new area other then the main landscape so lets say i
want to setup
a server that can have
a website
a forum
a link on the website that takes you to the game
when your in the game u can chat with people via text or voip

this game isn't a java game its more high detail then runescape like a console game or a commercial pc game. C++, python or lua used for the programming
(this is just an example )
lets say it was a browser based game which is probably not possible or maybe it is im not really sure

this would be just for testing reasons setting up a server for this(like maybe 10 people online at a time) .... so would i be able to use any server just go to the store and by some cheap server like this one http://www.centralcomputers.com/commerce/catalog/product.jsp?product_id=54722&czuid=1245347950687

then have everything running on one server or would i need more then one for a simple setup of the website the game and 10 people ?
would it be possible to start small with not a ton of servers and slowly get more and more later on to increase the amount of people and make the game bigger and bigger? would something like this be possible ...puting aside all the details of the setup like the making of ETC... for the sake of this example ...would this be possible? thats the question start small with few server that can do such things and later on build up your server stash
Sirisian
Sirisian
Apache and a database can run on almost anything. 10 people is also nothing. The biggest thing you listed was actually VOIP which takes bandwidth and processing. Without that you might have been fine running everything on a netbook computer with Ubuntu server or something. Find the minimum requirements for VOIP and you have your computer.
lookkool3
lookkool3
so just a regular computer?
lets say the number of people starts to increase over time how would i deal with it ...lets say we go from 10 to 100,000 over a certain amount of time what would i have to do in order to keep up with demand and having everything at once isn't an option
would it be possible to start with something as simple as what u (Sirisian) mentioned and later on start expanding and upgrading hardware and software if necessary ?
samoth
samoth
Don't get this wrong, but you probably want to forget about this project.

You seem to lack the understanding of the most basic things. I'm not even referring to the idea of running something like Runescape is "simple" (though the isolated RS worlds are very simple compared to running something like WoW).

The problem isn't even so much having to pay for hosting a thousand blades every month out of your pocket (though for many people this would be an issue), or to plug in more blades as more customers come.
The two real issues are to actually create an infrastructure that is able to scale like this (and, to maintain it!), and to find more than 5 customers at all. Creating a suitable infrastructure to scale into the hundred thousands alone will take you years, and then you still don't have an actual game or a single customer.

Saying something like "scaling from 10 to 100,000" more or less in the same sentence as (paraphrased) "uh, how do I run a webserver" and "a game maybe written in C++ or python or Lua" (you do realize the gross difference?) and "do I just buy a server then" strongly suggests that if you actually go that route, you will spend a considerable amount of money which will just go *poof* afterwards.

Which will make the guy selling you the server happy, but it won't make you nearly as happy.

You will, among many other things, need an artist (better two or three) as well, and usually an artist who is worth his money won't work for free or for the mere promise of getting rich with the next better-than-WoW game. It won't work that way.

Really, step back for a minute, take a deep breath, and reflect whether this is a reasonable endeavour. People who have 10-20 years of programming experience and who can set up a webserver in a few minutes without having to waste a thought are not able get something like Runescape just running like this.
hplus0603
hplus0603
Quote:
Original post by lookkool3
what types of servers do i need to run a mmorpg game?


You generally need a web server for marketing, an application server of some sort for the game, and a database server for persistently storing state.
You probably also need the typical data center set-up of load balancers, monitor servers, firewalls/reverse-NAT, managed switches, etc.

I'd recommend a few of these:
PowerEdge Blades
PowerEdge Blade Enclosures
Storage Servers (I'd probably go all SSD these days)

You also need to wire it all up:
ServerIron Load Balancers
Arista Switches

OS software:
Ubuntu Lucid Lynx (10.04 LTS)
or, if you're a Windows guy:
Windows Server 2008 SP1

Pick a hosting location and bandwidth provider, develop your game, and you're good to go!

Or you might want to take a chance on "the cloud." It's not so great for real-time apps just yet, but it's a lot easier to get started with than your own data center. Try:
Amazon Cloud Servers

For VoIP, you can license something like TeamSpeak or go with a provider like Vivox.

For forums, there are a zillion tools available, although if you want RuneScape or WoW scale forums, you want one of the top end names (vBulletin, IP.board, UBB.threads, etc).

For application server, one will likely come with your game engine. If not, then it gets tricky; simple systems like node.js or Python Twisted don't scale well across threads, but scale great if you just create many smaller instances on a single multi-core host. I've had terrible experiences with larger, integrated stacks like Project DarkStar or BigWorld.

For web server, Apache comes with Ubuntu, and IIS comes with Windows Server.

For database, you probably want MySQL as the default -- although don't forget, MongoDB is Web Scale!

Good luck on your project! (Don't forget to buy a pager so that you'll get notifications when something breaks)

[Edited by - hplus0603 on November 24, 2010 6:12:22 PM]
enum Bool { True, False, FileNotFound };
lookkool3
lookkool3
hplus0603, I can't thank you enough for the help man it's exactly the info i was looking for. straight forward, to the point

*EDIT*
hey i came across this on youtube its a tutorial on how to set up a home


is this only good for websites or is there something else i could use this for?

[Edited by - lookkool3 on November 24, 2010 9:34:20 PM]
SimonForsman
SimonForsman
Quote:
Original post by lookkool3
hplus0603, I can't thank you enough for the help man it's exactly the info i was looking for. straight forward, to the point

*EDIT*
hey i came across this on youtube its a tutorial on how to set up a home


is this only good for websites or is there something else i could use this for?


a WAMP server such as the one used in that example is for websites, the database can be used for other things and hosting other services is simply a matter of installing the appropriate software.

Hosting your own game server at the most basic level only requires you to install the game server software and making sure the appropriate ports are open/forwarded correctly (If you're making your own game you have to write the server software aswell ofcourse)

The real difference between MMOs and normal multiplayer games is that the server software for MMOs has to scale across multiple physical machines in order to deal with the massive number of players and the large game worlds

This adds tons of complexity, realtime games are inherently serial which makes them unsuitable for parallell processing (Which is also the primary reason why games in general don't benefit that much from multiple cores), Even "simple" MMOs need to scale well though or it would simply become prohibitivly expensive to host them.

The easiest solution to MMO scaling is probably distinct instances and/or zones so going that way is a good idea for your first MMO attempt.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
hplus0603
hplus0603
Quote:
is this only good for websites or is there something else i could use this for?


Running your own server on your own DSL or Cable connection has a few problems:

1) Home internet services aren't very reliable. Your customers will be angry when the service is down.

2) You will be competing for traffic when you do your NetFlix streaming or play a game of Call of Duty or whatever. Your customers will be angry at the reduced service, and you will be angry at the lag.

3) You will generally not have a fixed IP address, so you have to make your desired DNS name (mygame.com) be a CNAME pointer for some dynamic DNS solution (dyndns.org, for example), and have your server re-register with dyndns when its IP changes. An IP change can take days to propagate across the entire Internet, during which time your customers may be angry.

4) Most ISPs have transfer limits -- some go as low as 5 GB/month; Comcast in the bay area uses 250 GB/month. Once you're there, there's nothing you can do.

5) Most ISPs won't allow you to grow your home connection to meed demand. Thus, at some point, you will *have* to move the server out of your closet, assuming your game is any good. If the game goes explosive, you won't have time to do that if you're not already set up with a location that can scale for you. (ECC is great for this, to its benefit!)

6) Some cities may count running a business out of your closet as something that needs a business license, and you may not be able to get the right kind of business license for a residential address. If you're renting, it's even harder.

7) Once you need more than a single computer -- or when summer comes around -- you will need power and cooling solutions that generally can't be provisioned on a single 2,500-watt household outlet circuit.


If you are a scrappy start-up, testing with just a few customers, and wanting to save money, then you can do this while in the development phase, of course. However, if you run the game on one physical box, you will often end up not realizing that you're making design decisions that won't scale once you go live.
enum Bool { True, False, FileNotFound };
samoth
samoth
But, for a scrappy startup which needs to save money, is it not better to buy a few virtual server hosting plans for about 9,99 per month? Or a few ultra-cheap (15-20€) dedicated systems such as the Kimsufi plan at OVH.

Those usually come with something like 1-2GB of main memory, a not-so-great but still usable CPU, either a rather smallish disk (250GB) or no disk at all (fileserver), and they'll usually have a more or less crappy connectivity (the more expensive servers in the datacenter being QoSed over yours).
But still, a crappy somewhat-between-50-and-100-Mbit/s connection with not absolutely fastest routing is way better than running it at home over DSL.

And, for the money needed to actually buy one server, you can pay such a plan for years, literally.
hplus0603
hplus0603
Virtual/virtualized servers aren't good for game servers, because of the scheduling jitter they exhibit (this includes the cheaper ECC hosts, too). If you can write your game to be very tolerant of jitter on the server side, then going virtualized is a good idea -- at that point, I'd recommend ECC or another pay-by-use provider, rather than fixed providers of VPS instances.

Cheap-o server hardware (typically Atom based) has the limiations you suggest: not much RAM, and a weak CPU. However, if you need to hoist a lot of bits from disk to the world, they may be good alternatives, until you grow to the scale where a CDN like Akamai makes sense. I usually point at the $39 Atom instances at interserver.net as an example -- you get 2,000 GB of network bandwidth in that price, plus the hardware, which seems like a pretty good deal for a US East coast location. I don't have anything there myself, but I have friends who do.

These are just my opinions based on the experience I have had developing and hosting various services (mostly virutal-world style real-time applications, and some web stuff); each deployment has its own special requirements, so there's no "right" or "wrong" here.
enum Bool { True, False, FileNotFound };
Maldus
Maldus
Quote:
Original post by samoth
But, for a scrappy startup which needs to save money, is it not better to buy a few virtual server hosting plans for about 9,99 per month? Or a few ultra-cheap (15-20€) dedicated systems such as the Kimsufi plan at OVH.


This is not a bad idea.
Kimsufi aren't always reliable but it's a good cheap start.
(But you may take another one for the rescue).

For the performance on that kind of server, they're not too bad if you have a really light server.
For example, i've recently put a Multiplayer Poker game on a Kimsufi (really cheap start...) for a customer, and it can handle more than 2,000 players (stress test).

So it really depends of how munch your server will have to process.

For a runescape like game, server have to send informations in real-time (position, ...), have to calculate NPC, items, fight,...
It's a lot of informations.
The Kimsufi processor is a poor Celeron 1.2Ghz (or something like that :) ), so depending on the complexity of the world, it will hardly handle more than 50-100 Active Players.

For something more critical (FPS/Commercial game), it's completly different too.
Ask if you want, have some experience in it.

You can even choose another architecture for your network communication and it will completly change the requirement. (Half-decentralized,....)

Just keep in mind that bandwidth is rarely the problem (good dedicated server). CPU-consumption is a bigger problem :)

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.