Volver a la wiki

Asteroids Background Effect

Asteroids Background Effect

Versión: 3.1.0 Última actualización: 02-04-2026 Autor: Claude (Anthropic)


1. Descripción

Efecto visual animado inspirado en el clásico juego Asteroids. Consiste en un canvas de fondo con:


2. Ubicaciones

2.1 Dashboard y Editor (Django App)

Archivos:

Páginas donde funciona:

Páginas donde NO funciona (botón oculto):

2.2 Terminal SSH (Local Agent)

Archivo: terminal/agent/local_agent.py (dentro de TERMINAL_HTML)

El efecto está integrado directamente en el HTML que sirve el agente local para las sesiones SSH.


3. Características

3.1 Tres Temas de Color

TemaColorDescripción
Cyan#00ffffEstilo Cyber/Tecnológico
Green#00ff41Estilo Matrix
Amber#ffbf00Estilo Retro

3.2 Controles

3.3 Red Alert Mode

Cuando hay alertas críticas (rojas) activas en el Observatory, todos los Asteroids cambian a rojo:

3.4 Persistencia

El estado (activo/inactivo), el tema y el modo alerta se guardan en localStorage:

3.5 Física

3.6 Rendimiento


4. Botón Toggle

Dashboard

Terminal SSH


5. Configuración Técnica

Dashboard (AsteroidsBackground.js)

{
    starCount: 60,
    asteroidCount: 15,
    fps: 30,
    opacity: 0.55,
    starColor: '#00ffff',
    asteroidColor: '#00ffff'
}

Terminal (local_agent.py)

STAR_COUNT = 40
ASTEROID_COUNT = 8
FPS = 25
UFO_INTERVAL = 20000 // ms

6. Limitaciones Conocidas

  1. Terminal/Maps pages: El efecto no funciona en estas páginas debido a layouts con position: fixed y fondos opacos.

  2. Transparencia de asteroides: Resuelto en v3.1.0 — asteroides ahora son completamente sólidos (alpha 1.0).

  3. Botón del Terminal: El diseño del botón en el terminal difiere ligeramente del dashboard debido a que el agente no tiene acceso a las variables CSS de la aplicación.


7. Estructura de Archivos

static/js/effects/
├── AsteroidsBackground.js    # Motor principal de animación
├── AsteroidsManager.js       # Singleton con gestión de temas
├── ScreensaverEngine.js      # Motor del screensaver (Phase 1 + Phase 2)
├── ScreensaverController.js  # Idle detection + overlay management
├── init-asteroids.js         # Helper de inicialización
└── entities/
    ├── Star.js               # Clase Star
    ├── Asteroid.js           # Clase Asteroid con colisiones
    ├── Ufo.js                # Clase Ufo (+ shooting en screensaver)
    └── Projectile.js         # Clase Projectile (láser del UFO)

terminal/agent/
└── local_agent.py            # Contiene TERMINAL_HTML con efecto inline

8. API Pública

window.CreaRackAsteroids

window.CreaRackAsteroids.init(container, id, options)  // Inicializar instancia
window.CreaRackAsteroids.toggle()                       // Toggle on/off
window.CreaRackAsteroids.cycleTheme()                   // Cambiar tema
window.CreaRackAsteroids.setAlertMode(active)           // Activar/desactivar modo rojo
window.CreaRackAsteroids.getManager()                   // Obtener singleton manager
window.CreaRackAsteroids.initScreensaver(options)       // Inicializar screensaver
window.CreaRackAsteroids.toggleScreensaver()            // Toggle screensaver on/off

Custom Events

EventoDetailDescripción
asteroids-toggle{ enabled }Efecto activado/desactivado
asteroids-theme-change{ theme, index }Tema cambiado
asteroids-alert-mode{ active }Modo alerta activado/desactivado

9. Screensaver Mode

9.1 Descripción

Screensaver que se activa tras 5 minutos de inactividad del usuario. Muestra un overlay fullscreen con dos fases cíclicas de animación.

9.2 Fases

FaseDuraciónDescripción
Accumulation~60-80sAsteroides spawn desde bordes, deceleran exponencialmente, llenan la pantalla hasta 85% cobertura
Attack~60-90s2 UFOs disparan proyectiles láser lentamente, destruyen todos los asteroides en cascada (parece que no lo lograrán)
Retreat~3-4sUFOs dejan de disparar y se marchan por los bordes de la pantalla
Pause3sPantalla vacía antes de reiniciar el ciclo

9.3 Phase 1 — Accumulation

9.4 Phase 2 — UFO Attack

9.4.1 Phase 2b — UFO Retreat

9.5 Wake-up

9.6 Integración con Alert Mode

9.7 Condiciones de activación

9.8 Testing rápido

// Reducir timeout a 10s en la consola del navegador
CreaRackAsteroids.getManager().screensaver.idleTimeout = 10000;

10. Changelog

v3.1.0 (02-04-2026)

v3.0.1 (18-02-2026)

v3.0.0 (06-02-2026)

v2.0.0 (05-02-2026)

v1.0.0 (29-01-2026)


Documentos relacionados:

Véase también

Subir