WebGL 2D game engine with Canvas fallback