Code frameworks
Cómo ejecuta Fabled tu código
Sigue un proyecto desde el código hasta el juego: qué se ejecuta y cuándo, cómo funciona el ledger y qué demuestra un escenario.
Del código al juego
Tu proyecto pasa por cinco pasos. Solo el último es jugar. Los pasos anteriores nunca cambian un personaje en vivo.
- Escribir
Editas los archivos de código en el editor de código fuente. Todavía no se ejecuta nada.
- Comprobar
Comprobar y previsualizar compila tus cambios actuales y ejecuta todos los escenarios, estén guardados o no. Los problemas aparecen en el panel Problemas. No se publica nada.
- Guardar
Guardar proyecto conserva el código como una versión nueva de tu juego. Preparar solo funciona con una versión guardada, así que guarda antes de preparar.
- Preparar
Preparar mi juego crea Frameworks, Frames y contenido privados a partir de la versión guardada. El servidor vuelve a comprobar el proyecto, y su veredicto es el que cuenta.
- Jugar
Un jugador crea un personaje a partir de tu Framework. El constructor lo crea y las acciones lo cambian.
Qué se ejecuta y cuándo
| Parte | Cuándo se ejecuta | Qué hace |
|---|---|---|
| Constructor | Una vez, cuando se crea un Elemento a partir del Framework. | Convierte las entradas en los valores iniciales. Nunca escribe. |
| Función del ledger | Cuando se crea el Elemento, en el orden en que el esquema declara las funciones, y de nuevo después de cada acción. | Deriva un valor a partir de los valores guardados. Una acción no puede escribirlo. |
| Acción | Cuando un jugador usa un botón que la llama. | Escribe en el ledger con ledger.set y ledger.add. |
| Frame | Cada vez que se muestra la hoja. | Lee los valores guardados y los dibuja. Sus botones llaman a acciones. |
| Escenario | En Comprobar y previsualizar, nunca al jugar. | Crea un Elemento, ejecuta acciones y compara cada valor y cada escritura. |
El ledger
Los valores de un Elemento nunca se editan directamente. Cada cambio es una escritura en su ledger. ledger.set reemplaza un valor y ledger.add le suma. Los escenarios enumeran esas escrituras, así que ves exactamente qué hace una regla.
Un valor derivado viene de una función del ledger, así que una acción no puede escribirlo. La comprobación lo rechaza:
which is a non-writable state fieldEl constructor sigue devolviendo un campo que deriva una función del ledger, con un marcador como 0. La función del ledger reemplaza el marcador cuando se crea el Elemento. Un escenario compara sus expectedValues con los valores después de ejecutar las funciones del ledger, así que escribe ahí el valor derivado, no el marcador.
Las funciones del ledger se ejecutan en el orden en que las declara el esquema, y cada una ve los resultados de las anteriores. Declara una función después de las funciones cuyos campos lee. Aquí total lee base, pero se declara primero, así que lee el marcador:
{
"ledgerFunctions": [
{
"id": "total",
"name": "Total",
"field": "total",
"source": "rules/total.ts"
},
{
"id": "base",
"name": "Base",
"field": "base",
"source": "rules/base.ts"
}
]
}expectedValues.total: expected 11, constructor returned 1Usa una función del ledger para un valor que debe seguir a otros campos y que ninguna acción escribe. Usa un valor del constructor para un número que es del personaje y que las acciones cambian, como hp. El constructor lo calcula una vez, así que un cambio posterior en los campos de los que salió no lo mueve.
Qué demuestra un escenario
- El constructor devuelve los valores que esperas.
- Cada acción hace exactamente las escrituras que enumeras.
- Los valores derivados salen bien, también después de una acción.
- Se usa cada archivo y todo el proyecto compila.
Un escenario no demuestra cómo se ve una hoja ni cómo se siente una regla al jugar. Para eso, prueba el juego preparado.

