reckfellENGINE

Как устроено нативное расширение

Библиотека, C-интерфейс, метаданные, регистрация и границы доступа.

На этой странице

ReckfellExtension — механизм подключения нативного кода через отдельную библиотеку и C-интерфейс. Расширение собирается отдельно от движка; для добавления библиотеки с доступным API пересборка самого движка не нужна.

Из чего оно состоит

ЧастьНазначение
DLL/so/dylibВаш скомпилированный нативный код для конкретной платформы
.reckfellextensionТочка входа, выбор библиотеки по тегам, ограничения версии и данные упаковки
reckfellextension_interface.hC-типы и указатели на функции для взаимодействия с движком
reckfellextension_interface.jsonМашиночитаемое описание того же низкоуровневого интерфейса
extension_api.jsonМетаданные классов, методов, встроенных типов и размеров для привязок; это не просто список C-функций

Языковая обёртка — дополнительный слой поверх этого контракта. Сам механизм не является языком программирования. C# Entity/Resource обычно используют управляемую интеграцию SDK; для них не нужно писать описание нативной библиотеки. При этом код C# может вызывать зарегистрированный нативный API через доступную интеграцию — утверждение, что эти системы «не связаны», вводит в заблуждение.

Путь загрузки

  1. Менеджер получает описание и выбирает библиотеку для активных признаков ОС/архитектуры.
  2. Загрузчик открывает её и находит экспортированный entry_symbol.
  3. Функция входа получает адрес resolver, указатель библиотеки и структуру инициализации. Нужные C-функции разрешаются по точным именам.
  4. Callback инициализации регистрирует классы/константы на подходящем уровне. В примерах это Scene, с базовым типом Entity.
  5. Код проекта использует зарегистрированное API. При завершении расширение снимает регистрации в callback деинициализации.

Для классов нужны корректные данные создания и жизненного цикла. Абстрактный класс из учебного примера намеренно нельзя инстанцировать; он доказывает регистрацию и передачу констант, а не готовность произвольного игрового компонента.

Где проходит граница

Использование C/C++ не открывает автоматически приватные классы и функции Source. Если нужной операции нет в интерфейсе или доступном API, потребуется другая точка расширения либо изменение/модуль движка с отдельной сборкой.

Номер продукта, архитектура, точность встроенных чисел, заголовок и метаданные должны быть согласованы. Проверяйте наличие разрешаемых функций и реальную работу нужного метода; сохранённое в SDK имя может оказаться заглушкой. Текущий пример и ограничения относятся к установленной сборке, а не к обещанию всех будущих версий.

Не смешивайте владение объектами, временное представление Variant и непрозрачные handles. Контракт конкретной функции определяет, кто создаёт и уничтожает данные; простое копирование байтов объекта не переносит его состояние и срок жизни в другой процесс.

Что делать дальше

Пример C17 даёт полный маленький проект проверки ABI. Описание библиотеки объясняет выбор бинарника и ошибки загрузки. Метаданные интерфейса нужны при разработке собственной привязки.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.