Фреймворки на коде
Структура проекта и манифест
Куда класть каждый файл, как называть файлы и что должен объявлять манифест.
Папки
| Папка | Содержит | Примечания |
|---|---|---|
| manifest/ | project.json | Ровно один манифест. |
| schemas/ | Один JSON-файл на фреймворк | Идентификатор фреймворка это поле id в файле. |
| rules/ | Файлы правил на TypeScript | Одна экспортируемая функция на файл конструктора или действия. |
| layouts/ | Фреймы | Каждый фрейм это JSON-файл, который указан во фреймворке. |
| scenarios/ | Тесты | Один объект сценария на файл. |
Используйте относительные пути в нижнем регистре без частей «..». Идентификаторы Framework, действий и функций начинаются со строчной буквы, затем могут содержать строчные буквы, цифры, подчёркивания или дефисы, всего до 64 символов.
Манифест
{
"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"]
}- Строка 3 Оставьте projectId, который создал редактор. Он должен совпадать с id проекта.
- Строки 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, прежде чем её можно будет подготовить.

