Hey, I experienced some issues with the movement, if you hold D then hold A then release A, you will stop despite never releasing D. I fixed this by making and object that stores booleans for each key needed, setting x and y to zero, before doing if(w) vector.z += max speed for each key. It makes it a lot smoother
Three.js is a low-level library for creating 3D web experiences. Babylon.js is a complete 3D engine with a bunch of additional features like physics and particle systems. If you need complete control over your app/game, are comfortable with 3D/graphics, or need something lightweight, go with Three.js. If you need all the additional features that Babylon.js offers and are okay with working within the limitations of their engine, go with that.