Code frameworks
Estructura del proyecto y manifiesto
Dónde va cada archivo, cómo se nombran y qué debe declarar el manifiesto.
Carpetas
| Carpeta | Contiene | Notas |
|---|---|---|
| manifest/ | project.json | Exactamente un manifiesto. |
| schemas/ | Un archivo JSON por Framework | El id del Framework es el campo id del archivo. |
| rules/ | Archivos de reglas en TypeScript | Una función exportada por cada archivo de constructor o de acción. |
| layouts/ | Frames | Cada Frame es un archivo JSON que enumera un Framework. |
| scenarios/ | Pruebas | Un objeto de escenario por archivo. |
Usa rutas relativas en minúsculas, sin partes «..». Los ids de Framework, de acción y de función empiezan con una letra minúscula y después usan letras minúsculas, dígitos, guiones bajos o guiones, hasta 64 caracteres.
El manifiesto
{
"formatVersion": "fabled.game-project/v1",
"projectId": "game-your-game-id",
"projectKind": "GAME",
"compilerProfile": "native-game-v1",
"name": "Lantern Keepers",
"entryFramework": "keeper",
"frameworks": ["schemas/keeper.json"],
"scenarios": ["scenarios/new-keeper.json", "scenarios/heal.json"]
}- Línea 3 Conserva el projectId que creó el editor. Debe coincidir con el id del proyecto.
- Líneas 8-9 Las rutas empiezan en la raíz del proyecto.
| Campo | Obligatorio | Significado |
|---|---|---|
| formatVersion | Sí | Siempre fabled.game-project/v1. |
| projectId | Sí | El id que el editor creó para tu juego. Déjalo tal cual. Debe coincidir con el id de todo el proyecto, o el guardado falla. |
| projectKind | Sí | GAME para un juego completo con personaje, o ADD_ON para contenido extra. |
| compilerProfile | Sí | Siempre native-game-v1. |
| name | Sí | El nombre del proyecto. |
| description | No | Hasta 2000 caracteres. Úsalo para una licencia o una línea de créditos. |
| entryFramework | Sí | El Framework que los jugadores crean primero. En un GAME, un personaje jugable. |
| frameworks | Sí | Rutas de los archivos de Framework, de 1 a 64. |
| scenarios | Sí | Rutas de los archivos de escenario, de 1 a 512. |
El manifiesto solo acepta estos campos, más tablas y derechos opcionales. Un campo desconocido es un error.
Si el id del manifiesto y el id del proyecto no coinciden, la comprobación se detiene con:
manifest projectId does not match source tree projectIdCada archivo debe estar en la lista
El manifiesto enumera los archivos de Framework y de escenario. Cada archivo de Framework enumera sus propias reglas y Frames. Un archivo al que nada hace referencia es un error: elimínalo o inclúyelo en la lista.
export function extra(): void {}Añadir este archivo sin hacer referencia a él falla con:
Project contains undeclared source files: rules/extra.ts.Una ruta que está en la lista pero no existe también falla. Aquí el manifiesto apunta a un archivo de escenario que no existe.
{
"formatVersion": "fabled.game-project/v1",
"projectId": "game-your-game-id",
"projectKind": "GAME",
"compilerProfile": "native-game-v1",
"name": "Lantern Keepers",
"entryFramework": "keeper",
"frameworks": ["schemas/keeper.json"],
"scenarios": ["scenarios/new-keeper.json", "scenarios/nope.json"]
}Missing or misplaced project source.Límites de tamaño
Un proyecto puede contener hasta 8 MiB de código fuente, 1000 archivos, 64 Frameworks y 512 escenarios. Fabled también compila tu código fuente en un solo juego. Ese juego compilado debe quedar por debajo de 16 MiB para poder prepararse.

