Advertisement

Discussion about technologies used in MMO video games through browsers and mobiles - Thesis

Started by October 16, 2014 11:24 AM
13 comments, last by hplus0603 10 years, 1 month ago

This is a discussion about technologies used to build MMO (real time) video games played through a browser and mobiles. (Massively Multiplayers Online)

Any feedback from developpers who have build MMO would be greatly appreciated, the aim is to compare technologies with pro and cons, not to tell which one is the best but to have an overview of what exist, what can be used, what should not be used and what incoming technologies/frameworks seem promising.


I am a student currently writing a thesis, the results of this discussion will be part of it. The thesis will be written in French and in English, and a link to it will be added to the main post once it is released. (~June 2015)


The first step is to build a bibliography of articles, books, blogs, thesis and so on. I am also willing to interview some developpers (i.e: InnoGames) and get experience feedbacks.


Bibliography

Interviews and experience feebacks

  • InnoGames (waiting)

So, what to do now? Please help me to build the bibliography by adding resources that you think are related and would be useful. Also if you have any experience that you could share, please do!
Once I have enough information I will write a quizz and specific questions to ask to the people I want to interview.

This probably isn't what you are looking for, but, IMO, what the client uses to play a game (browser, mobile, desktop app, etc.) is becoming more and more heterogeneous and has little bearing on how an MMO is programmed.

Most of the work on an MMO will be server side. The clients really do little besides render the world as the server has told it currently exists, process inputs, and feed that information back to the server. Repeat.

My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)

Advertisement

Most of the work on an MMO will be server side.


Actually, most of the work on an MMO will be generating all the content that the hordes will chew through in the first month of release.

RPGs are notorious for very high content costs/requirements, and MMO RPGs add another multiplier to that.
enum Bool { True, False, FileNotFound };

I prefer to talk about MMO in a more general way, MMORPG are indeed quite specific, they need a lot of work just about the story to get the players into the game. That's a huge work which isn't related to programming at all.

I found this new resource about MMO, interesting. It starts by explaining which technologies he used and why, then make a tutorial to build a simple MMO game and at the end he explains what's quite important and specific about MMO, like entity interpolation and client prediction.

http://buildnewgames.com/real-time-multiplayer/

There is nothing "MMO" in that link that I can tell. It uses node.js and socket.io, which are single-threaded technologies, and don't scale horizontally at all. The difference between "online games" and "massively mulitplayer online games" are subtle, yet hugely important.
Entity interpolation and client prediction are needed for any online game with real-time movement. Doesn't matter if it's Quake, Battlefield, World of Warcraft, or Eve Online.
When you start looking for MMO resource, it would probably help if you defined what "MMO" is and why it's different from just "online multiplayer."
enum Bool { True, False, FileNotFound };

Yeah, you're right. I used the term "MMO" there even if it's not indeed a MMO, just some example of a multiplayer game. It's just that what's needed in a mutliplayer game is also needed in a MMO, as you said.

Advertisement
FWIW, we're building a version of IMVU that runs in a browser, because PC download is not a mass-market vehicle going forward for us. (We're not the kind of thing you'd expect on Steam, for example.) We're building it on WebGL and Websockets using zero plug-ins.

Given that we already have a back-end that does > 100k concurrent users, our main challenge is actually running at good frame rates in a majority of web browsers, as well as getting from "95%" to "99.5%" web connectivity. Sure, a MacBook Pro with NVIDIA graphics running Chrome will probably work fine. Meanwhile, an Intel GMA 950 running on little Timmy's laptop with Windows XP is a different matter... and those are like 20% of the web surfing public.
Similarly, the Samsung Android browser will happily create a Websockets object -- that doesn't actually do anything. It's a dummy, dead, object.
Those kinds of real-world problems end up taking 80% of development time. The "hard" scaling and tech problems are really just the 20% of the iceberg.

We've talked a bit publicly about various technologies we use.
My talk from GDC 2011: http://www.slideshare.net/JonWatte/message-queuing-on-a-large-scale-imvus-stateful-realtime-message-queue
Chad Austin's talk from CppConf 2014: https://dl.dropboxusercontent.com/u/1602057/Presentations/Connecting%20C%2B%2B%20and%20JavaScript%20on%20the%20Web%20with%20Embind.pdf
And some of the crazy stuff we have to do to actually make it work: http://engineering.imvu.com/2014/09/26/optimizing-webgl-shaders-by-reading-d3d-shader-assembly/
enum Bool { True, False, FileNotFound };

Thanks for the feedback, I didn't have time to answer properly before even I read through the links.

I understand that the online version isn't released yet, you're still using application on Windows/MAC I believe. Guess the issues you talked about are quite recent and you're working on it.

It's indeed kind of crazy you had to care about the hardware and improve it somehow to improve performances for a specific chipset. Sounds crazy.

I understand your main issue is about scaling the application for a large scale of users. But what other issues did you run into because you changed the technology used? You're still working with C++, so you probably didn't have to change much about the application itself but I'm sure there were many issues due to the generated code based on a C++ app.

It's kind of outside the scope, because it's not a MMO (but it embeed MMO games I guess) but still your feedback is interesting!

It's kind of outside the scope, because it's not a MMO


I'd like to understand how you define MMO. We certainly use approximately all the same approaches as I've seen at other MMO companies. The main difference between us and, say, WoW, is that we use even less physical simulation than they do (and they mostly fake it on the client side) and our stats are more tied to real actions, rather than simulated-world actions. Not a big difference on the back-end, all in all. (That being said, the previous company I worked at, There.com, spent an insane amount of work on trying to get the physics engine to be deterministic, despite supporting late joiners and targeting very narrow bandwidth -- I don't think that's actually necessary these days!)

Most of our challenges come around having to move over 20 million user-generated pieces of 3D content into a web browser. It turns out, our users/creators have been very creative with pushing the C++/Python render engine into all kinds of unexpected corner cases, and now expect the same behavior in a new render engine. (We couldn't re-use the one from the PC, unfortunately -- C++ is only a small part of the compatibility equation; GL versions, host OS support, threading-versus-not, and a host of other issues are actually bigger obstacles.)
enum Bool { True, False, FileNotFound };

I guess I'm wrong again, I see MMO as a game, because I'm used to MMORPG, but it could be an application as yours indeed, I just didn't see it this way so far... (Make the bibliography is the first part of a thesis, it's like the analysis part of it, where we read things and we became more aware of what direction the thesis will take. So that's why I'm not like certain about what should be included and what shouldn't, thanks for helping me to get a framework here)

What I mean by MMO (insinuating video game) is any kind of online game with massive players interraction, IMVU is more a chat thing but it does also is a game. 2D, 3D I don't really care, even a browser game like Travian or Ogame without any kind of graphic is fine.

This topic is closed to new replies.

Advertisement