Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How are Massively Multiplayer Online RPGs built?

How are Massively Multiplayer Online RPG games built?

  • What server infrastructure are they built on? especially with so many clients connected and communicating in real time.

  • Do they manage with scripts that execute on page requests? or installed services that run in the background and manage communication with connected clients?

  • Do they use other protocols? because HTTP does not allow servers to push data to clients.

  • How do the "engines" work, to centrally process hundreds of conflicting gameplay events?

Thanks for your time.

like image 400
Robin Rodricks Avatar asked Sep 13 '09 20:09

Robin Rodricks


People also ask

How does massively multiplayer online role playing games work?

A massively multiplayer online role-playing game (MMORPG) is a video game that takes place in a persistent state world (PSW) with thousands, or even millions, of players developing their characters in a role-playing environment. The virtual world in which the game takes place is never static.

What makes a game massively multiplayer?

A massively multiplayer online game (MMOG or more commonly MMO) is an online video game with a large numbers of players, often hundreds or thousands, on the same server. MMOs usually feature a huge, persistent open world, although there are games that differ.

How much does it cost to develop an MMO?

Like Star Citizen, many other MMORPG games are under-development with massive amounts in place, over $200 Million each. However, it's crystal clear now that building an average MMORPG game needs over $50 Million US Dollars.

How many people does it take to make an MMO?

Short answer is; anywhere from 1 to 1000 people.


2 Answers

What server infrastructure are they built on? especially with so many clients connected and communicating in real time.

I'd guess the servers will be running on Linux, BSD or Solaris almost 99% of the time.

Do they manage with scripts that execute on page requests? or installed services that run in the background and manage communication with connected clients?

The server your client talks to will be a server running a daemons or service that sits idle listening for connections. For instances (dungeons), usually a new process is launched for each group, which would mean there is a dispatcher service somewhere mananging this (analogous to a threadpool)

Do they use other protocols? because HTTP does not allow servers to push data to clients.

UDP is the protocol used. It's fast as it makes no guarantees the packet will be received. You don't care if a bit of latency causes the client to lose their world position.

How do the "engines" work, to centrally process hundreds of conflicting gameplay events?

Most MMOs have zones which limit this to a certain amount of people. For those that do have 100s of people in one area, there is usually high latency. The server is having to deal with 100s of spells being sent its way, which it must calculate damage amounts for each one. For the big five MMOs I imagine there are teams of 10-20 very intelligent, mathematically gifted developers working on this daily and there isn't a MMO out there that has got it right yet, most break after 100 players.

--

Have a look for Wowemu (there's no official site and I don't want to link to a dodgy site). This is based on ApireCore which is an MMO simulator, or basically a reverse engineer of the WoW protocol. This is what the private WoW servers run off. From what I recall Wowemu is

  • mySQL
  • Python

However ApireCore is C++.

The backend for Wowemu is amazingly simple (I tried it in 2005 however) and probably a complete over simplification of the database schema. It does gives you a good idea of what's involved.

like image 36
Chris S Avatar answered Sep 24 '22 19:09

Chris S


Many roads lead to Rome, and many architectures lead to MMORPG's.

Here are some general thoughts to your bullet points:

  • The server infrastructure needs to support the ability to scale out... add additional servers as load increases. This is well-suited to Cloud Computing by the way. I'm currently running a large financial services app that needs to scale up and down depending on time of day and time of year. We use Amazon AWS to almost instantly add and remove virtual servers.
  • MMORPG's that I'm familiar with probably don't use web services for communication (since they are stateless) but rather a custom server-side program (e.g. a service that listens for TCP and/or UDP messages).
  • They probably use a custom TCP and/or UDP based protocol (look into socket communication)
  • Most games are segmented into "worlds", limiting the number of players that are in the same virtual universe to the number of game events that one server (probably with lots of CPU's and lots of memory) can reasonably process. The exact event processing mechanism depends on the requirements of the game designer, but generally I expect that incoming events go into a priority queue (prioritized by time received and/or time sent and probably other criteria along the lines of "how bad is it if we ignore this event?").

This is a very large subject overall. I would suggest you check over on Amazon.com for books covering this topic.

like image 101
Eric J. Avatar answered Sep 25 '22 19:09

Eric J.