Code-Frameworks
Projektaufbau und Manifest
Wohin jede Datei gehört, wie Dateien benannt werden und was das Manifest deklarieren muss.
Ordner
| Ordner | Enthält | Hinweise |
|---|---|---|
| manifest/ | project.json | Genau ein Manifest. |
| schemas/ | Eine JSON-Datei pro Framework | Die Framework-ID ist das Feld id der Datei. |
| rules/ | TypeScript-Regeldateien | Eine exportierte Funktion pro Konstruktor- oder Aktionsdatei. |
| layouts/ | Frames | Jeder Frame ist eine JSON-Datei, die ein Framework auflistet. |
| scenarios/ | Tests | Ein Szenario-Objekt pro Datei. |
Nutze relative Pfade in Kleinbuchstaben ohne .. als Teil. IDs von Frameworks, Aktionen und Funktionen beginnen mit einem Kleinbuchstaben, danach folgen Kleinbuchstaben, Ziffern, Unterstriche oder Bindestriche, bis zu 64 Zeichen.
Das Manifest
{
"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"]
}- Zeile 3 Behalte die projectId, die der Editor erstellt hat. Sie muss zur id des Projekts passen.
- Zeilen 8-9 Pfade beginnen im Stammordner des Projekts.
| Feld | Pflicht | Bedeutung |
|---|---|---|
| formatVersion | Ja | Immer fabled.game-project/v1. |
| projectId | Ja | Die ID, die der Editor für dein Spiel erstellt hat. Lass sie unverändert. Sie muss mit der ID des gesamten Projekts übereinstimmen, sonst schlägt das Speichern fehl. |
| projectKind | Ja | GAME für ein volles Spiel mit Charakter oder ADD_ON für zusätzliche Inhalte. |
| compilerProfile | Ja | Immer native-game-v1. |
| name | Ja | Der Projektname. |
| description | Nein | Bis zu 2000 Zeichen. Nutze es für eine Lizenz- oder Credit-Zeile. |
| entryFramework | Ja | Das Framework, das Spieler zuerst erstellen. Bei einem GAME ein spielbarer Charakter. |
| frameworks | Ja | Pfade der Framework-Dateien, 1 bis 64. |
| scenarios | Ja | Pfade der Szenario-Dateien, 1 bis 512. |
Das Manifest akzeptiert nur diese Felder, dazu optionale tables und rights. Ein unbekanntes Feld ist ein Fehler.
Wenn die ID im Manifest und die ID des Projekts voneinander abweichen, bricht die Prüfung ab mit:
manifest projectId does not match source tree projectIdJede Datei muss aufgelistet sein
Das Manifest listet die Framework- und Szenario-Dateien auf. Jede Framework-Datei listet ihre eigenen Regeln und Frames auf. Eine Datei, auf die nichts verweist, ist ein Fehler. Entferne sie oder liste sie auf.
export function extra(): void {}Wird diese Datei hinzugefügt, ohne dass auf sie verwiesen wird, schlägt es fehl mit:
Project contains undeclared source files: rules/extra.ts.Ein Pfad, der aufgelistet ist, aber fehlt, schlägt ebenfalls fehl. Hier verweist das Manifest auf eine Szenario-Datei, die nicht existiert.
{
"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.Größenlimits
Ein Projekt kann bis zu 8 MiB Quelltext, 1000 Dateien, 64 Frameworks und 512 Szenarien enthalten. Fabled kompiliert deinen Quelltext außerdem zu einem Spiel. Dieses kompilierte Spiel muss unter 16 MiB bleiben, bevor es vorbereitet werden kann.

