A 3D raycasting engine in JavaScript