The decision came while I was working on our new game (the secret one). I was busy writing a 'shader' in JS for the canvas that would allow us to use overlay blending for lights. Except for the fact that it took too long to generate the resulting image it was working fairly well. It was at this point that I realised just how often I was faced with this kind of issue. As much as I would like to continue developing my own engines, I hardly went a day without needing to resort to some kind of hack to achieve something simple.
So I've moved over to Unity. The choice of game engine was a fairly simple one: I could still easily deploy my game (even more so), development is still very speedy (again, more so) and unlike many other game engines where the work of the programmer devolves to scripting events I could still feel like I was achieving something. Even though Unity supports JS scripts, I've opted to rather code in C# (if you're going to do something, do it right).
I've spent the last week learning Unity and it's been a rocky road but I feel I'm at a place now where I am no longer hampered by my lack of knowledge and development on the secret game can recommence at full speed (we'll reveal exactly what it is very soon, we promise).
Here's a screenshot of how the game looks in the Unity player. The overlay blending on the lights is working now and we think the effect is amazing.