diff --git a/producto.md b/producto.md index d28671b..9216882 100644 --- a/producto.md +++ b/producto.md @@ -146,4 +146,35 @@ Reaktor es una plataforma web de sintesis modular que combina un **sandbox creat --- +## Notas Tecnicas + +### SynthQuest: Niveles base vs niveles custom + +Los **96 niveles base** (12 mundos × 8 niveles) estan hardcoded en ficheros JS (`packages/client/src/game/levels/world1.js` ... `world12.js`). Estos niveles **no se pueden editar desde el admin panel** porque contienen funciones `test()` en JavaScript que validan si el jugador ha completado el objetivo: + +```javascript +checks: [ + { + star: 1, + desc: 'Conecta el oscilador a la salida', + test: (mods, conns) => { + // Logica JS que inspecciona los modulos y conexiones + return conns.some(c => c.from.moduleId === osc.id && ...); + }, + }, +] +``` + +Estas funciones `test()` no se pueden serializar en una base de datos — son codigo ejecutable que depende del contexto del engine. Para editar los niveles base hay que modificar directamente los ficheros JS y hacer deploy. + +Los **niveles custom** creados desde el admin panel se almacenan en PostgreSQL y permiten definir titulo, descripcion, modulos disponibles y patch base (importado del Sandbox). Sin embargo, **no soportan checks/objetivos custom** porque requeririan escribir funciones JS. Los niveles custom se pueden usar para: + +- Tutoriales simples tipo "monta este circuito" +- Challenges de la comunidad +- Contenido adicional sin sistema de estrellas + +Para añadir niveles con sistema de estrellas completo, hay que crear un fichero `worldN.js` con los checks en JS. + +--- + *Documento vivo — actualizar conforme avanza el desarrollo.*