Juego de navegador · teléfono y computadora
SWARMGEDDON
Sobrevive a enjambres de insectos alienígenas en tres mundos. Un juego de disparos de doble stick, con jefes y un reto diario.
- Rol
- Período
- Stack
- Enlaces
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
- 1 · Cada cuadro request
Animation Limita el tiempo transcurrido antes de sumarlo al acumulador. Una pausa no puede dejar segundos de simulación pendientes.Frame -
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 · 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
-
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.
-
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.
-
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.
Lo próximo
Publicar la versión de iPhone desde el mismo código.
Pruébalo
Enfoques compartidos
Usar semillas para poder repetir una partida
Invicto, Flawless, The Veil · El Velo, Conuco, Coherente, Este sitio
Separar las reglas de la interfaz
Ajustar la dificultad con simulaciones
Invicto, Flawless, The Veil · El Velo, Coherente
Proteger el progreso guardado
Conuco, Coherente, El Corre Corre, Invicto