Создание собственных модулей ct.js: структура каталога и манифест
Создание собственных модулей ct.js: структура каталога и манифест
Автоматически переведённая страница
К сожалению, на полный ручной перевод у нас не хватает ресурсов.
Если вы увидели ошибку — отправьте пул-риквест с исправлениями (ссылка для редактирования в конце страницы).
Ct.js поддается модификации, а процесс создания новых модулей довольно прост! Модули или катмоды могут добавлять новый код в рамочную структуру ct.js, хакерские версии встроенных событий и процедур, добавлять новые настройки проекта и редактируемые поля для игровых активов.
Любой модуль представляет собой каталог с файлом module.json
внутри и любыми дополнительными файлами, необходимыми для работы модуля.
Примечание
Название самого каталога также является кодовым названием вашего модуля. Например, если вы заглядываете в папку ct.js/data/ct.libs, то видите, что кодовое название библиотеки ct.place просто place
.
Имя должно быть уникальным, содержать только строчные латинские буквы и (необязательно) точки, не должно содержать подчеркивания и других специальных символов, таких как кавычки и запятые.
Также есть список зарезервированных имен:
core
- имена объектов основной библиотеки ct.js:
templates
,actions
,rooms
,inputs
и т. д.
Ct.js обнаруживает следующую структуру модуля, расположенного в ct.js/data/ct.libs:
mycatmod
|
| (Основной файл)
|-- index.js
|-- module.json (требуется)
|
| (Документация, отображаемая в раскрывающемся панели справа)
|-- README.md
|-- docs
\-- (любое количество файлов .md)
|-- CHANGELOG.md
|-- LICENSE (текстовый файл, настоятельно рекомендуется)
|-- types.d.ts (Заявления TypeScript для автозаполнения кода в редакторе и проверки типов)
|
|-- includes
| \-- (файлы, которые будут скопированы в итоговую игру)
|
\-- injections
\-- (инъекции идут сюда)
(больше о инъекциях здесь)
module.json
позволяет вашему модулю быть обнаруживаемым ct.IDE и содержит базовую информацию, список авторов и описание параметров модуля. Это единственный файл, который требуется.index.js
обычно представляет собой основной код вашего модуля и объединяется со всем остальным кодом скомпилированной игры. Правило thumb — упаковать все ваши зависимости в один файл. Если ваша зависимость — еще один модуль ct, вы можете перечислить этот модуль как такой вmodule.json
. (См. ниже примеры.) Этот файл поддерживает шаблонирование.README.md
— это файл markdown с общей информацией, примерами и особыми примерами и т. д. Если он присутствует, заголовок модуля становится кликабельным в панели со всеми документами по модулям.CHANGELOG.md
должен содержать историю изменений, если таковые имеются.
Структура module.json
Файл module.json
является единственным необходимым файлом для ваших модулей. Его минимальная версия имеет следующий формат:
{
"main": {
"name": "Название модуля",
"tagline": "Краткое описание модуля",
"version": "1.0.0",
"authors": [
{
"name": "Космо Мизраил Горыныч",
"mail": "admin@nersta.ru"
},
{...}
]
}
}
Список зависимостей
В настоящее время котомоды могут указывать зависимости от других модулей с помощью полей dependencies
и optionalDependencies
в файле module.json
. Это позволяет IDE ct предупреждать пользователей об отсутствующих (отключенных) модулях. Пожалуйста, укажите информацию о том, как получить настраиваемые модули, в разделе "readme".
{
"main": {
"name": "JSON-файл примера модуля с зависимостями",
"tagline": "Добавьте зависимости к своим модулям!",
"version": "1.0.0",
"authors": [
...
]
},
"dependencies": ["tween"],
"optionalDependencies": ["place"]
}
Определение категории
Модули могут указывать одну или две категории в module.json, чтобы их можно было отфильтровать на странице настроек проекта. Категории записываются в массиве под ключом main.categories
и могут быть одним из следующих строк:
customization
;desktop
— модули для сборок для настольных компьютеров;fx
;inputs
— модули, которые предоставляют новые методы ввода для системы действий;integrations
;media
;misc
;mobile
;motionPlanning
;networking
;tweaks
;utilities
;
Первая категория также используется для создания иконки в правом нижнем углу карты модуля:
Пример из модуля ct.flow
:
{
"main": {
"name": "Управление потоком и таймингом",
"tagline": "Добавьте высокоуровневые методы для асинхронных событий, например, шлюз, кумулятивная задержка, retriggerable delay.",
"version": "0.0.0",
"authors": [{
"name": "Cosmo Myzrail Gorynich",
"mail": "admin@nersta.ru"
}],
"categories": [
"utilities"
]
}
}
Написание мода
В зависимости от ваших потребностей, вам, вероятно, понадобится:
- Написать основную логику в файле
index.js
; - Вставить пользовательный код в события и процедуры
ct.js
; - Добавить настройки для вашего модуля, которые можно редактировать в
ct.IDE
и читать их обратно с помощью вставок; - Добавить новые редактируемые поля для шаблонов и нескольких типов активов;
- Реализовать новые методы ввода, чтобы интегрировать их в систему действий;
- Создать новые события для шаблонов и залов;
- Добавить типизирование для умного автозаполнения и проверок типов.
Последуйте ссылкам, чтобы найти примеры и справочные материалы по дальнейшей реализации.