Crear videojuegos arcade en HTML5 Canvas con Cerewro

HTML5 Canvas permite crear videojuegos directamente en el navegador sin plugins ni frameworks, usando solo JavaScript. Con Cerewro puedes generar un videojuego arcade completo desde una descripción en lenguaje natural: bucle de juego, física, colisiones, puntuación y niveles.

Estructura base de un juego HTML5

Esqueleto de juego HTML5 Canvas



  
  Mi Juego Arcade
  


  
  

Prompts para generar juegos completos

Prompt: Shooter espacial tipo Space Invaders
Crea un videojuego arcade completo en HTML5 Canvas + JavaScript puro:
- Nave espacial controlada por flechas del teclado o WASD
- Disparar con barra espaciadora (máximo 3 balas simultáneas)
- Oleadas de 30 enemigos con movimiento en zigzag
- Detección de colisiones bala-enemigo y enemigo-nave
- Explosiones con partículas
- Puntuación: +10 por enemigo, +50 por oleada completa
- 3 vidas con respawn
- Nivel aumenta cada oleada (mayor velocidad)
- Pantalla de inicio, juego, pausa y game over
- Fondo estrellado con parallax
- Todo en un solo archivo HTML sin dependencias externas

Conceptos clave del game loop

ConceptoDescripciónCódigo
requestAnimationFrameBucle de 60 FPS sincronizado con el monitorrequestAnimationFrame(gameLoop)
Delta timeTiempo entre frames para movimiento independiente de FPSconst dt = (ts - lastTs) / 1000
Colisión AABBDetección rectangular simplea.x < b.x+b.w && a.x+a.w > b.x
Sprite sheetImagen con todos los fotogramas de animaciónctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh)
PartículasArray de objetos con posición, velocidad y vidaparticles.filter(p => p.life > 0)
TecladoRegistrar teclas presionadaskeys = {}; onkeydown = e => keys[e.code]=true

Detección de colisiones

Colisión rectangular (AABB)
function collides(a, b) {
  return a.x < b.x + b.width  &&
         a.x + a.width > b.x  &&
         a.y < b.y + b.height &&
         a.y + a.height > b.y;
}

function collideCircles(a, b) {
  const dx = a.x - b.x, dy = a.y - b.y;
  return Math.hypot(dx, dy) < a.radius + b.radius;
}

Sistema de partículas para explosiones

Explosión en 10 líneas
const particles = [];

function explode(x, y, color = '#ff6600') {
  for (let i = 0; i < 20; i++) {
    const angle = Math.random() * Math.PI * 2;
    const speed = 50 + Math.random() * 150;
    particles.push({
      x, y,
      vx: Math.cos(angle) * speed,
      vy: Math.sin(angle) * speed,
      life: 1.0,        // 0-1
      color
    });
  }
}

function updateParticles(dt) {
  particles.forEach(p => {
    p.x += p.vx * dt;
    p.y += p.vy * dt;
    p.life -= dt * 2;
  });
  particles.splice(0, particles.length, ...particles.filter(p => p.life > 0));
}
Sin librerías = máximo control: Los juegos generados por Cerewro en HTML5 Canvas puro no necesitan ninguna librería externa. Son archivos HTML únicos que puedes abrir en cualquier navegador, enviar por email o publicar en cualquier hosting.