Frameworks de code
Comment Fabled exécute votre code
Suivez un projet de la source au jeu : ce qui s'exécute et quand, comment fonctionne le registre, et ce que prouve un scénario.
De la source au jeu
Votre projet passe par cinq étapes. Seule la dernière est le jeu. Les étapes avant elle ne modifient jamais un personnage en ligne.
- Écrire
Vous modifiez les fichiers source dans l'éditeur de code source. Rien ne s'exécute encore.
- Vérifier
Vérifier et prévisualiser compile vos modifications actuelles et exécute chaque scénario, enregistrées ou non. Les problèmes apparaissent dans le panneau Problèmes. Rien n'est publié.
- Enregistrer
Enregistrer le projet conserve la source comme une nouvelle version de votre jeu. Préparer ne fonctionne que sur une version enregistrée, donc enregistrez avant de préparer.
- Préparer
Préparer mon jeu construit des Frameworks, des Cadres et du contenu privés à partir de la version enregistrée. Le serveur vérifie à nouveau le projet, et son verdict est final.
- Jouer
Un joueur crée un personnage à partir de votre Framework. Le constructeur le construit, et les actions le modifient.
Ce qui s'exécute et quand
| Partie | Quand il s'exécute | Ce qu'il fait |
|---|---|---|
| Constructeur | Une seule fois, quand un Élément est créé à partir du Framework. | Transforme les entrées en valeurs de départ. N'écrit jamais. |
| Fonction de registre | Quand l'Élément est construit, dans l'ordre où le schéma déclare les fonctions, puis après chaque action. | Dérive une valeur à partir des valeurs stockées. Une action ne peut pas l'écrire. |
| Action | Quand un joueur utilise un bouton qui l'appelle. | Écrit dans le registre avec ledger.set et ledger.add. |
| Cadre | Chaque fois que la fiche est affichée. | Lit les valeurs stockées et les dessine. Ses boutons appellent des actions. |
| Scénario | Dans Vérifier et prévisualiser, jamais en jeu. | Construit un Élément, exécute des actions et compare chaque valeur et chaque écriture. |
Le registre
Les valeurs d'un Élément ne sont jamais modifiées sur place. Chaque changement est une écriture dans son registre. ledger.set remplace une valeur et ledger.add y ajoute un montant. Les scénarios listent ces écritures, donc vous voyez exactement ce que fait une règle.
Une valeur dérivée vient d'une fonction de registre, donc une action ne peut pas l'écrire. La vérification la refuse :
which is a non-writable state fieldLe constructeur retourne quand même un champ qu'une fonction de registre dérive, avec une valeur provisoire comme 0. La fonction de registre remplace cette valeur quand l'Élément est construit. Un scénario compare ses expectedValues aux valeurs obtenues après les fonctions de registre : écrivez donc la valeur dérivée, pas la valeur provisoire.
Les fonctions de registre s'exécutent dans l'ordre où le schéma les déclare, et chacune voit les résultats des précédentes. Déclarez une fonction après celles dont elle lit les champs. Ici total lit base, mais elle est déclarée en premier, donc elle lit la valeur provisoire :
{
"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 1Utilisez une fonction de registre pour une valeur qui doit suivre d'autres champs et qu'aucune action n'écrit. Utilisez une valeur de constructeur pour un nombre que le personnage possède et que les actions changent, comme hp. Le constructeur la calcule une seule fois, donc un changement ultérieur des champs dont elle vient ne la déplace pas.
Ce que prouve un scénario
- Le constructeur retourne les valeurs attendues.
- Chaque action fait exactement les écritures que vous listez.
- Les valeurs dérivées sont correctes, aussi après une action.
- Chaque fichier est utilisé et tout le projet compile.
Un scénario ne prouve ni l'aspect d'une fiche, ni l'effet d'une règle en jeu. Essayez le jeu préparé pour cela.

