Soltar Pipa — soltarpipa.online
Proyecto personal · multijugador en tiempo real
- Servidor autoritativo en Go: toda la física de vuelo y el duelo entre hilos corren en el servidor, y el navegador solo dibuja y envía los controles, lo que elimina la superficie de trampa en el cliente.
- Protocolo binario propio sobre WebSocket, little endian, con un frame de referencia grabado por el Go y decodificado por la prueba del cliente en TypeScript: cambiar un lado sin el otro rompe la build.
- Área de interés que trata a cada jugador como un segmento de recta, de la mano a la cometa, en una rejilla espacial de 48 m con radio de 120 m e histéresis — 12 µs por jugador, sin asignación de memoria.
- Optimización guiada por perfilado: barrido ordenado en lugar de comparar todos los pares (de 28 ms a ~1 ms por tick) y quickselect en lugar de ordenación al seleccionar cometas por envío (del 16% al 2,4% de la CPU del tick).
- Prueba de carga propia con 5.000 WebSockets simultáneos, sin fallos de conexión ni expulsiones; en producción la sala funciona con 140 jugadores a 15 fotogramas por segundo, límite impuesto por el ancho de banda del balanceador de 10 Mbps, no por la CPU.
- Producción en Knative sobre Kubernetes, con dos servicios y dos dominios, imágenes en GHCR y versionado automatizado con release-please.
- Go
- TypeScript
- Three.js
- WebSocket
- Vite
- Docker
- Kubernetes
- Knative