After trying out several HTML5/JS game libraries, I'm pretty sure that Phaser is the best one for 2D games. It has frequent updates, great documentation and an awesome community support, too. One can learn a tremendous amount of game development techniques just be reading the source code of Phaser.
We have an editor tool (like Unity/Unreal), good documentation, a great community of other developers. And the engine is open source if you're not interested using the Editor tools [http://github.com/playcanvas/engine]
You know, this is one of the things that I think is really important in a game engine: Has a fully polished game ever shipped using the engine.
It's easy, by comparison, to get to the 80% point with a game -- especially if you have a sample to start from that's somewhat close to what you want to create. What's hard is making every little bit work correctly; creating a finished product that doesn't have glitches, that works on all devices/in all browsers, and that has a good "feel" throughout. That last bit of polish, that last "20%", probably takes well over 80% of the time; I'd estimate it at about 95% of the time. And if you start with an "80%" engine that hasn't gone through that polish phase at least once, then you're doing all that work yourself.
This isn't precisely what you asked: You asked for success stories. A casual browsing of the site doesn't find any published game lists, though. The creators of Phaser.io do have a list of games THEY'VE published with it:
Look at the "HTML5" options; they used to make games in Flash.
I looked at Phaser a while back, and decided against using it. None of those games actually look much more complicated than a proof-of-concept, 80%-at-most demo.
On the other hand, Cocos2d-X has been used in dozens of hit games, and they are up to v3.0 of Cocos2d-js, which looks awesome, has an amazing free toolchain you can use, works in a browser, AND can be embedded in a custom wrapper on mobile (something like PhoneGap/Cordova, only tuned and optimized for game development -- it includes SpiderMonkey directly, for instance, so you don't have to worry about what browser it's running in).
I shipped one of the first large games with Haxe on iOS (in ~2011), and I am at a loss for words to describe just how right you are.
My game was complete, but the garbage collector would randomly crash, every hour or so. I spent nearly two weeks reading through incomprehensible C++ code, and completely failed to fix the problem myself.
Hugh, the creator of NekoNME, graciously helped me after I sent in a deterministically crashing test case, and that's the only reason the game was shipped at all. I consider myself a competent developer, but utterly incapable of debugging someone elses GC.
I also had to make a whole bunch of smaller fixes (eg adding in app purchases, fixing leaks etc), but those things I expected.
If you're evaluating an engine for use, there should either be a flawless game more complex than what you're trying to accomplish, or you should be ready, willing and able to traverse the full stack fixing whatever comes up.
I released an android game using HaxeFlixel and the process was relatively painless, actually I was suroprise at how well it run on my device and how flawlesly things like immersive mode and in-app purchases were implemented.
But again, it as last year, so I assume 3 years make a huge difference in development, plus Haxeflixel is a haxe framework tailored for making games. To whoever might be interested in diving into it, we shipped a nice amount of polished finished games: http://haxeflixel.com/showcase/games/ (Mine is polaritron)
We made an entire mini-gaming platform on iOS with all phaser games. They are quick and challenging; though not big titles by any means. We've found phaser to be perfect for rapid development and prototyping.
The makers of Phaser.io were commissioned to make a game for each of the emotions from "Inside Out". I believe it's on their blog or the main developers blog.
I'm working on 91 applications in it (Series of educational games/interactives/story books). It's going really well and we have more than half complete. There are some bugs, but any framework has that.
Yes, but we don't normally do "games". I make games on the side for fun and it ended up with me doing some professionally. Out of the 91, I'd say we've 'shipped' 16 at this point; with 16-20 more in the final tweak stages (repack assets, adjust sound, add mouse overs, tweak animations, add additional tweens, etc). We'll be working on it through the end of the year. We've tried to take the flash apps and improve on the design. Most now run on a series of 'engines'. So take 91 apps; categorize them; build the engines, then script the games for each engine.
We've just finished up getting mouth movements to match audio; and allowing activities to launch other activities by restarting the preload state. We have a series of Grunt scripts for each engine that package up each game/activity as a zip file that is SCORM compatible.
I've been tinkering with phaser for awhile, so far it's been an enjoyable experience. The best parts I've seen is the out-of-the-box support for animations and integration with tiled map editors.
Good examples and loads of tutorials. I just started playing with it and circular dependencies make me cringe. Game object initiates subsystems that in turn get their dependencies through game object, which is a requirement for initialising aforementioned subsystems. What is this pattern? It's really tough to compose things with it.
Working with it professionally, I agree. You pass the game object everywhere, no matter what. The variation if factory methods is also frustrating. It's ridiculous trying to reference how to create things when all the examples use game.add.<whatever> and sometimes you want to construct them separate and use .add.existing. But the standalone constructors will take different sets of arguments (including the game object).
I built a shooter with limited bullets with his. It was fun. I now encourage students to use this library. See my silly game at http://escape.bphogan.com. It should work with a mouse or keyboard.
It isn't polished yet as it's a work in progress, and I'm a pretty newbie programmer, so my code isn't perfect :)
It was pretty easy for me to learn, even without a lot of CS experience, and worked pretty well on mobile (at least iOS) without too much hassle. If you have no idea how to make a game and want to make a simple one fast, it seems like an awesome library to do so. The examples and tutorials were plentiful and I was able to find detailed ones on third party sites as well.
This is quite a coincidence, I first learned of Phaser earlier today as I was investigating various modern HTML5 gaming engines. I have finished writing the story for a game that's been in my head for years, and I am eager to move on to implementation now that the story is solid. I may opt to roll my own engine since I am well-versed in the necessary minutia, and I enjoy the learning experience. But on the other hand, it would be nice to release the game within the decade. Damn the relentless march of time.
About a year ago, some friends and I made a small game using Phaser at a 12-hour hackathon. It's a nice little framework and, while we didn't really make use of many of its features, it was really easy to pick up.
I could possibly get you an example of both if you were interested. Most of the people using Phaser are using Tyepscript and doing multi-module management with that. I use Browserify (and bring in Phaser separately).
If you have a state that loads levels, you change the level targets and restart the state so that the preload runs again and gets the new resources. Or you can load everything up front and approach multiple levels that way.
Is there any way to eliminate mouse lag? For example, in http://gamemechanicexplorer.com/#raycasting-2 the light source lags visibly behind the pointer. I'd prefer it it was locked to the pointer.
I think that example is recalculating the wall positions for every frame. That works for an example of a mechanic, but you wouldn't do that in a real game.
I think the problem is worse than that. Here's a small jsfiddle showing that JavaScript's onmousemove is inherently laggy: http://jsfiddle.net/z8h6y787/
The framework is good, however I got faster (fps wise) results using my own rendering functions on Canvas than I was getting using their rendering on both Canvas and WebGL. I think in their efforts to be basically a drop in replacement for Flash/AS3 they have really let themselves down.
the rendering is done by another library (pixi.js), and there is currently a rewrite of phaser underway, which will include a custom renderer, that is already much faster than the old one.
It's true, the examples are nicely presented. Full game examples would be good though. The community section has some, but I couldn't find anything really impressive.
The car on terrain box2d example looks promising, but the question is, how does it perform in the context of a full game? Hillclimb Racing is the benchmark to aim for... great native app game. If we can get that performance happening in the browser with these engines then we're doing okay, but I can't help doubting these engines are up to Hillclimb Racing standards. That is, fast and smooth with lots of track loaded in memory. Even the native app suffers a slight stutter on occasion as it loads more track ahead, so I wonder how much track can be in memory in the browser. (I'm guessing these side scrolling games have a maximum window of game area available at any one time).