How fast is Go? simulating particles on a smart TV
17 hours ago
- #multiplayer
- #simulation
- #golang
- Challenge to simulate millions of particles in Go with multi-player support and CPU-only computation.
- Initial approach involved a WebSocket server merging multiple upstream servers, leading to the particle simulation project.
- Determinism is key for predictable and reproducible multi-player simulations, reducing the need for syncing large game states.
- Inspiration from deferred shading in graphics programming to decouple simulation size from client data needs.
- Server-side rendering (SSR) approach to send simulation frames as video to clients, reducing client-side computation.
- Comparison of data transfer methods: raw frame buffers vs. particle data, highlighting trade-offs.
- Implementation details: TCP WebSocket for simplicity, double buffering, and avoiding locks for performance.
- Optimizations: worker pools, frame buffer reuse, delta encoding, and bit packing to reduce data size.
- Performance analysis using pprof, identifying bottlenecks in simulation and broadcasting frames.
- Final solution supports millions of particles and scales to hundreds of clients with minimal CPU usage.
- Deployment on a budget VPS demonstrates practical scalability and performance.