[MUD-Dev] MMORPG/MMOG Server design

Edward Glowacki glowack2 at msu.edu
Wed Feb 19 09:24:56 New Zealand Daylight Time 2003

On Mon, 2003-02-17 at 12:55, Weston Fryatt wrote:

> What is the best design for an MMORPG Server?

I'm relatively sure there's some stuff in the archives about this,
but here's my thoughts...

First of all, there is no "best" that fits every game.  Everyone has
tradeoffs to make (money, speed, redundancy, code complexity, etc.) 
so different designs may be better for some people than others.

>   Single Massive server? The whole game run on one multi-processor
>   machine with gigs of ram.

I personally wouldn't recommend this strategy because:

    - You have no ability to take the machine down for maintenance.

    - You have no redundancy in case of failure.

    - If ever you should need to expand beyond that one server,
    you're screwed.

    - A good multi-processor server can be much more expensive than
    a few smaller servers.

>   Server Groups: A group of servers runs a sub-set of the game
>   world with a max user count of 2000. Each server group would be
>   a unique part of the game world.

Depending on how your world and game was designed, this might be a
very good option, or it might not.  There are a lot of issues to be
worked out with this sort of setup, namely distribution of
geographic area among servers or server groups (which should
probably be dynamic) and handing off connections between various
servers or server groups in a smooth manner (from the user's

>   Redundant Servers: Multiple Servers doing the same job all
>   persisting the game world/game state into a common database
>   cluster server. Each server has only a specific task. (ie: map
>   server, login server, game logic server, npc server, etc) You
>   may have 10 map server running, 35 game logic server, etc
>   running.
> I'm leaning towards the Redundant Server idea, But is this the
> best idea?

It seems like this setup might result in fairly heavy communications
overhead between servers as they all try to stay in sync with each
other, plus your game state database will get hammered constantly as
all the other nodes try to talk to it.

I'm not sure what the "best" solution is for your game, but in
general I'd consider the following when deciding:

    - How does it scale?  

    - How does it handle node failure? (or taking an individual
    server down for maintenance?)

    - How does your server setup affect the user?  (i.e. are there
    any breaks in the fluidity of their gameplay, and if so, are
    they handled properly?)

Edward Glowacki <glowack2 at msu.edu>

MUD-Dev mailing list
MUD-Dev at kanga.nu

More information about the MUD-Dev mailing list