Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

As I understand it, MMORPGs are games that run on your computer like any other normal 3d video game but, with each action that happens with in the game, changes are made to the universe via HTTP calls to the server. So the players computer does all the heavy lifting in terms of rendering the graphics and animations but, web frameworks do the online communication.

  • So I am wondering what web frameworks, web servers and databases are being used to create MMORPGs like EVE Online and W.O.W.?

  • Also, what programming languages and 3d game engines are being used to make the client side (3d graphics/animation/sounds) part of the game?

share|improve this question
    
I think that pretty much every MMO starts out with off-the-shelf technologies and then customized the hell out of it once they grow to a certain size and start to really specialize their tools. Stackless I/O in EVE Online is a fantastic example: eveonline.com/devblog.asp?a=blog&bid=584 –  Michael Stum Oct 27 '10 at 6:32
    
Do you mean TCP calls to the server? HTTP(HyperText Transfer Protocol) is used by web servers and browsers for web pages and has nothing to do with MMOs unless you mean a browser based game like urbandead. –  stonemetal Oct 27 '10 at 16:37
    
Michael Stum, Is Stackless I/O made with Stackless Python? –  J3M7OR3 Oct 27 '10 at 17:09
    
@Adam no idea if these two are related or not. –  Michael Stum Oct 27 '10 at 18:54
    
@Michael Stum Just found out that it is from this video us.pycon.org/2009/conference/schedule/event/91 –  J3M7OR3 Oct 28 '10 at 13:20

7 Answers 7

up vote 23 down vote accepted

Most companies use C++. Eve is an outlier, the core graphics engine is in C++, while the game logic is, as others have noted, in Python. CCP also makes a lot of contributions to Stackless itself, which is in C for the most part. WoW is C++ for the game itself, though the UI is scripted in Lua. Cryptic (Champions Online, Star Trek Online) uses plain C, but that it is somewhat rare in the industry. Java pops up every now and then, ex. Runescape, but I can't think of anything AAA. Disney has used Panda3D (a Python-based engine written in C) for a number of their MMOs, but as with Eve thats uncommon.

Overall it seems like C++ for the game logic and engine, with Lua for client scripting is the closest you will find to a standard.

As for the web side, it is all over. We (Cryptic) use a mix of PHP, C, and Python (Django) for various bits. CCP uses ASP for the website itself, and Python to power the backend (slowly drifting together though). WAR and LOTRO both use PHP for their site, though it isn't clear what particular frameworks they are using (if any).

You mentioned that MMOs work via web API calls though, which isn't the case. An HTTP-based protocol would be far too inefficient, and HTTP is not designed for long-running connections. Pretty much all MMOs (that aren't web based like Kingdom of Loathing or Urban Dead) use custom servers and custom protocols. The clients are highly stateful, doing something like bringing up an inventory UI isn't going to fire off a request to the server since all that information is cached on the client.

share|improve this answer
    
coderanger so when you say 'the clients are highly stateful' you mean that the client app is storing all the data there and not always sending requests to the server? also, how does one learn about developing custom servers and custom protocols? –  J3M7OR3 Oct 27 '10 at 17:20
1  
Yes, to reduce network traffic the client caches a lot of information locally (unlike in a web game where usually everything comes directly from the server). The server is still authoritative though, to prevent cheating. As for learning about how to develop this kind of thing. I would look for a book on "network programming". There are a lot of tools out there that can help though, Twisted, Protocol Buffers, etc etc. A lot of depends on what language and frameworks you are most comfortable in. –  coderanger Oct 27 '10 at 23:21
3  
Panda3d is programmed in C++, not C. –  jokoon Dec 8 '10 at 18:08

A few links for EVE Online:

http://www.eveonline.com/devblog.asp?a=blog&bid=663
http://www.eveonline.com/devblog.asp?a=blog&bid=653
http://www.eveonline.com/devblog.asp?a=blog&bid=632
http://www.eveonline.com/devblog.asp?a=blog&bid=589

Basically, EVE Online runs on SQL Server 2005 and some other Microsoft software. The client backbone is mostly written in Python however (Stackless Python to be exact, from what I can remember) and some C++ most likely.

As for World of Warcraft, I do know they use Lua for all of the client GUI stuff, but aside from that I don't think they use Lua for anything else. C++ is likely what is used. WoW, I would think also uses some Windows boxes but it seems likely that they would have some other types of boxes specific to certain tasks that may not be Windows-based at all.

Not a lot of info, but hope it helps.

A lot of these games seperate servers based on functionality, so they would have a database server that is only responsible for storing objects/whatever and the servers that actually run the game world (validate player actions, etc.).

share|improve this answer
    
Dalin, Those are great articles. I will read them all. –  J3M7OR3 Oct 27 '10 at 17:08
    
Good to hear. Unfortunately I couldn't find anything that just had a list of what they used. Developer journals are always interesting though, IMO :) –  Dalin Seivewright Oct 27 '10 at 17:27

I'm not quite sure about EVE and WoW, but I've seen MMO games use C++, C#, Java and even PHP for server (the latter only for simple browser-based games, though).

Client is most often written in C++ (or Flash if it's a browser-based game); I've worked with a .NET-based client once (C# mixed with C++/CLI).

And almost always some kind of dynamic scripting language is used to facilitate developing "designer" content - e.g. abilities, quests, etc - things that change often, and can be changed by game designers as opposed to programmers.

share|improve this answer

First, MMORPGs or any online game does not use HTTP or "web frameworks" in the first place.

A server is programmed just like the game itself, in C++, and communication is achieved by using sockets to transmit packet over the network.

Servers often run another OS, and include only game code, so a lot of player can play on a single server smoothly.

I don't know how blizzard manages their servers, I don't know if they use clusters or not.

Of course when I say "sockets" and "C++", I'm talking about the real time game, not other services the game might offer, like the armory with WoW for example. They might just use a database which can be read from multiple services, like the forum, the armory, the game, the account administration etc, but my thought is that they have dependent databases, which seeks for new entries etc, so everything can sync up nicely.

I think the guy in charge of the network part of WoW might be a real badass.

share|improve this answer
2  
"I think the guy in charge of the network part of WoW might be a real badass." Small server populations and client-side movement don't really make for bad-assery, in my opinion. Although hindsight is also 20/20. –  user744 Dec 8 '10 at 20:26

For EVE, they gave a talk about StacklessIO on PyCon 2009: http://us.pycon.org/2009/conference/schedule/event/91/

share|improve this answer

There are dozens of game engines out there. The two that pop into my mind are Unreal engine and Source.

As for languages, that depends on the task. The rendering and other performance critical parts are usually done in one of native languages. C++ for example. But it is common to use some dynamic language to define scripts because this code is more likely to change and is often written by less 'hardcore' programmers :-) Lua, Python, Ruby - they all can be used here.

share|improve this answer

WoW uses Lua for all their internal scripting as well. I'm not sure if they modified the language itself, but I wouldn't doubt it so it could suit their needs. You can bet they have different tools that make it easy for their designers to modify/tweak scripts. This is insider information from friends of mine that are/used to be WoW devs.

share|improve this answer
    
when one modifies a language like Lua, you mean they are creating their own personal framework that is based on Lua. Correct? If so, does this decrease the performance/speed of the programs developed? –  J3M7OR3 Oct 28 '10 at 13:16
    
@J3M7OR3 - It is my understanding that they created their own internal framework based on Lua, but I could not possibly say about performance/speed. –  Kyle C Oct 28 '10 at 14:49

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.