MMO Architecture

Started by
4 comments, last by hplus0603 13 years, 2 months ago
I am interested in developing a rather simple MMO game demo, I have read about some rather complex MMO architectures involving governor servers
and a bunch of confusing diagrams. I am wondering what is really necessary to maintain a simple game that will probably support 1k-5k players on a server.
I am not really interested in load balancing algorithms at the moment, rather focusing on having simple server components cooperating with each other.

So clients send their login details to the Login Server which verifies it and marks the player as logged in on the database.
Does the client then disconnect from the Login Server and connect to World Server/Zone Manager server
or does the client stay connected to the Login Server and World Server/Zone Manager at the same time.

Is there even a need for the login server? Could the entire server be one .exe file maybe communicating with zone servers?
Would it be possible to run the login functions on a separate thread of the World Server since the player has to always be connected to the
World Server anyway?

What does the Login Server have to do anyway besides check valid password data/encryption/auto patcher ??
Advertisement
In my setup the Login Server handles everything before entering the world (Login, Character Creation, Character selection). Once the player selects the character he/she wants to use and presses Enter World the Login server sends the Connection Information for the Region server to the client and then the client disconnects from the login server and connects to the Region server.
In Development:Rise of Heros: MORPG - http:www.riseofheroesmmo.com

I am interested in developing a rather simple MMO game demo,

oh dear, here we go. such a thing does not exist.


I have read about some rather complex MMO architectures involving governor servers
and a bunch of confusing diagrams.
[/quote]
if the diagrams are confusing, that should be a good sign that you do not have the required experience to continue from this point.

have you got 2 players on a server before? how about 64? or even 128?

the login server will be used to place users on servers based on overall system load. if you dont plan on having many servers (and really, how much money are you willing to spend on hardware/network connection to support 5k players?) then you dont need to divide your population, and you can do everything in one place.

for the record, 5k players is MO, not MMO.
your never as good as they say you were, never as bad as they say you was.


for the record, 5k players is MO, not MMO.




A 5k player single environment RTS game (ie- MW) WOULD be Massively Multiplayer.
(actually MUCHO Massive compared to anything running today)

A betting parlor 5k player with limited player interaction, yes that could likley be run on a 3 yr old
desktop (with a html client fronting it)
--------------------------------------------[size="1"]Ratings are Opinion, not Fact

[quote name='rgibson11' timestamp='1298158485' post='4776479']
I am interested in developing a rather simple MMO game demo,

oh dear, here we go. such a thing does not exist.


I have read about some rather complex MMO architectures involving governor servers
and a bunch of confusing diagrams.
[/quote]
if the diagrams are confusing, that should be a good sign that you do not have the required experience to continue from this point.

have you got 2 players on a server before? how about 64? or even 128?

the login server will be used to place users on servers based on overall system load. if you dont plan on having many servers (and really, how much money are you willing to spend on hardware/network connection to support 5k players?) then you dont need to divide your population, and you can do everything in one place.

for the record, 5k players is MO, not MMO.
[/quote]

If its 5k users active at the same time in the same world its definitly in the MMO camp and would require atleast some thought into the architecture (a single cpu core won't be capable of dealing with that for any reasonably complex realtime game)

I'd recommend doing something rather simple such as:


login -> world server -> zone servers
|
chat server


player connects to the login server and gets an authorization token (login server sends the same token to the world server) , the player then connects to the world server which provides client with character information and connection info for the current zone , chat server, and other cross zone data, and finally the client connects to the zone server which handles gameplay in the current zone, (moving between zones can then easily be dealth with by having the client tell the world server that he is moving from zonex to zoney, and the world server verifying it by asking the zonex server if the player is in the transition area), if necessary one can add queues on zone entry to prevent flooding a zone giving the player the option to wait or stay in his current zone, basic load balancing can be done by moving zone servers between physical machines (assuming you got far more zones than physical machines) (Modern virtualization solutions make this a very easy alternative and if you keep the zone servers small and primarily move low population zones the pauses caused by a zone being migrated should be fairly minimal)
[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!

Is there even a need for the login server? Could the entire server be one .exe file maybe communicating with zone servers?
Would it be possible to run the login functions on a separate thread of the World Server since the player has to always be connected to the
World Server anyway?

What does the Login Server have to do anyway besides check valid password data/encryption/auto patcher ??


How you structure your game server is entirely up to you. Generally, it makes sense to put validation, patching and message-of-the-day (perhaps including billing, account upsells, etc) onto one system, and the actual gaming on another system, but if the load is small enough, the same piece of hardware can run it all.

Putting 5,000 connections onto a single machine might not be a problem if each connection doesn't do much. If the game rules are very simple, and updates aren't too frequent, then a single multi-core server can deal with 5,000 simultaneous online users just fine. You can then do login, gaming, chatting and all of that on a single machine. This assumes, of course, that you have the necessary bandwidth for whatever the game networking actually does...

If one of those operations becomes more expensive -- for example, once you start running a real simulation on the server with things like collision detection, you may start finding there isn't enough CPU. Similarly, if the job of deciding who gets to see what messages requires processing (such as "you get the nearest X players" updated for each real-time packet sent out), then you will need more machines to do the work.

Anyway, I recommend reading the Forum FAQ. It answers many of your questions. Also, I recommend starting with a small online game of some sort -- up to 10 players, say.
It used to be the "massive" limit started at "over 100," but these days it has moved up a little bit. A game with 1,000 players at the same time is clearly "massive" though, so a goal of 5k is very "massive" in scale.
enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement