Comment by MarginalGainz
8 hours ago
The nostalgia is real. Reminds me of the 'Falling Sand' game era.
For anyone trying to scale this in JS: the bottleneck usually isn't the rendering, but the object overhead/GC.
If you switch from an object-per-flake model to a single flat Float32Array for positions/velocities (Data-Oriented Design), you can typically push 10x more particles before hitting the frame budget. Keeping the memory layout cache-friendly makes a massive difference even in a high-level managed environment like V8.
The real bottleneck is doing it on the CPU, if you switch to WebGPU you can simulate millions of particles simultaneously in just few milliseconds per frame.
The game that impresses me with its performance is Noita, they managed to balance an "every pixel is simulated" physics engine and have it run quite well.