docs: explain why base levels can't be edited from admin
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) <noreply@anthropic.com>
This commit is contained in:
31
producto.md
31
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.*
|
||||
|
||||
Reference in New Issue
Block a user