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 serasync).
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 tocarbody/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: 0gana, 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/setTimeouto listeners globales, limpiarlos endestroy(). - No asumir que el día se puede re-jugar: si
ctx.getState().completedes true, salir sin hacer nada.
Carpeta de ejemplos
- Se cargan desde
coop/example/ejemplo1.js…ejemplo5.js. - Si un ejemplo se edita y se pulsa “Probar”, queda guardado en local y se prioriza siempre.
Listo.
Listo.
JS
Preview
iPhone (sandbox)