I read that most servers handle more than 50 requests per second. Is this true? how many requests can a normal server handle?
How do MMOG manage requests having to update player actions instantly?
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It only takes a minute to sign up.
Sign up to join this communityI read that most servers handle more than 50 requests per second. Is this true? how many requests can a normal server handle?
How do MMOG manage requests having to update player actions instantly?
I read that most servers handle more than 50 requests per second. Is this true? how many requests can a normal server handle?
It's really impossible to say -- there isn't a standard definition for "normal" server, plus what many players (and even some developers without a lot of MMO experience) tend to regard as "a server" is actually a collection of both physical and logical servers that all interact to help simulate the game world. Some of them need to service a very high number of requests per second (quite more than 50), other don't so much due to their nature.
How do MMOG manage requests having to update player actions instantly?
They don't. It's impossible to round-trip from the client to server instantly; instead, client-side prediction with server authentication is generally used to hide latency and make actions appear instant. You can more the latency around, but you can't ever really get rid of it.
Almost all high performance servers, MMORPG or not, use thread pools and multiple queues.
A sample design might look like this:
You might want to take a look at how IIS (Microsoft's Web Server) for Windows 2008/Windows 7 is architectured internally and use a similar approach.
I use C#, mainly because it simplifies most of what I described above. It has its own internal thread pools. Strangely enough, take a look at the Microsoft Robotics Platform. It has a component called the CCR - "Concurrency and Coordination Runtime" that makes it easy to build dispatch queues and multithread easily. They also have a service component that will route messages to services and start them as required.
The key point I'm trying to make is non-game services handle hundreds to thousands of requests per second on a single core machine with minimal CPU load. Games are more complex, but if you incorporate some of the same strategies it will go a long way. Just remember - keep it simple at first, get something working, and build out the complexity only when it's required.