Thursday, April 7, 2011

What MMOs are made of

        There is lots of posts lately about design in MMO blogosphere, there were series covering various aspects at Nils's (combat one I liked the most ) even syncaine posted one.  But at the core of every MMO is technology stack. MMOs are a complex software projects (probably one of the most complex as far as software goes) with many interconnected systems

MMO has 2 big parts
  1. Client
  2. Server
Client is  what players see and interact with.  Your typical game engine with mmo tailored network stack and UI.  All the art assets (maps, texture  ,models,animations)  sit on client as well.  And "Typical game engine":
  • Graphics engine
  • UI and controls
  • Sound
  • Network stack
Single player also have "AI" and game logic scripting. But in MMOs those are done server side. 

Server side in turn typically consists of 
  • Front end (for example load balancer + acct mgmt server .those handle initial logins and directs client to appropriate shard, they do little else.
  • Application Servers - those are ones handling the actual game, sometimes its several different type of applications (chat ,combat , scripts (mob and events) ,individual zones)
  • Backend storage  (typically SQL db servers) - handling long term storage (such as player characters, banks , static zone information etc)
  • Various glue in between systems (such as object caching, message transport etc)
All this does not have to be physically separate servers , everything can run on same machine (even the client). Larger installation have more sophistication for purposes of resiliency and load balancing.

       Server communicates to client information about actors ( other players ,mobs, script events) , client communicates information about player action (character coordinates and actions).The trickiest part in client-server is designing good system to handle many concurrent players interacting at same  ,all with variable amount of latency without artifacts such as lag and rubberbanding. Planetside has probably one of the best examples of network stack as it allowed  twitch combat with hundreds of players

Some good read  network stack shows some insight on actual implementation :

Some people may think that server is most important part, downplaying the importance of client. But its actually not correct.Client is probably most resources intensive part to develop (art assets ,graphics  etc -this is all client side development) and one of most important for success of the game -as its the part players actually interacts with . Server side has to be stable and perform well  it  is very important and not a trivial problem to solve, and can bury the project if not done right, but on its own even the most perfect server does not make a game

Realistically one cannot make a complete MMO engine from scratch all on its own. Its takes a team of experienced professionals working many years -that means hefty payroll costs .And then comes the content cost (which are typically many more times the engine cost)

What are options for making MMO? - you can take license existing engine  (for $$$) then concentrate on creating content and tailoring it to your needs. Typically licensings costs are high though,  there are 2   mainstream commerical offerings :

Costs are pretty high  and you don't get access to source code unless paying for most expensive licensing options (in a range of hundreds thousands of dollars). Licensing engine is very attractive option as engine is taken care of and one can concentrate on gameplay and content .Downsides are is that you are limited in what you can do  by what engine can (or cannot do)

One of the first examples of successfully developing  AAA mmo using this approach is DaoC. At that time there was no mmo engines so they used gamebryo game engine with custom tailored network stack and custom server side.

SWTOR uses hero engine, and lobby based world of tanks uses big world. So 3d party engines  are  certainly proven and mature enough to be  a good foundation
Downsides are that there are significant costs upfront, and while it become much more affordable lately it still looks a bit out of reach of small indy teams.Costs keep falling though so one day it could become affordable for basically anyone.

In next post I ll cover the "open sores" side of the equation :)

No comments:

Post a Comment