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?
Answer
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.
No comments:
Post a Comment