Aller au contenu principal

Frameworks de code

Limites et erreurs

Les limites d'un projet, et les messages que vous pouvez voir avec leurs solutions.

Limites

LimiteValeur
Taille de la source8 MiB
Taille du jeu compilé16 MiB
Fichiers1000
Frameworks64
Fichiers de scénario512
Préréglages de contenu par Framework512
Préréglages de contenu par Jeu2048
Actions par Framework96
Actions par Jeu192
Fonctions de registre par Framework64
Cadres par Framework1 à 16
Cadres par Jeu128
Sections par Framework64
Options d'entrée2 à 128
Étapes d'action rédigées par projet512
Étapes par action64
Étapes par scénario32
Vérifications de registre par scénario32
Écritures attendues par étape64

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.

MessageCauseSolution
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 objectUn 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 optionsUne 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 sectionDes 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 constraintUn 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' valueUn 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 allowedUne règle utilise une boucle qui pourrait ne jamais finir.Utilisez for of.
is a host global and not part of the TypeScript subsetUne règle utilise Math ou une autre globale.Utilisez les appels hôtes, comme math.min.
import is not allowedUne règle importe du code.Mettez la logique dans le fichier de règles lui-même.
must return a value on every reachable pathUne 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 schemaUne action écrit un champ que le constructeur ne retourne pas.Retournez le champ depuis le constructeur, ou corrigez le nom.
FRAME_BINDING_UNKNOWNUn Cadre lie un champ qui n'existe pas.Liez un champ déclaré.
ACTION_MISSINGUn bouton nomme un alias d'action qui n'existe pas.Déclarez l'alias, ou corrigez le nom.
Expected ordered writesUne 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_MISSINGUne action n'a aucune étape de scénario.Ajoutez au moins une étape pour l'action.
is a non-writable state fieldUne 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 actionUn 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 withUne étape attend un refus, mais l'action n'a pas été refusée.Retirez expectedRefusal, ou corrigez l'offre pour qu'elle refuse.
Add expectedRefusalUne é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 supportedUne 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 fieldUne 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.missingUn 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 asLes 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 inputLes 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 poolLes 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.
RequiredUne 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 stringUne 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.

Le serveur vérifie à nouveau