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

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

Структура проекта и манифест

Куда класть каждый файл, как называть файлы и что должен объявлять манифест.

Папки

ПапкаСодержитПримечания
manifest/project.jsonРовно один манифест.
schemas/Один JSON-файл на фреймворкИдентификатор фреймворка это поле id в файле.
rules/Файлы правил на TypeScriptОдна экспортируемая функция на файл конструктора или действия.
layouts/ФреймыКаждый фрейм это JSON-файл, который указан во фреймворке.
scenarios/ТестыОдин объект сценария на файл.

Используйте относительные пути в нижнем регистре без частей «..». Идентификаторы Framework, действий и функций начинаются со строчной буквы, затем могут содержать строчные буквы, цифры, подчёркивания или дефисы, всего до 64 символов.

Манифест

manifest/project.json
{
  "formatVersion": "fabled.game-project/v1",
  "projectId": "game-your-game-id",
  "projectKind": "GAME",
  "compilerProfile": "native-game-v1",
  "name": "Lantern Keepers",
  "entryFramework": "keeper",
  "frameworks": ["schemas/keeper.json"],
  "scenarios": ["scenarios/new-keeper.json", "scenarios/heal.json"]
}
  1. Строка 3 Оставьте projectId, который создал редактор. Он должен совпадать с id проекта.
  2. Строки 8-9 Пути начинаются от корня проекта.
ПолеОбязательноЗначение
formatVersionДаВсегда fabled.game-project/v1.
projectIdДаИдентификатор, который редактор создал для вашей игры. Оставьте его как есть. Он должен совпадать с идентификатором всего проекта, иначе сохранение не удастся.
projectKindДаGAME для полной игры с персонажем или ADD_ON для дополнительного контента.
compilerProfileДаВсегда native-game-v1.
nameДаНазвание проекта.
descriptionНетДо 2000 символов. Используйте для лицензии или строки с указанием авторов.
entryFrameworkДаФреймворк, который игроки создают первым. Для GAME это игровой персонаж.
frameworksДаПути к файлам фреймворков, от 1 до 64.
scenariosДаПути к файлам сценариев, от 1 до 512.

Манифест принимает только эти поля, а также необязательные tables и rights. Неизвестное поле считается ошибкой.

Если идентификатор в манифесте и идентификатор проекта различаются, проверка останавливается с сообщением:

manifest projectId does not match source tree projectId

Каждый файл должен быть указан

Манифест перечисляет файлы фреймворков и сценариев. Каждый файл фреймворка перечисляет свои правила и фреймы. Файл, на который ничто не ссылается, считается ошибкой: удалите его или укажите.

export function extra(): void {}

Если добавить этот файл и не сослаться на него, будет такая ошибка:

Project contains undeclared source files: rules/extra.ts.

Путь, который указан, но отсутствует, тоже вызывает ошибку. Здесь манифест указывает на файл сценария, которого нет.

{
  "formatVersion": "fabled.game-project/v1",
  "projectId": "game-your-game-id",
  "projectKind": "GAME",
  "compilerProfile": "native-game-v1",
  "name": "Lantern Keepers",
  "entryFramework": "keeper",
  "frameworks": ["schemas/keeper.json"],
  "scenarios": ["scenarios/new-keeper.json", "scenarios/nope.json"]
}
Missing or misplaced project source.

Ограничения размера

Проект может содержать до 8 MiB исходников, 1000 файлов, 64 Framework и 512 сценариев. Fabled также компилирует ваши исходники в одну игру. Эта скомпилированная игра должна занимать меньше 16 MiB, прежде чем её можно будет подготовить.