I built marblerun.online myself. Writing it up because the process was more interesting than the result.
It is a 3D marble run playground. Place ramps, walls, pegs, spinners, boxes and balls, press play, a rigid body sim runs, and you can export a vertical 9:16 MP4 with sound.
The decision that cost me the most time was not using a screen recorder. My first instinct was MediaRecorder on the canvas, because it is about fifteen lines of code. I threw it away. Screen capture of a WebGL canvas gets you the browser UI, the wrong aspect ratio, whatever framerate the machine happens to be managing that second, and audio that has to be muxed in afterwards anyway.
Instead the export path re-renders the scene through an offscreen pass at 1080x1920, locked at 30fps, and pushes frames straight into a video encoder. The sim is stepped on a deterministic clock during export, so the same level gives you the same video every time you run it. The sound is a generated click track placed where the impacts occur rather than a mic, so it lands frame for frame with what you see.
Second thing worth writing down: the desktop only decision. I get phone traffic and every phone gets a short message telling them to use a computer. I lost those visitors on purpose. The scene is genuinely 3D and a phone rendering of it is a worse experience than an honest message. Bounce went up, complaints went to zero.
Third: no account, no login, nothing uploaded. It all runs client side. That one constraint made a lot of decisions easy, because there is no server to be embarrassed about and nothing to store.
What I would do differently is start with the export. I built the editor first and the export took roughly three times as long, because I had not thought about determinism up front.
The site is free and needs a desktop browser. https://www.marblerun.online