Перейти к основному содержимому

Фреймворки на коде

Ограничения и ошибки

Ограничения проекта и сообщения, которые вы можете увидеть, с вариантами исправления.

Ограничения

ОграничениеЗначение
Размер исходного кода8 MiB
Размер скомпилированной игры16 MiB
Файлы1000
Фреймворки64
Файлы сценариев512
Пресеты контента на фреймворк512
Пресеты контента на игру2048
Действия на фреймворк96
Действия на игру192
Функции журнала на фреймворк64
Фреймы на фреймворкот 1 до 16
Фреймы на игру128
Разделы на фреймворк64
Варианты поля вводаот 2 до 128
Авторских шагов действий на проект512
Шагов на действие64
Шагов на сценарий32
Проверок журнала на сценарий32
Ожидаемых записей на шаг64

Строки выше ограничивают ваш исходный код. Fabled также компилирует ваш исходный код в одну игру, и эта скомпилированная игра должна быть меньше 16 MiB, прежде чем её можно будет подготовить.

Сервер ещё раз проверяет те же ограничения, когда вы подготавливаете игру, и его вердикт окончательный.

Ошибки и исправления

Каждая строка приводит часть сообщения. В сообщении в The Forge могут быть добавлены файл, строка или задействованные имена.

СообщениеПричинаИсправление
Project contains undeclared source files: rules/extra.ts.Есть файлы, на которые ничто не ссылается. Сообщение перечисляет до пяти путей и указывает число остальных файлов.Сравните файлы дерева с манифестом и схемами. Если удалить функцию журнала, её файл правил останется, поэтому удалите и этот файл.
Missing or misplaced project source.У указанного пути нет файла, или файл лежит не в той папке.Исправьте путь или добавьте файл.
Unrecognized key(s) in objectВ JSON-файле есть поле, которого нет в формате.Удалите поле или исправьте его написание.
Input name is hidden, so it must declare a defaultValue.У скрытого поля нет значения по умолчанию.Добавьте defaultValue или покажите поле.
must be one of its optionsЗначения по умолчанию нет в списке вариантов.Используйте один из вариантов как значение по умолчанию.
Parameter max_hp 99 is not between 1 and 40.Сценарий или пресет выходит за границы поля ввода.Измените значение или границы.
is not assigned to any sectionРазделы есть, но поле не входит ни в один.Добавьте поле в раздел.
Duplicate semantic identity or source path.У двух элементов один идентификатор или один файл.Дайте каждому свой идентификатор и файл.
Invalid child Framework constraintДочерний слот указывает на фреймворк вне игры.Используйте идентификатор фреймворка из этой игры.
Ledger function must target an existing scalar field.Такого поля конструктор не возвращает.Верните поле из конструктора или исправьте имя.
must define the required 'name' valueКонструктор не возвращает name.Верните строковое поле с именем name.
The entry framework must be a character constructor.Входной фреймворк манифеста не является персонажем.Укажите в entryFramework фреймворк персонажа.
while loops are not allowedПравило использует цикл, который может не закончиться.Используйте for of.
is a host global and not part of the TypeScript subsetПравило использует Math или другой глобальный объект.Используйте вызовы хоста, например math.min.
import is not allowedПравило импортирует код.Поместите логику в сам файл правила.
must return a value on every reachable pathУ функции с типом возврата есть путь без return.Возвращайте значение на каждом пути или объявите void.
is not declared on this schemaДействие пишет поле, которое конструктор не возвращает.Верните поле из конструктора или исправьте имя.
FRAME_BINDING_UNKNOWNФрейм привязан к полю, которого нет.Привяжите объявленное поле.
ACTION_MISSINGКнопка называет псевдоним действия, которого нет.Объявите псевдоним или исправьте имя.
Expected ordered writesДействие записало не то, что указано в expectedWrites.Исправьте правило или ожидаемые записи.
Constructor output does not match its scenario.expectedValues отличается от того, что возвращает конструктор.Исправьте сценарий или конструктор.
SCENARIO_COVERAGE_MISSINGУ действия нет шага сценария.Добавьте хотя бы один шаг для действия.
is a non-writable state fieldДействие пишет значение, которое выводит функция журнала.Пишите хранимое поле, а остальное пусть выводит функция журнала.
Action accesses require literal keys on self.Действие называет поле через значение, а не через строку, записанную в коде.Напишите имя поля в кавычках. Используйте по одному действию на каждое поле.
functions but only the actionФайл действия экспортирует две функции.Экспортируйте одну функцию на файл действия или разделите файл между действиями. Вспомогательные функции оставляйте без export.
the step expects it to be refused withШаг ждёт отказа, но действие не было отклонено.Уберите expectedRefusal или исправьте предложение, чтобы оно отказывало.
Add expectedRefusalШаг со списком был отклонён, но об этом не сказано.Добавьте expectedRefusal с кодом и не указывайте записей.
Every ledger function needs an executable scenario.У функции журнала нет записи в списке ledger ни одного сценария.Добавьте запись ledger с идентификатором функции, currentValue и ожидаемым результатом.
effectful action helpers are not supportedВспомогательная функция пишет через ledger.set или ledger.add.Пусть вспомогательная функция возвращает значение, а запишите его в действии.
is not a writable state fieldСписок fields называет поле, которое не хранится, например такое, которое выводит функция журнала.Перечисляйте только сохранённые поля, которые возвращает конструктор.
is not satisfied: roll.missingСценарий использует метод roll без записанных бросков, либо его использует пресет, а бросать может только сервер.В сценарии добавьте poolRolls с одним слотом на значение. Пресет не может использовать roll, поэтому дайте пулу другой метод для пресетов.
The roll dice must be one group such asКости в roll не образуют одну группу вроде "3d6", например 3d6x5.Запишите одну группу кубиков, а множитель поместите в ключ multiplier.
outside the min/max of inputКости могут дать сумму, которую вход не допускает.Расширьте min и max входов или измените кости.
give exactly one roll per input.Значение count в roll не равно числу входов пула.Задайте count равным числу входов.
must offer exactly the methods of poolВарианты входа, который выбирает метод, не совпадают с методами пула.Сделайте вариантами названия методов, не больше и не меньше.
RequiredНет ключа, который нужен формату. Панель «Проблемы» показывает список JSON.Прочитайте путь в списке. Он называет недостающий ключ. Добавьте его.
Expected number, received stringУ ключа схемы неверный тип. Панель «Проблемы» показывает список JSON.Прочитайте path в списке. Он называет ключ, например inputs, max_hp, min. Исправьте это значение.

The Forge перечисляет проблемы каждого файла в разделе «Проблемы». Для проблемы в правиле также указаны строка и столбец. Если конструктор не совпадает, в сообщении перечислены первые различия, а в конце указано, сколько ещё пропущено. Исправьте перечисленные и проверьте снова.

Сервер проверяет ещё раз