Saltar al contenido principal
Índice

Hackathon · 2026

Astro Dash

Videojuego de combate espacial para el arcade del Platanus Hack 26 empaquetado en solo 47.94 KB.

Stack
Phaser 3.87.0 · JavaScript · Vite · Web Audio API
01

Contexto

El proyecto fue desarrollado para la hackathon Platanus Hack 26 Arcade Challenge, una competencia con el objetivo de crear un videojuego completo y competitivo para ser ejecutado dentro de gabinetes arcade físicos reales. La restricción principal del desafío exigía que la totalidad del juego estuviera empaquetada en un único archivo JavaScript de máximo 50 KB minificado, funcionando en un entorno sandbox estricto sin imports externos ni peticiones de red.

02

Motivación

La motivación nació al ver la convocatoria del desafío en redes sociales. El formato de desarrollo para gabinetes arcade físicos me resultó una propuesta muy interesante y novedosa, totalmente alejada de lo que suelo desarrollar habitualmente.

Para el diseño de Astro Dash, me inspiré en un juego que disfrutaba mucho de chico llamado Radiant, un título al estilo Galaga donde el objetivo era vencer enemigos y superar distintas fases y jefes. El concepto del gabinete arcade me trajo esos recuerdos. Sin embargo, busqué enfocarme en una experiencia mucho más frenética, rápida y adrenalínica, ideal para partidas rápidas que fomentaran la competencia en el arcade.

03

Qué hice

Diseñé e implementé una arquitectura de archivo único en JavaScript puro para mantenerme por debajo del límite estricto de 50 KB sin sacrificar fluidez ni efectos visuales, apoyada en las siguientes técnicas de optimización:
  • Zero-Image Footprint (Gráficos Procedurales): el 100% de las naves, proyectiles, asteroides, interfaces y efectos se dibujan dinámicamente en pantalla mediante vectores y la API Graphics de Canvas, eliminando por completo la necesidad de empaquetar imágenes.
  • Síntesis de Audio con Web Audio API: todo el apartado sonoro (disparos, explosiones, escudos y efectos) se genera sintéticamente en tiempo real modulando osciladores nativos del navegador, reduciendo el consumo de audio a cero bytes.
  • Diccionario de Minificación Manual: un sistema de alias de código corto en la cabecera del script reemplaza funciones repetitivas de Math y llamadas deeply-nested del motor por identificadores de una sola letra antes del proceso de minificación.
  • Object Pooling y Reciclado de Memoria: un pool estático de objetos para proyectiles y partículas de propulsores previene pausas por recolección de basura y mantiene constante el tamaño del heap.
  • Exclusión Externa del Motor: Phaser se configuró como dependencia externa provista localmente por el entorno host del gabinete arcade, permitiendo utilizar la totalidad de los 50 KB únicamente para la lógica del juego, las físicas y la interfaz de usuario.
La jugabilidad se estructuró en torno a los siguientes pilares:
  • Supervivencia y Combate Espacial: destrucción de asteroides y naves enemigas con aceleración progresiva de la velocidad de los meteoritos a medida que transcurren las rondas.
  • Lluvias Climáticas Periódicas: desencadenamiento periódico de lluvias masivas de meteoritos con velocidad y densidad incrementales que ponen a prueba los reflejos del piloto.
  • Potenciadores Tácticos: recolección de suministros en pantalla para activar defensas y armamento especial como escudos de energía, bengalas contramedidas, misiles teledirigidos y sobrecarga de cadencia rápida.
  • Inercia y Movilidad Táctil: mecánica de deslizamiento inercial (tactical boost) que permite rotar y disparar en cualquier dirección conservando el impulso espacial.
  • Progresión y Jefes de Sector: enfrentamiento periódico contra jefes de sector (Elite Interceptor) con patrones de ataque cada vez más agresivos.
05

Galería

Recursos y Assets (1)