From acbe4257ae0d5015b2677e9dba124feddbe25dc7 Mon Sep 17 00:00:00 2001 From: Jose Luis Date: Sat, 21 Mar 2026 21:07:39 +0100 Subject: [PATCH] docs: explain why base levels can't be edited from admin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 96 base levels have JavaScript test() functions in their checks that validate gameplay objectives. These can't be serialized to a database — they need to stay as code. Custom levels from admin panel work for tutorials/challenges but without the star check system. Co-Authored-By: Claude Opus 4.6 (1M context) --- producto.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) 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.*