During a contract to create an html5 game called Apalia for Intel's ill-fated AppUp platform, there was a very specific game in mind, designed by my good friend James Booth. This game would need very specific features and we quickly realized that nothing out there had the features we needed yet. And so, I ended up creating a custom JavaScript engine for our needs. For its time it was very advanced as JS engines go at the time and might even hold its own still today.
This was before the WebGL and the only game in town was Canvas2D.
Sprites with time-based animation
Thousands of animated sprites on-screen at once
Camera with customizable delay and follow actor behavior
Infinite layers and switching between them
Polygon based path system
Sphere, square, and polygon collisions
Simple event system with custom events
150+ key combinations, mouse, touch input
Basic behavior tree AI
Scenes and Scene Management
Dialogue tree system with 670+ customization possibilities
Media Resource manager, with background downloading and memory freeing
in-game Html5 audio and video manager
Timers with chained commands
Works on Desktop, Browsers, and phones
At the time I was excited for the work but had no idea how in over my head I was. Very quickly I realized how big a deal creating your own engine is, even if it's in the browser. But I learned a lot and became a true developer in the process. I was the sole programmer and though it was very tough work, I've very happy with what I accomplished. Everything was coded from scratch using no libraries or existing frameworks.