Saltar al contenido principal

Code frameworks

Límites y errores

Los límites de un proyecto y los mensajes que puedes ver, con sus soluciones.

Límites

LímiteValor
Tamaño del código fuente8 MiB
Tamaño del juego compilado16 MiB
Archivos1000
Frameworks64
Archivos de escenario512
Preajustes de contenido por Framework512
Preajustes de contenido por Juego2048
Acciones por Framework96
Acciones por Juego192
Funciones de ledger por Framework64
Frames por FrameworkDe 1 a 16
Frames por Juego128
Secciones por Framework64
Opciones de entradaDe 2 a 128
Pasos de acción creados por proyecto512
Pasos por acción64
Pasos por escenario32
Comprobaciones de ledger por escenario32
Escrituras esperadas por paso64

Las filas de arriba limitan tu código fuente. Fabled también compila tu código fuente en un solo juego, y ese juego compilado debe pesar menos de 16 MiB antes de poder prepararse.

El servidor vuelve a comprobar los mismos límites cuando preparas un juego, y su veredicto es el definitivo.

Errores y soluciones

Cada fila cita parte de un mensaje. El mensaje en The Forge puede añadir el archivo, la línea o los nombres implicados.

MensajeCausaSolución
Project contains undeclared source files: rules/extra.ts.Hay archivos a los que nada hace referencia. El mensaje enumera hasta cinco rutas e indica cuántos archivos más quedan.Compara los archivos del árbol con el manifiesto y los esquemas. Al borrar una función del ledger queda su archivo de reglas, así que borra también ese archivo.
Missing or misplaced project source.Una ruta enumerada no tiene archivo, o el archivo está en la carpeta equivocada.Corrige la ruta o añade el archivo.
Unrecognized key(s) in objectUn archivo JSON usa un campo que el formato no tiene.Elimina el campo o corrige cómo está escrito.
Input name is hidden, so it must declare a defaultValue.Una entrada oculta no tiene valor por defecto.Añade un defaultValue, o muestra la entrada.
must be one of its optionsUn valor por defecto no está en la lista de opciones.Usa una de las opciones como valor por defecto.
Parameter max_hp 99 is not between 1 and 40.Un escenario o preajuste se sale de los límites de una entrada.Cambia el valor o los límites.
is not assigned to any sectionHay secciones, pero una entrada no está en ninguna.Añade la entrada a una sección.
Duplicate semantic identity or source path.Dos elementos comparten un id o un archivo de origen.Dale a cada uno su propio id y archivo.
Invalid child Framework constraintUna ranura hija apunta a un Framework fuera del juego.Usa el id de un Framework de este juego.
Ledger function must target an existing scalar field.El campo no es uno de los que devuelve el constructor.Devuelve el campo desde el constructor, o corrige el nombre.
must define the required 'name' valueUn constructor no devuelve un name.Devuelve un campo de texto llamado name.
The entry framework must be a character constructor.El Framework de entrada del manifiesto no es un personaje.Haz que entryFramework apunte a un Framework de personaje.
while loops are not allowedUna regla usa un bucle que podría no terminar.Usa for of.
is a host global and not part of the TypeScript subsetUna regla usa Math u otro global.Usa las llamadas al host, como math.min.
import is not allowedUna regla importa código.Pon la lógica en el propio archivo de reglas.
must return a value on every reachable pathUna función con tipo de retorno tiene un camino sin return.Devuelve un valor en todos los caminos, o declara void.
is not declared on this schemaUna acción escribe un campo que el constructor no devuelve.Devuelve el campo desde el constructor, o corrige el nombre.
FRAME_BINDING_UNKNOWNUn Frame enlaza un campo que no existe.Enlaza un campo declarado.
ACTION_MISSINGUn botón nombra un alias de acción que no existe.Declara el alias, o corrige el nombre.
Expected ordered writesUna acción escribió algo distinto de expectedWrites.Corrige la regla o las escrituras esperadas.
Constructor output does not match its scenario.expectedValues es distinto de lo que devuelve el constructor.Corrige el escenario o el constructor.
SCENARIO_COVERAGE_MISSINGUna acción no tiene paso de escenario.Añade al menos un paso para la acción.
is a non-writable state fieldUna acción escribe un valor que deriva una función del ledger.Escribe un campo guardado y deja que la función del ledger derive el resto.
Action accesses require literal keys on self.Una acción nombra un campo con un valor en lugar de una cadena escrita en el código.Escribe el nombre del campo entre comillas. Usa una acción para cada campo.
functions but only the actionUn archivo de acción exporta dos funciones.Exporta una función por archivo de acción, o comparte el archivo entre acciones. Deja las funciones auxiliares sin export.
the step expects it to be refused withUn paso espera un rechazo, pero la acción no fue rechazada.Quita expectedRefusal, o corrige la oferta para que rechace.
Add expectedRefusalUn paso de lista fue rechazado, pero no lo indica.Añade expectedRefusal con el código, y sin escrituras.
Every ledger function needs an executable scenario.Una función del ledger no tiene entrada en la lista ledger de ningún escenario.Añade una entrada de ledger con el id de la función, un currentValue y el resultado esperado.
effectful action helpers are not supportedUna función auxiliar escribe con ledger.set o ledger.add.Haz que la función auxiliar devuelva el valor y escríbelo en la acción.
is not a writable state fieldUna lista fields nombra un campo que no se almacena, como uno que deriva una función del ledger.Enumera solo campos almacenados que devuelve el constructor.
is not satisfied: roll.missingUn escenario usa el método roll sin tiradas registradas, o lo usa un preset, y solo el servidor puede tirar.En un escenario, añade poolRolls con un slot por puntuación. Un preset no puede usar roll, así que da al pool otro método para los presets.
The roll dice must be one group such asLos dados de roll no son un solo grupo como "3d6", por ejemplo 3d6x5.Escribe un solo grupo de dados y pon el multiplicador en la clave multiplier.
outside the min/max of inputLos dados pueden dar un total que una entrada no admite.Amplía min y max de las entradas, o cambia los dados.
give exactly one roll per input.El count de roll difiere del número de entradas de la reserva.Pon count igual al número de entradas.
must offer exactly the methods of poolLas opciones de la entrada que elige el método difieren de los métodos de la reserva.Haz que las opciones sean los nombres de los métodos, ni más ni menos.
RequiredFalta una clave que el formato necesita. El panel Problemas muestra una lista JSON.Lee la ruta de la lista. Nombra la clave que falta. Añádela.
Expected number, received stringUna clave del esquema tiene el tipo equivocado. El panel Problemas muestra una lista JSON.Lee el path de la lista. Nombra la clave, por ejemplo inputs, max_hp, min. Corrige ese valor.

The Forge enumera los problemas de cada archivo en Problemas. Un problema de reglas también indica la línea y la columna. Si el constructor no coincide, el mensaje lista las primeras diferencias y termina con cuántas más se omitieron. Corrige las que aparecen y comprueba de nuevo.

El servidor vuelve a comprobar