Do you think it is technically possible to write a fully-fledged 3D MMO client with Browser JavaScript - WebGL for graphics, and WebSocket for Networking?

Do you think future MMOs (and games generally) will be written with WebGL?

Does today's JavaScript performance allow this?

Let's say your development team was you as a developer, and another model creator (artist). Would you use a library like SceneJS for the game, or write straight WebGL? If you would use a library, but not SceneJS, please specify which.

UPDATE (September 2012): RuneScape, which is a very popular 3D browser-based MMORPG that used Java Applets so far has announced that it will use HTML5 for their client (source).

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

My assumption is that your question implies a 3D MMO. 3D is not a requirement for the genre, and in fact many MMOs have exist on the web for years as little more than HTML forms (See urbandead.com) Not to mention all the PHP games from Gameforge (en.gameforge.com) or the more exotic AJAX/Javascript stuff like Lord of Ultima (lordofultima.com)
–
wkerslakeJan 24 '11 at 21:24

10 Answers
10

Do you think it is technically possible to write a fully-fledged 3D MMO client with Browser JavaScript - WebGL for graphics, and WebSocket for Networking?

Yes, absolutely. There is no reason WebGL or WebSocket technology would prevent you from making a 3D MMOG client, or any game client for that matter.

Do you think future MMOs (and games generally) will wrriten with WebGL?

Yes. I believe within the next five years, most 3D browser games will be written using WebGL. The reason is simple - WebGL is the only standardized 3D technology that will have implementations available in every major web browser (Chrome 9, Firefox 4, Safari 6, and Internet Explorer via Chrome Frame).

Does today's JavaScript performance allow this?

Yes. JavaScript performance in modern browsers has increased to the point where 3D game development is feasible. For example, see the Three.js project.

Let's say your development team was you as a developer, and another model creator (artist). Would you use a library like SceneJS for the game, or write straight WebGL? If you would use a library, but not SceneJS, please specify which.
Thanks!

Use a library to save time. There is no reason to write your own WebGL graphics code unless an existing library is missing features that you need. Even in that case, it would probably be more time efficient to extend the existing library.

For my project, I am using GLGE as it supports many different graphics effects and is constantly being updated with new ones.

The question "Do you think future MMOs (and games generally) will wrriten with WebGL?" and the answer "Yes. I believe within the next five years, most 3D browser games will be written using WebGL." are not a precise match for each other...
–
KylotanFeb 28 '11 at 18:20

There are already several Browser based MMOs out there. They usually don't use 3D graphics though.

I'm a bit sceptic when it comes to WebGL. The current crop of browsers don't support WebGL in their normal release builds. You'll have to get special builds or mess with config files, which is more complicated to the average user than downloading a plugin.

Speaking of plugins: Several people mentioned Unity, but don't forget Flash. An upcoming release of the Flash player (code-name molehill) will have GPU-accelerated 3D. My guess is, that flash will provide hardware accelerated 3D graphics in the browser before WebGL takes off.

The issue of stable browser with webgl support should not happen after Jan 2010 or so. Firefox 4 and Chrome 9 are slated to come out at about that time. Chrome 9 beta is pretty simple to install and doesn't require messing with anything to enable webgl. The link to the beta edition is bellow the regular download link for chrome.
–
Nicolas K.Dec 24 '10 at 0:29

@DMan: Probably, since it's out now. I can't wait until someone figures out how to bluescreen (or kernel panic, or whatever it is Macs do) a crappy OpenGL driver using WebGL...
–
user744Jan 24 '11 at 21:15

1

@wkerslake: Those stats are outrageous. I maintain a site aimed at the average internet consumer with half a million unique visits per day, and less than 1% of them use Internet Explorer 6 (about 1/3 use Internet Explorer 7/8/9). Firefox and Chrome stand for 50% of the traffic, and they're self-updating browsers meaning the majority of people will have WebGL support installed within a few months. Since development of a game can easily take 6 months, I see no reason to discourage people from using WebGL today.
–
BlixtMar 1 '11 at 13:32

Your answer is wrong, contradictory and badly formatted. Sorry to be so harsh. If you think op should just use unity say so in a comment to his question.
–
oberhamsiJan 31 '11 at 12:48

Ironically oberhamsi, my original answer did just say "Use Unity", but I was told I needed to answer the question more directly.
–
Tim HoltFeb 1 '11 at 0:10

1

Okay, fair enough. I think unity is a very different beast then trying to do it natively in the browser. Sure, you can do anything with a plugin but the question seems to me: what are the limits of native browser technologies.
–
oberhamsiFeb 1 '11 at 11:45

You won't have full keyboard control, and for many control freaks, this could be a deal-breaker. The F-keys for example will likely remain out of reach for quite some time.

You're not going to be able to hit most browsers, either. WebGL isn't really well-supported yet, and websocket support is hit-and-miss these days, with some browser vendors enabling it for one version, then disabling it for the next.

But you can put together something simple, sure. Throw in some compelling gameplay and it won't matter that the graphics are a little low-key. Runescape started off pretty simple, and grew into a complex, fun, incredibly popular MMO, back when everyone said that an MMO created in a browser plug-in was a pipe dream.

An MMO built withing the current limits for browsers that adapts as things change would certainly have a leg-up by the time that browsers are far enough to support a "AAA" MMO.

Almost all of the modern browsers support the function keys (quirksmode.org/js/keys.html#link6). In fact, that page is at least several years old and the support for them in modern browsers is probably even better.
–
RicketJan 25 '11 at 3:22

WebGL is included in nightly builds of both WebKit (Chrome/Safari) and Gecko (Firefox). WebSockets is currently disabled due to security issues, but there is no reason why it shouldn't be re-enabled once the issues are resolved. In the meantime there is always HTTP.

Will all games be written this way? No, but a significant number will be. Once WebGL is in final versions of Chrome and Firefox the penetration will already be higher than that of native plug-ins like Unity.

JavaScript performance is absolutely up to writing games. You probably won't see a Crysis level of graphics for a while, but remember with WebGL, the number-crunching is offloaded to the GPU.

For a small 2-man team you will need to be prepared to do a lot coding which ever engine you use. There currently aren't any WebGL/JavaScript engines that actually cover much of the game code. SceneJS, three.js and similar are wrappers over the graphics layer, but provide nothing for collision, physics, audio, resource-loading, network or tools which make up the bulk of a product like Unreal Engine, or Unity.

It's early days at the moment, I'd expect to see more middleware emerging over the next year.

I don't think many future MMOs will be written with any client-side browser technology since most MMO developers will want to use the same language across the client and the server, and most game developers are fluent in non-web languages like C++. There's far too much client-code involved to make it very practical in Javascript anyway, except for quite trivial simulations. There are also other limitations imposed by running in the browser which are unsavoury for a typical game developer.

I'm sure there will be some games like this, however. They're just not going to take over from WoW or similar games for quite a while. They will probably be made more by web developers getting into games rather than games developers getting into the web.

The question you should ask yourself is why will game developpers want to depend on web technology they do not master and have no control over, current langages allows you even in a web browser to make awesome games ?

Unity and the Prime Engine have nothing to do with the technologies mentioned though. They are native code plugins.
–
KylotanDec 16 '10 at 17:26

1

They are answers in the sense that we are saying, "No it is not a good idea to do this, however here are alternatives." Answers that say, "No but here is an alternative" are a lot more preferable than just "No"
–
Tim HoltDec 16 '10 at 17:41

3

Sometimes I'd agree, but rarely. There's a danger of trying to read someone's mind and guessing what they 'really' want to do, when actually the original question was perfectly legitimate in its own right. If someone asks about the suitability of X, we shouldn't always reply with "just use Y". At the very least there should be a comparison of the suitability of the two so that we come away knowing more about X.
–
KylotanDec 16 '10 at 20:25

I'll rephrase my answer then to answer his question about what library to use. I'd use the Unity "library" myself :P
–
Tim HoltDec 17 '10 at 0:05