Saltar al contenido
Proyectos

Juego de navegador · teléfono y computadora

Disponible swarmgeddon.adelsonaguasvivas.workers.dev

SWARMGEDDON

Sobrevive a enjambres de insectos alienígenas en tres mundos. Un juego de disparos de doble stick, con jefes y un reto diario.

SWARMGEDDON en un teléfono: aparece una alerta de STAMPEDE y entra un enjambre de insectos alienígenas mientras el piloto dispara.
Partida con controles táctiles, a los dos minutos y medio.
Rol
Solo: diseño, código y publicación
Período
Desde jun 2026
Stack
TypeScript, PixiJS, WebGL, Web Audio, Capacitor, Cloudflare Workers

Disponible en swarmgeddon.adelsonaguasvivas.workers.dev. Código público en GitHub. Estado verificado el 22 oct de 2026.

En números

60 Hz

simulación con paso fijo y acumulador; la imagen se interpola entre pasos

7

secuencias de azar con semilla: apariciones, guion, jefes, botín, selección, combate y efectos

30

semillas por mundo para cada tipo de bot en la matriz final de balance

14

armas, más 31 mejoras y 10 fusiones, definidas como datos

Fig. 1 Un cuadro: pasos fijos y un solo render
  1. 1 · Cada cuadro requestAnimationFrame Limita el tiempo transcurrido antes de sumarlo al acumulador. Una pausa no puede dejar segundos de simulación pendientes.
  2. 2 · Simulación, 60 Hz

    Pasos fijos Ejecuta un paso por cada 1/60 s del acumulador y resta ese tiempo al terminar. El estado del juego solo cambia aquí.
    7 secuencias con semilla Cada una usa mulberry32 con una semilla derivada de hash32(semilla de la partida, su sal).
    • spawn
    • script
    • boss
    • loot
    • draft
    • combat
    • fx
    Verificación de pureza Cada build rechaza llamadas a estas API en src/systems, src/game y src/content:
    • Math.random
    • Date.now
    • performance.now
    • window.
    • document.
    • localStorage
  3. 3 · Una vez por cuadro Render Interpola entre los dos últimos pasos con alpha = acumulador / paso. La simulación se mantiene igual a 30 fps y 120 Hz.

La idea

En SWARMGEDDON peleas contra enjambres de insectos alienígenas en tres mundos, con jefes y un reto diario con semilla. Es un juego de disparos y supervivencia de doble stick, para navegador en teléfono y computadora. Lo construí sin un motor de juegos genérico, buscando que las peleas con muchos enemigos respondieran bien en el teléfono.

Lo que construí

La simulación avanza a 60 Hz fijos con un acumulador. El render dibuja una vez por cuadro e interpola entre pasos. Escribí un sistema de hash espacial para detectar colisiones, en lugar de usar un motor de física. Siete secuencias aleatorias mulberry32 parten de la semilla de la partida, para que la misma semilla y los mismos controles reproduzcan el mismo resultado.

Las armas, mejoras, enemigos, pilotos y mundos se definen como datos: 14 armas con 9 evoluciones, 31 mejoras, 10 fusiones, 3 pilotos y 3 mundos. La Web Audio API sintetiza cada sonido, así que el repositorio no contiene archivos de audio. Capacitor empaqueta la misma compilación para iOS y Android, con partidas respaldadas en el almacenamiento nativo.

Retos técnicos

  1. 01 Misma semilla, misma partida

    Las repeticiones y un reto diario justo requieren una simulación reproducible. Cada compilación revisa las carpetas de simulación y rechaza lecturas del reloj, azar sin semilla y llamadas del navegador o de audio: Math.random, Date.now, performance.now, window, document, localStorage y las API de audio.

    Dónde está en el código: scripts/check-sim-purity.mjs (se abre en otra pestaña)

  2. 02 El mismo juego a cualquier tasa de cuadros

    Un teléfono a 30 fps y un monitor a 120 Hz deben seguir las mismas reglas. La simulación se mantiene a 60 Hz y el render interpola entre pasos para que el movimiento se vea fluido.

    Dónde está en el código: src/core/time.ts (se abre en otra pestaña)

  3. 03 Ajustar el balance con bots

    Los bots juegan el juego real en un navegador sin interfaz con las estrategias turret, roam, crude y smart, más variantes de esquiva y tiempo de reacción. Un script registra resultados por mundo y semilla. Usé esas mediciones para ajustar la vida de los jefes, la duración de las peleas y la densidad de los enjambres.

    Dónde está en el código: scripts/playtest/matrix.mjs (se abre en otra pestaña)

Lo próximo

Publicar la versión de iPhone desde el mismo código.

Pantalla de SWARMGEDDON al subir de nivel: tres cartas de mejoras, con las opciones reroll, banish y skip debajo.

Pruébalo

Enfoques compartidos