What is GDNative?¶
Введение¶
GDNative is a Godot-specific technology that lets the engine interact with native shared libraries at run-time. You can use it to run native code without compiling it with the engine.
Примечание
GDNative не является скриптовым языком и не имеет отношения к GDScript.
Различия между GDNative и модулями C++¶
Вы можете использовать как GDNative, так и C++ модули для запуска C или C++ кода в проекте Godot.
Они также позволяют интегрировать в Godot библиотеки сторонних разработчиков. Выбор того или иного варианта зависит от ваших потребностей.
Преимущества GDNative¶
В отличие от модулей, GDNative не требует компиляции исходного кода движка, что облегчает распространение вашей работы. Он дает вам доступ к большинству API, доступных для GDScript C#, позволяя вам разрабатывать игровую логику с полным контролем над производительностью. Это идеальный вариант, если вам нужен высокопроизводительный код, который вы хотели бы распространять в качестве дополнения в библиотеке ассетов.
А также:
GDNative не ограничивается C и C++. Благодаря :ref:` биндингам<doc_what_is_gdnative_third_party_bindings>`, вы можете использовать его со множеством других языков.
Вы можете использовать одну и ту же скомпилированную библиотеку GDNative в редакторе и экспортируемом проекте. С модулями C++ вам придется перекомпилировать все шаблоны экспорта, которые вы планируете использовать, если вам потребуется их функциональность во время выполнения.
GDNative требует компиляции только вашей библиотеки, а не всего движка. Это отличается от модулей C++, которые статически компилируются в движок. Каждый раз, когда вы изменяете модуль, вам нужно перекомпилировать движок. Даже при инкрементных сборках этот процесс происходит медленнее, чем при использовании GDNative.
Преимущества модулей C++¶
Мы рекомендуем использовать C++ модули в случаях, когда GDNative недостаточно':
C++ modules provide deeper integration into the engine. GDNative's access is limited to what the scripting API exposes.
Вы можете использовать модули C++ для предоставления дополнительных возможностей в проекте, не таская с собой файлы родной библиотеки. Это распространяется и на экспортируемые проекты.
C++ modules are supported on all platforms. In contrast, GDNative has only limited support on HTML5 (cannot be used together with multi-threading), and is not supported on Universal Windows Platform (UWP).
Модули C++ могут быть быстрее, чем GDNative, особенно если код требует значительного взаимодействия через API сценариев.
Поддерживаемые языки¶
Разработчики Godot официально поддерживают следующие языковые привязки для GDNative:
C++ (tutorial)
Примечание
Официальная поддержка дополнительных языков в GDNative не планируется. Тем не менее, сообщество предлагает несколько привязок для других языков (см. ниже).
Приведенные ниже привязки разработаны и поддерживаются сообществом:
Примечание
Не все упомянутые здесь привязки могут быть готовыми для использования в продакшене. Прежде чем начинать проект с одним из них, тщательно изучите возможные варианты. Также проверьте, совместима ли привязка с версией Godot, которую вы используете.
Version compatibility¶
Unlike Godot itself, GDNative has stricter version compatibility requirements as it relies on low-level ptrcalls to function.
GDNative add-ons compiled for a given Godot version are only guaranteed to work with the same minor release series. For example, a GDNative add-on compiled for Godot 3.4 will only work with Godot 3.4, 3.4.1, 3.4.2… but not Godot 3.3 or 3.5.