10 Lives
Modo colaborar (sandbox)

FAQ / Guía rápida

Autor y link se leen del propio JS (authorName, authorUrl). En preview, si no se indican, quedará “Autor”.

Estructura mínima

  • Archivo global (sin módulos). Recomendado envolver en (function(){ ... })();.
  • Registrar el juego con window.FiveliveDayGames.register({ ... }).
  • Obligatorio: init(ctx) (puede ser async).
Plantilla recomendada
(function(){
  const D = (window.FiveliveDayGames = window.FiveliveDayGames || {});

  D.register({
    authorName: "Nombre",
    authorUrl: "https://...",
    title: "Título",
    subtitle: "Subtítulo",

    init: async function(ctx){
      const root = ctx.root;
      root.innerHTML = "";
      // ... UI y lógica ...

      return { destroy(){ /* limpiar timers/listeners */ } };
    }
  });
})();

API del contexto (ctx)

  • ctx.root: contenedor donde renderizar (no tocar body / header / footer).
  • ctx.getState(): devuelve { livesLeft, completed, failed, mode }.
  • ctx.win(): marca victoria del día.
  • ctx.lose(): consume un intento como fallo (en preview baja una vida).
  • ctx.onAttempt({ errorMs }): alternativa a win/lose; errorMs: 0 gana, alto falla.

Buenas prácticas (evita bugs raros)

  • Insertar estilos dentro de ctx.root (p. ej. <style>) para aislar el minijuego.
  • Evitar IDs globales repetidos; mejor clases con prefijo (ej: mmBtn, mmWrap).
  • Si se usan setInterval/setTimeout o listeners globales, limpiarlos en destroy().
  • No asumir que el día se puede re-jugar: si ctx.getState().completed es true, salir sin hacer nada.

Carpeta de ejemplos

  • Se cargan desde coop/example/ejemplo1.jsejemplo5.js.
  • Si un ejemplo se edita y se pulsa “Probar”, queda guardado en local y se prioriza siempre.
Ejemplos
Listo.
Listo.

JS

Preview

iPhone (sandbox)