Saltar al contenido principal

Code frameworks

Estructura del proyecto y manifiesto

Dónde va cada archivo, cómo se nombran y qué debe declarar el manifiesto.

Carpetas

CarpetaContieneNotas
manifest/project.jsonExactamente un manifiesto.
schemas/Un archivo JSON por FrameworkEl id del Framework es el campo id del archivo.
rules/Archivos de reglas en TypeScriptUna función exportada por cada archivo de constructor o de acción.
layouts/FramesCada Frame es un archivo JSON que enumera un Framework.
scenarios/PruebasUn 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

manifest/project.json
{
  "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"]
}
  1. Línea 3 Conserva el projectId que creó el editor. Debe coincidir con el id del proyecto.
  2. Líneas 8-9 Las rutas empiezan en la raíz del proyecto.
CampoObligatorioSignificado
formatVersionSíSiempre fabled.game-project/v1.
projectIdSí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.
projectKindSíGAME para un juego completo con personaje, o ADD_ON para contenido extra.
compilerProfileSíSiempre native-game-v1.
nameSíEl nombre del proyecto.
descriptionNoHasta 2000 caracteres. Úsalo para una licencia o una línea de créditos.
entryFrameworkSíEl Framework que los jugadores crean primero. En un GAME, un personaje jugable.
frameworksSíRutas de los archivos de Framework, de 1 a 64.
scenariosSí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 projectId

Cada 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.