Code frameworks
Limites e erros
Os limites de um projeto e as mensagens que você pode ver, com suas correções.
Limites
| Limite | Valor |
|---|---|
| Tamanho do código-fonte | 8 MiB |
| Tamanho do jogo compilado | 16 MiB |
| Arquivos | 1000 |
| Frameworks | 64 |
| Arquivos de cenário | 512 |
| Presets de conteúdo por Framework | 512 |
| Presets de conteúdo por Jogo | 2048 |
| Ações por Framework | 96 |
| Ações por Jogo | 192 |
| Funções de ledger por Framework | 64 |
| Frames por Framework | 1 a 16 |
| Frames por Jogo | 128 |
| Seções por Framework | 64 |
| Opções de entrada | 2 a 128 |
| Passos de ação criados por projeto | 512 |
| Passos por ação | 64 |
| Passos por cenário | 32 |
| Verificações de ledger por cenário | 32 |
| Escritas esperadas por passo | 64 |
As linhas acima limitam o seu código-fonte. O Fabled também compila o seu código-fonte em um único jogo, e esse jogo compilado precisa ficar abaixo de 16 MiB antes de poder ser preparado.
O servidor verifica os mesmos limites de novo quando você prepara um jogo, e o veredito dele é final.
Erros e correções
Cada linha cita parte de uma mensagem. A mensagem no The Forge pode acrescentar o arquivo, a linha ou os nomes envolvidos.
| Mensagem | Causa | Correção |
|---|---|---|
| Project contains undeclared source files: rules/extra.ts. | Existem arquivos aos quais nada se refere. A mensagem lista até cinco caminhos e informa quantos arquivos ainda restam. | Compare os arquivos da árvore com o manifesto e os esquemas. Apagar uma função de ledger deixa o arquivo de regras dela, então apague esse arquivo também. |
| Missing or misplaced project source. | Um caminho listado não tem arquivo, ou o arquivo está na pasta errada. | Corrija o caminho ou adicione o arquivo. |
| Unrecognized key(s) in object | Um arquivo JSON usa um campo que o formato não tem. | Remova o campo ou corrija a grafia. |
| Input name is hidden, so it must declare a defaultValue. | Uma entrada oculta não tem valor padrão. | Adicione um defaultValue, ou mostre a entrada. |
| must be one of its options | Um valor padrão não está na lista de opções. | Use uma das opções como valor padrão. |
| Parameter max_hp 99 is not between 1 and 40. | Um cenário ou preset quebra os limites de uma entrada. | Mude o valor ou os limites. |
| is not assigned to any section | Existem seções, mas uma entrada não está em nenhuma. | Adicione a entrada a uma seção. |
| Duplicate semantic identity or source path. | Dois itens usam o mesmo id ou o mesmo arquivo. | Dê a cada um seu próprio id e arquivo. |
| Invalid child Framework constraint | Um espaço filho aponta para um Framework de fora do jogo. | Use o id de um Framework deste jogo. |
| Ledger function must target an existing scalar field. | O campo não é um dos que o constructor retorna. | Retorne o campo no constructor, ou corrija o nome. |
| must define the required 'name' value | Um constructor não retorna um name. | Retorne um campo de texto chamado name. |
| The entry framework must be a character constructor. | O Framework de entrada do manifesto não é um personagem. | Aponte entryFramework para um Framework de personagem. |
| while loops are not allowed | Uma regra usa um loop que pode não terminar. | Use for of. |
| is a host global and not part of the TypeScript subset | Uma regra usa Math ou outro global. | Use as chamadas do host, como math.min. |
| import is not allowed | Uma regra importa código. | Coloque a lógica no próprio arquivo de regras. |
| must return a value on every reachable path | Uma função com tipo de retorno tem um caminho sem return. | Retorne um valor em todos os caminhos, ou declare void. |
| is not declared on this schema | Uma ação escreve um campo que o constructor não retorna. | Retorne o campo no constructor, ou corrija o nome. |
| FRAME_BINDING_UNKNOWN | Um Frame liga um campo que não existe. | Ligue um campo declarado. |
| ACTION_MISSING | Um botão nomeia um alias de ação que não existe. | Declare o alias, ou corrija o nome. |
| Expected ordered writes | Uma ação escreveu algo diferente de expectedWrites. | Corrija a regra ou as escritas esperadas. |
| Constructor output does not match its scenario. | expectedValues é diferente do que o constructor retorna. | Corrija o cenário ou o constructor. |
| SCENARIO_COVERAGE_MISSING | Uma ação não tem passo de cenário. | Adicione pelo menos um passo para a ação. |
| is a non-writable state field | Uma ação escreve um valor que uma função de ledger deriva. | Escreva um campo salvo, e deixe a função de ledger derivar o resto. |
| Action accesses require literal keys on self. | Uma ação nomeia um campo com um valor em vez de um texto escrito no código. | Escreva o nome do campo entre aspas. Use uma ação para cada campo. |
| functions but only the action | Um arquivo de ação exporta duas funções. | Exporte uma função por arquivo de ação, ou partilhe o arquivo entre ações. Deixe as funções auxiliares sem export. |
| the step expects it to be refused with | Um passo espera uma recusa, mas a ação não foi recusada. | Remova expectedRefusal, ou corrija a oferta para que ela recuse. |
| Add expectedRefusal | Um passo de lista foi recusado, mas não diz isso. | Adicione expectedRefusal com o código, e nenhuma escrita. |
| Every ledger function needs an executable scenario. | Uma função de ledger não tem entrada na lista ledger de nenhum cenário. | Adicione uma entrada de ledger com o id da função, um currentValue e o resultado esperado. |
| effectful action helpers are not supported | Uma função auxiliar escreve com ledger.set ou ledger.add. | Faça a função auxiliar devolver o valor e escreva-o na ação. |
| is not a writable state field | Uma lista fields nomeia um campo que não é armazenado, como um que uma função de ledger deriva. | Liste apenas campos armazenados que o construtor devolve. |
| is not satisfied: roll.missing | Um cenário usa o método roll sem rolagens registradas, ou um preset o usa, e só o servidor pode rolar. | Em um cenário, adicione poolRolls com um slot por pontuação. Um preset não pode usar roll, então dê ao pool outro método para os presets. |
| The roll dice must be one group such as | Os dados de roll não são um só grupo como "3d6", por exemplo 3d6x5. | Escreva um único grupo de dados e coloque o multiplicador na chave multiplier. |
| outside the min/max of input | Os dados podem dar um total que uma entrada não admite. | Amplie o min e o max das entradas, ou mude os dados. |
| give exactly one roll per input. | O count de roll difere do número de entradas do pool. | Defina count como o número de entradas. |
| must offer exactly the methods of pool | As opções da entrada que escolhe o método diferem dos métodos do pool. | Faça das opções os nomes dos métodos, nem mais nem menos. |
| Required | Falta uma chave de que o formato precisa. O painel Problemas mostra uma lista JSON. | Leia o caminho da lista. Ele nomeia a chave que falta. Adicione-a. |
| Expected number, received string | Uma chave do esquema tem o tipo errado. O painel Problemas mostra uma lista JSON. | Leia o path na lista. Ele nomeia a chave, por exemplo inputs, max_hp, min. Corrija esse valor. |
O The Forge lista os problemas de cada arquivo em Problemas. Um problema de regra também informa a linha e a coluna. Quando o construtor não confere, a mensagem lista as primeiras diferenças e termina com quantas foram omitidas. Corrija as listadas e verifique de novo.

