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

Создание собственных модулей 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"
        ]
    }
}









 
 
 


Написание мода

В зависимости от ваших потребностей, вам, вероятно, понадобится:

Последуйте ссылкам, чтобы найти примеры и справочные материалы по дальнейшей реализации.