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.

I'm creating a 3d game on HTML5. It's 30% complete and the hard part is already coded. The server is on node.js.Now I'm realizing that maybe it was not a wise choice. This is because I realized:

  1. Three.js still has many bugs. I don't see the same thing on every machine. Each browser, OS, can give different results. I'm afraid my clients will have a great stress installing my game properly.
  2. I have tons of sprites and models on my game. I wonder if my clients will have to load all them again everytime they want to play?
  3. I wonder if a Node.js server will be fast enough to handle it, and I'm afraid it won't be scalable.

What would you advise me? Should I continue and finish the game on HTML5 or is it better to remake it on something else, like Unity3d for the client and (what?) for the server?

share|improve this question
Its really going to be up to you in the end....Unity3D has its own set if issues, the first of which being all of your clients will need to download the plugin, whereas HTML5 is open....what you need to do is a pro's and con's list :p –  espais Mar 3 '12 at 20:42
What kind of performance and scaling numbers are you actually looking at achieving? Your algorithm and architecture choices are going to make far more performance impact than language choice. Starting over almost always feels like a good idea but is generally not a great idea unless you've hit an absolutely impassable block. –  Jason Morales Mar 3 '12 at 22:54
Is there anything stopping you using Flash, if you're certain you need to change? Unity might be slight overkill, although you certainly can do 2D with it. –  Nick Wiggill Mar 4 '12 at 15:54
add comment

1 Answer

up vote 4 down vote accepted

#1: I can't comment on Three.js as I haven't used it. Two thoughts: (a) A lot of the variation is going to be due to graphics hardware. There are certain things you should avoid doing to be consistent across GPUs, which will be the case no matter what 3D engine you use. (b) You can always use raw WebGL instead of any framework, which will get you better performance (due to reduction in abstraction) and might help you detect and work around inconsistencies.

#2 should not be a problem as long as your sprite and model resources are served with proper caching information — make sure your web server is configured appropriately. Check your server logs and your browser's request inspector.

#3: Using HTML5 etc. on the client side does not mean your server has to be in JavaScript. Interoperation is part of the whole idea of the Web. (If you're shoving JSON around, well, there are libraries for that everywhere, not just in JavaScript.) Choose the best platform for the client, and for the server, independently.

share|improve this answer
Could you recommend a good platform for the tcp server? This is a hard question to make because people think I'm trying to start a flame war, etc., but I just don't know. What are, honestly, the best options? I used node.js because it seemed (and was) very easy and fast to code, and yet it seemed scalable. I had a horrible experience with C++ though. I would spend days and days with almost no progress because of so many errors and lack of high-level language features. –  Dokkat Mar 3 '12 at 18:49
I don't have any large-scale server experience, sorry. However, I think it's probably a good idea to stick with what you've got and work on making sure you have something fun, before you worry about performance and invest the effort in a rewrite in a lower-level language (if that's even necessary). –  Kevin Reid Mar 3 '12 at 19:34
@Dokkat Most languages have some sort of socket support. Python, Ruby, Java, languages that run on JVM (Scala, Groovy, Clojure, Jython, JRuby, etc.), and so forth. And there are also libraries that allow you to use the Node.js style event queue model in a variety of languages. If you prefer high level languages, stick with them, and continue with Node or choose a similarly high level language. But before you do anything drastic ask yourself: Are you really expecting that high of a load? Node.js isn't C++, but it's still pretty fast. –  michael.bartnett Mar 3 '12 at 22:53
Kevin Reid, okay! And thanks for the great answer. I don't know why I'm not getting good answers lately... Michal.bartnett, thanks too, this was also very enlightening. –  Dokkat Mar 3 '12 at 23:20
add comment

Your Answer


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

Not the answer you're looking for? Browse other questions tagged or ask your own question.