Frameworks de code
Limites et erreurs
Les limites d'un projet, et les messages que vous pouvez voir avec leurs solutions.
Limites
| Limite | Valeur |
|---|---|
| Taille de la source | 8 MiB |
| Taille du jeu compilé | 16 MiB |
| Fichiers | 1000 |
| Frameworks | 64 |
| Fichiers de scénario | 512 |
| Préréglages de contenu par Framework | 512 |
| Préréglages de contenu par Jeu | 2048 |
| Actions par Framework | 96 |
| Actions par Jeu | 192 |
| Fonctions de registre par Framework | 64 |
| Cadres par Framework | 1 à 16 |
| Cadres par Jeu | 128 |
| Sections par Framework | 64 |
| Options d'entrée | 2 à 128 |
| Étapes d'action rédigées par projet | 512 |
| Étapes par action | 64 |
| Étapes par scénario | 32 |
| Vérifications de registre par scénario | 32 |
| Écritures attendues par étape | 64 |
Les lignes ci-dessus limitent votre source. Fabled compile aussi votre source en un seul jeu, et ce jeu compilé doit rester sous 16 MiB avant de pouvoir être préparé.
Le serveur vérifie à nouveau les mêmes limites quand vous préparez un jeu, et son verdict est final.
Erreurs et solutions
Chaque ligne cite une partie d'un message. Le message dans The Forge peut ajouter le fichier, la ligne ou les noms concernés.
| Message | Cause | Solution |
|---|---|---|
| Project contains undeclared source files: rules/extra.ts. | Des fichiers existent sans que rien y fasse référence. Le message indique jusqu’à cinq chemins et le nombre de fichiers restants. | Comparez les fichiers de l'arbre avec le manifeste et les schémas. Supprimer une fonction de registre laisse son fichier de règles, alors supprimez aussi ce fichier. |
| Missing or misplaced project source. | Un chemin listé n'a pas de fichier, ou le fichier est dans le mauvais dossier. | Corrigez le chemin ou ajoutez le fichier. |
| Unrecognized key(s) in object | Un fichier JSON utilise un champ que le format n'a pas. | Supprimez le champ ou corrigez son orthographe. |
| Input name is hidden, so it must declare a defaultValue. | Une entrée cachée n'a pas de valeur par défaut. | Ajoutez un defaultValue, ou affichez l'entrée. |
| must be one of its options | Une valeur par défaut n'est pas dans la liste des options. | Utilisez l'une des options comme valeur par défaut. |
| Parameter max_hp 99 is not between 1 and 40. | Un scénario ou un préréglage dépasse les bornes d'une entrée. | Changez la valeur ou les bornes. |
| is not assigned to any section | Des sections existent, mais une entrée n'est dans aucune. | Ajoutez l'entrée à une section. |
| Duplicate semantic identity or source path. | Deux éléments partagent un id ou un fichier source. | Donnez à chacun son propre id et son propre fichier. |
| Invalid child Framework constraint | Un emplacement enfant pointe vers un Framework hors du jeu. | Utilisez l'id d'un Framework de ce jeu. |
| Ledger function must target an existing scalar field. | Le champ n'est pas l'un de ceux que le constructeur retourne. | Retournez le champ depuis le constructeur, ou corrigez le nom. |
| must define the required 'name' value | Un constructeur ne retourne pas de nom. | Retournez un champ chaîne appelé name. |
| The entry framework must be a character constructor. | Le Framework d'entrée du manifeste n'est pas un personnage. | Faites pointer entryFramework vers un Framework de personnage. |
| while loops are not allowed | Une règle utilise une boucle qui pourrait ne jamais finir. | Utilisez for of. |
| is a host global and not part of the TypeScript subset | Une règle utilise Math ou une autre globale. | Utilisez les appels hôtes, comme math.min. |
| import is not allowed | Une règle importe du code. | Mettez la logique dans le fichier de règles lui-même. |
| must return a value on every reachable path | Une fonction avec un type de retour a un chemin sans return. | Retournez une valeur sur chaque chemin, ou déclarez void. |
| is not declared on this schema | Une action écrit un champ que le constructeur ne retourne pas. | Retournez le champ depuis le constructeur, ou corrigez le nom. |
| FRAME_BINDING_UNKNOWN | Un Cadre lie un champ qui n'existe pas. | Liez un champ déclaré. |
| ACTION_MISSING | Un bouton nomme un alias d'action qui n'existe pas. | Déclarez l'alias, ou corrigez le nom. |
| Expected ordered writes | Une action a écrit autre chose que expectedWrites. | Corrigez la règle ou les écritures attendues. |
| Constructor output does not match its scenario. | expectedValues diffère de ce que le constructeur retourne. | Corrigez le scénario ou le constructeur. |
| SCENARIO_COVERAGE_MISSING | Une action n'a aucune étape de scénario. | Ajoutez au moins une étape pour l'action. |
| is a non-writable state field | Une action écrit une valeur qu'une fonction de registre dérive. | Écrivez un champ stocké, et laissez la fonction de registre dériver le reste. |
| Action accesses require literal keys on self. | Une action nomme un champ avec une valeur au lieu d'un texte écrit dans le code. | Écrivez le nom du champ entre guillemets. Utilisez une action pour chaque champ. |
| functions but only the action | Un fichier d'action exporte deux fonctions. | Exportez une fonction par fichier d'action, ou partagez le fichier entre actions. Laissez les fonctions d'aide sans export. |
| the step expects it to be refused with | Une étape attend un refus, mais l'action n'a pas été refusée. | Retirez expectedRefusal, ou corrigez l'offre pour qu'elle refuse. |
| Add expectedRefusal | Une étape de liste a été refusée, mais elle ne le dit pas. | Ajoutez expectedRefusal avec le code, et aucune écriture. |
| Every ledger function needs an executable scenario. | Une fonction de registre n'a aucune entrée dans la liste ledger d'un scénario. | Ajoutez une entrée de registre avec l'id de la fonction, un currentValue et le résultat attendu. |
| effectful action helpers are not supported | Une fonction d'aide écrit avec ledger.set ou ledger.add. | Faites renvoyer la valeur par la fonction d'aide et écrivez-la dans l'action. |
| is not a writable state field | Une liste fields nomme un champ qui n'est pas stocké, comme un champ qu'une fonction de registre dérive. | Ne listez que des champs stockés que le constructeur renvoie. |
| is not satisfied: roll.missing | Un scénario utilise la méthode roll sans lancers enregistrés, ou un preset l'utilise, et seul le serveur peut lancer. | Dans un scénario, ajoute poolRolls avec un slot par score. Un preset ne peut pas utiliser roll : donne au pool une autre méthode pour les presets. |
| The roll dice must be one group such as | Les dés de roll ne forment pas un seul groupe comme "3d6", par exemple 3d6x5. | Écris un seul groupe de dés et mets le multiplicateur dans la clé multiplier. |
| outside the min/max of input | Les dés peuvent donner un total qu'une entrée n'admet pas. | Élargissez min et max des entrées, ou changez les dés. |
| give exactly one roll per input. | Le count de roll diffère du nombre d'entrées de la réserve. | Mettez count au nombre d'entrées. |
| must offer exactly the methods of pool | Les options de l'entrée qui choisit la méthode diffèrent des méthodes de la réserve. | Faites des noms de méthodes les options, ni plus ni moins. |
| Required | Une clé dont le format a besoin est absente. Le panneau Problèmes affiche une liste JSON. | Lisez le chemin de la liste. Il nomme la clé manquante. Ajoutez-la. |
| Expected number, received string | Une clé du schéma a le mauvais type. Le panneau Problèmes affiche une liste JSON. | Lisez le path dans la liste. Il nomme la clé, par exemple inputs, max_hp, min. Corrigez cette valeur. |
The Forge liste les problèmes de chaque fichier sous Problèmes. Un problème de règle nomme aussi la ligne et la colonne. Quand le constructeur ne correspond pas, le message liste les premières différences et finit par le nombre de celles omises. Corrigez celles qui sont listées et vérifiez de nouveau.

