Three.js with cannon.js is what you want, but the more you work with it, the more you realize how the difficult part is not so much the “game” or “engine” in that sentence but the word “web”… optimizing assets is a massive skill all in its own to be storage friendly and usable without the easy default of laggy and massive download size