7 small 3D browser games with zero model, texture or audio files (~900 KB each)

Hi everyone! I’m a solo indie dev, and over the last weeks I’ve been building a series of small, silly 3D games with three.js. I wanted to share them here, because three.js made the whole thing possible.

The constraint I set myself: no external assets at all. There are no .glb models, no textures and no audio files. Every character, prop and level is built from three.js primitives and merged geometry at runtime, and every sound effect and music track is synthesized with the Web Audio API. Each game ends up as one JS bundle of about 800–900 KB (around 210 KB gzipped), fonts included, so they start in a couple of seconds even on phones.

The games (all free, no sign-up, desktop + mobile):

Stack: three.js r186, TypeScript, Vite, and pmndrs/postprocessing for bloom and the final grade. The game logic runs in a fixed-timestep simulation that is separate from rendering, which let me run bot players headless in Node to test difficulty and balance across every level without opening a browser.

A few things I learned:

  • Merging procedural geometry and reusing a small set of materials keeps draw calls low, even with lots of props on screen.
  • Metal-looking materials (spoons, crowns, gold) render almost black without an environment map, so a RoomEnvironment + PMREMGenerator gives you cheap reflections without shipping an HDR file.
  • Procedural Web Audio is tiny and surprisingly expressive: in Kitty Vac every slurp in a combo plays the next note of a scale.

I’d love any feedback on performance, especially on low-end phones, or on the visuals. Happy to answer questions about how any of it is built!