SWARMGEDDON
Un shooter de supervivencia twin-stick sobre un motor propio: timestep fijo, spatial hash, totalmente determinista.

v1 completo en contenido: modos Endless y Daily, récords personales por mundo. Código privado.
La idea
Quería la sensación de Crimsonland en una pestaña del navegador: cientos de enemigos, partículas llenando la pantalla, cero pantallas de carga. Los motores de paquete lo hacen fácil y pesado. Preferí escribir el motor, y mantenerlo honesto: todo el juego es TypeScript, PixiJS para el render WebGL y ninguna librería de física.
Lo que construí
La simulación corre a 60 Hz fijos, desacoplada del render con interpolación, así que el juego se siente idéntico en un monitor de 144 Hz y en un teléfono cansado. Las colisiones son solapes de círculos contra un spatial hash escrito a mano; las entidades viven en pools de objetos para que una ola de doscientos enemigos no castigue al recolector de basura. Todo el azar pasa por un solo PRNG con semilla: una semilla reproduce una partida exacta, y eso es lo que hace justo el Reto Diario para todos los que juegan la misma fecha.
El motor de audio se sintetiza en WebAudio en tiempo real: cada disparo, golpe y capa musical se genera, cero archivos de sonido. La sangre se acumula en un render target persistente, así que el campo de batalla recuerda toda la partida sin costo por cuadro. La ficción es data: 10 armas, 15 enemigos, 25 perks y una reina jefa son definiciones de contenido, así que cambiarle la piel al juego completo no toca el motor. Capacitor envuelve el mismo build para iOS y Android, con hápticos, safe areas y botón de atrás aislados detrás de una costura de plataforma.
Lo difícil
01
Determinismo versus juice
El screen shake, el hit-stop y las salpicaduras también quieren azar, pero los efectos cosméticos no pueden tocar el PRNG de la simulación o las partidas con semilla se desincronizan. Dos corrientes de azar: una sagrada, una decorativa.
02
Mil cosas moviéndose a 60fps
El spatial hash mantiene las colisiones casi lineales, los pools mantienen la asignación de memoria plana, y la capa persistente de sangre convierte lo que serían miles de partículas en una sola textura. El presupuesto del cuadro se gasta en gameplay, no en contabilidad.
03
Un código, tres plataformas
La PWA web, iOS y Android salen del mismo build. El timestep fijo esconde las diferencias de refresco; la costura de plataforma esconde todo lo demás.
Lo que sigue
Enviarlo a las tiendas. El build, las notas de firma y los assets están listos; es cuestión de darle al botón.