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:

Примечание

Официальная поддержка дополнительных языков в 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.