I'm a solo dev and I just shipped Efectazo , a free free-kick football game that runs in the browser, on phones and desktop: https://efectazo.pages.dev You swipe to shoot, and the shape of your swipe becomes curl on the ball. Here's how the main pieces work. The ball: gravity, drag and a Magnus force The physics module is plain JS with no three.js in it, so I can run it headless in tests. Each substep adds three forces to the ball: // Magnus: CM * (w x v) export ...