Первый плагин
Узнайте, как создать свой первый плагин с помощью языкового модуля, включая основной синтаксис и настройку.
Добро пожаловать в руководство по разработке плагинов для языкового модуля C# в Plugify. Это руководство проведет вас через процесс создания вашего первого плагина с использованием C# в рамках фреймворка Plugify. Независимо от того, являетесь ли вы моддером игр, инженером-программистом или разработчиком плагинов, это руководство поможет вам понять основные концепции и шаги, необходимые для создания полнофункционального плагина.
Что такое Plugify?
Plugify — это модульный фреймворк для плагинов, который позволяет разработчикам расширять приложения путем динамической интеграции внешних плагинов. Он предоставляет структурированный подход к разработке плагинов с четкими рекомендациями по структуре плагинов, управлению зависимостями и предоставлению API.
Зачем использовать C#?
Языковой модуль C# позволяет разработчикам создавать плагины с использованием фреймворка .NET, предоставляя надежную и современную среду программирования. Используя сборки .NET, разработчики могут с легкостью расширять приложения, сохраняя при этом гибкость и производительность. Plugify гарантирует, что ваш плагин будет гладко интегрироваться с основным фреймворком, следуя стандартизированной структуре плагинов и API.
Что вы узнаете
В этом руководстве вы:
- Настроите структуру каталогов для вашего плагина.
- Определите манифест плагина (файл
.pplugin
), чтобы зарегистрировать ваш плагин в экосистеме Plugify. - Напишете код на C# для вашего плагина, используя предоставленный API.
- Будете управлять зависимостями для обеспечения правильной инициализации плагина.
- Скомпилируете и упакуете ваш плагин в сборку .NET.
К концу этого руководства у вас будет работающий плагин на C#, который можно будет загрузить во фреймворк Plugify. Давайте начнем!
Структура каталогов
Чтобы обеспечить бесшовную интеграцию с фреймворком Plugify, ваш плагин должен следовать определенной структуре каталогов. Каждый плагин должен быть размещен в своей собственной папке в каталоге plugins/
. Имя папки должно совпадать с именем плагина и следовать этим правилам:
- Разрешенные символы: Буквенно-цифровые (
A-Z, a-z, 0-9
), специальные символы ($, #, @, -
). - Пробелы НЕ допускаются в имени папки.
- Файл конфигурации
.pplugin
должен иметь то же имя, что и папка плагина.
Пример структуры каталогов
- res/plugins/
- plugin_name/
- bin/
- plugin_name.dll
- plugin_name.pplugin
- another-plugin/
- bin/
- another-plugin.dll
- another-plugin.pplugin
Разбор структуры
res/plugins/
– Основной каталог, где хранятся все плагины.plugin_name/
– У каждого плагина есть своя выделенная папка. Имя папки должно совпадать с именем файла.pplugin
.bin/
– Эта подпапка содержит скомпилированные бинарные файлы плагина (.dll
для всех платформ).plugin_name.pplugin
– Файл конфигурации, который определяет метаданные о плагине.
Следуя этой структуре, Plugify может правильно обнаруживать, загружать и управлять плагинами на разных платформах.
Манифест плагина
Каждый плагин во фреймворке Plugify требует файла манифеста с расширением .pplugin
. Этот файл представляет собой конфигурацию на основе JSON, которая предоставляет важные метаданные о плагине, гарантируя, что его можно будет правильно идентифицировать, загрузить и управлять им.
Ключевые обязанности файла манифеста:
- Определяет версию плагина и данные автора.
- Указывает точку входа для выполнения.
- Перечисляет зависимости, необходимые для плагина.
- Объявляет экспортируемые методы, доступные для внешнего взаимодействия.
Пример файла манифеста
Объяснение ключевых полей
entryPoint
: Указывает местоположение скомпилированного бинарного файла плагина (.dll
).languageModule
: Должно быть установлено значение csharp для плагинов на C#.dependencies
: Перечисляет другие необходимые плагины, обеспечивая правильный порядок загрузки.exportedMethods
: Функции, предоставляемые плагином для внешнего взаимодействия.
Почему важен файл манифеста?
- Обеспечивает совместимость – Определяет поддерживаемые версии и платформы.
- Обеспечивает модульность – Перечисляет зависимости для структурированной загрузки плагинов.
- Облегчает интеграцию – Позволяет другим плагинам вызывать экспортируемые методы.
Следуя этой структуре манифеста, Plugify может эффективно загружать и управлять плагинами, обеспечивая бесшовную функциональность в различных проектах.
Написание кода плагина
Создание плагина для Plugify — это просто. Вы можете либо использовать готовый шаблон плагина на C#, доступный в нашем репозитории, либо написать свой плагин с нуля.
Использование шаблона плагина
Самый простой способ начать — это скачать шаблон плагина на C# из нашего репозитория. Он содержит все необходимые файлы, в том числе:
- Предварительно настроенную структуру проекта
- Пример реализации
- Необходимый пакет NuGet Plugify
Просто клонируйте репозиторий, и ваша среда будет готова к разработке.
Написание плагина с нуля
Если вы предпочитаете создавать свой плагин вручную, выполните следующие действия:
Настройка вашего плагина
Каждый плагин должен наследоваться от класса Plugify.Plugin
и опционально реализовывать методы жизненного цикла (OnPluginStart
, OnPluginUpdate
, OnPluginEnd
).
Структура кода плагина
Вот базовый пример реализации плагина на C#:
Понимание методов жизненного цикла плагина
Каждый плагин может определять следующие методы жизненного цикла, которые Plugify будет вызывать в определенное время:
Метод | Описание | Обязательный? |
---|---|---|
OnPluginStart | Вызывается, когда плагин загружен и готов к работе. | ❌ Необязательный |
OnPluginUpdate(float dt) | Вызывается каждый кадр, позволяя периодические обновления. | ❌ Необязательный |
OnPluginEnd | Вызывается, когда плагин выгружается или завершает работу. | ❌ Необязательный |
Эти методы являются необязательными. Если они не реализованы, языковой модуль не будет их вызывать.
Управление зависимостями
Управление зависимостями в Plugify гарантирует, что плагины загружаются в правильном порядке на основе их зависимостей. Система использует топологическую сортировку для определения соответствующей последовательности, предотвращая проблемы с инициализацией, когда плагины зависят от других плагинов.
Как работают зависимости
Каждый плагин может объявлять свои зависимости в поле dependencies
своего манифеста плагина (файла .pplugin
). Ядро Plugify будет:
- Анализировать зависимости, перечисленные в манифесте каждого плагина.
- Сортировать плагины с использованием топологической сортировки, гарантируя, что зависимости загружаются до зависимых плагинов.
- Проверять совместимость платформ и запрашиваемые версии.
Представление зависимостей
Зависимости объявляются с использованием следующего формата JSON в поле dependencies
манифеста плагина:
Объяснение полей
Поле | Тип | Обязательный? | Описание |
---|---|---|---|
name | string | ✅ Да | Уникальное имя зависимого плагина. |
optional | boolean | ❌ Нет (по умолчанию: false ) | Если true , плагин все равно может загрузиться, даже если зависимость отсутствует. |
supportedPlatforms | array of string | ❌ Нет | Указывает платформы, которые поддерживает зависимость (например, windows , linux ). |
requestedVersion | integer | ❌ Нет | Указывает требуемую версию зависимости. Если опущено, допускается любая совместимая версия. |
Сборка плагина
Чтобы собрать ваш плагин, вам необходимо скомпилировать его в сборку .NET (.dll
). Для этой цели вы можете использовать Visual Studio, Rider или VSCode.
Использование Visual Studio или Rider
- Откройте ваш проект в Visual Studio или Rider.
- Щелкните правой кнопкой мыши по проекту и выберите Собрать.
- Скомпилированный файл
.dll
будет находиться в папкеbin/Debug/net9.0
илиbin/Release/net9.0
.
Использование VSCode
- Откройте терминал в каталоге вашего проекта.
- Выполните следующую команду:
- Скомпилированный файл
.dll
будет находиться в папкеbin/Debug/net9.0
илиbin/Release/net9.0
.
Запуск и тестирование плагина
После того, как вы собрали свой плагин, следующим шагом будет его запуск и тестирование в системе Plugify. Для этого выполните следующие действия:
Размещение плагина в правильном каталоге
Убедитесь, что ваш плагин правильно структурирован в папке plugins/
. Ваш каталог плагина должен содержать:
Как только папка плагина и файл манифеста будут правильно размещены, Plugify автоматически обнаружит и попытается загрузить плагин.
Проверка статуса загрузки плагина
Вы можете проверить, успешно ли загрузился ваш плагин, с помощью команд терминала, предоставляемых Plugify. Эти команды позволяют вам запрашивать статус плагинов и устранять потенциальные проблемы.
- Вывести список всех загруженных плагинов:
Это отобразит все загруженные в данный момент плагины. Если ваш плагин есть в списке, это означает, что Plugify успешно его распознал и инициализировал.
- Запросить информацию о конкретном плагине:
Эта команда получает подробную информацию о конкретном плагине, включая его версию, зависимости и поддерживаемые платформы.
Обработка сбоев загрузки плагина
Если ваш менеджер плагинов не сможет загрузиться, Plugify предоставит сообщения об ошибках в консоли. Вы также можете явно запросить статус плагинов с помощью:
Эта команда покажет, не удалось ли инициализировать плагин, и, если да, предоставит причину (например, отсутствующие зависимости, неверная точка входа или ошибки времени выполнения).
Отладка проблем
Если ваш плагин не работает так, как ожидалось:
- Проверьте логи консоли на наличие подробных сообщений об ошибках.
- Убедитесь, что все зависимости правильно установлены и совместимы с игрой/платформой.
- Проверьте, что точка входа в манифесте
.pplugin
соответствует фактическому местоположению бинарного файла плагина. - Включите отладочное журналирование, если необходимо, чтобы получить больше подробностей о проблеме.
Как только ваш плагин загрузится и будет работать правильно, он готов к использованию! Хотите ли вы получить дополнительную информацию о методах отладки?
Заключение
Это руководство охватило основные шаги по созданию плагина на C# для языкового модуля C# в Plugify, включая настройку проекта, написание кода плагина, настройку манифеста и сборку плагина в сборку .NET. Следование этим рекомендациям обеспечивает плавную интеграцию в экосистему Plugify.