Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Файл розширення .gdextension

Вступ

Файл .gdextension у вашому проєкті містить інструкції щодо завантаження GDExtension. Інструкції розділені на окремі розділи. Ця сторінка має надати вам короткий огляд різних доступних вам опцій. Щоб отримати вступ до початку роботи з C++ (godot-cpp), перегляньте GDExtension C++ Example.

Розділ конфігурації

Власність

Тип

Опис

символ_запису

Строка (рядок, текст)

Назва функції входу для ініціалізації GDExtension. Ця функція повинна бути визначена у файлі register_types.cpp під час використання godot-cpp. Додавання цього необхідно для роботи розширення.

compatibility_minimum

Строка (рядок, текст)

Мінімальна сумісна версія. Це не дозволяє старішим версіям Godot завантажувати розширення, які залежать від функцій новіших версій Godot. Підтримується лише в Godot 4.1 або пізнішої версії

compatibility_maximum

Строка (рядок, текст)

Максимальна сумісна версія. Це запобігає завантаженню розширення новішими версіями Godot. Підтримується лише в Godot 4.3 або пізнішої версії

перезавантажується

Логічний

Перезавантажує розширення після повторної компіляції. Перезавантаження підтримується для прив’язки godot-cpp у Godot 4.2 або пізнішої версії. Інші мовні прив’язки також можуть підтримувати або не підтримувати це. Цей прапорець слід в основному використовувати для розробки або налагодження розширення.

android_aar_plugin

Логічний

GDExtension є частиною v2 плагіна Android. Під час експорту цей прапорець вказуватиме редактору, що рідні спільні бібліотеки GDExtension експортуються двійковими файлами плагіна Android AAR.

Розділ бібліотек

У цьому розділі ви можете встановити шляхи до скомпільованих двійкових файлів ваших бібліотек GDExtension. Вказавши прапорці функцій, ви можете відфільтрувати, яку версію слід завантажити та експортувати з вашою грою, залежно від того, які прапорці функції активні. Кожен прапор функції має збігатися з прапорами функції Godot або вашими власними прапорами експорту, щоб завантажити їх в експортовану гру. Наприклад, macos.debug означає, що він буде завантажений, якщо Godot має активні прапорці macos і debug. Кожен рядок розділу оцінюється зверху вниз.

Ось приклад того, як це може виглядати:

; A comment line starts with a semicolon. This line is ignored by the engine.
[libraries]

macos.debug = "./bin/libgdexample.macos.template_debug.dylib" ; Inline comments are also allowed.
macos.release = "./bin/libgdexample.macos.template_release.dylib"
windows.debug.x86_32 = "./bin/libgdexample.windows.template_debug.x86_32.dll"
windows.release.x86_32 = "./bin/libgdexample.windows.template_release.x86_32.dll"
windows.debug.x86_64 = "./bin/libgdexample.windows.template_debug.x86_64.dll"
windows.release.x86_64 = "./bin/libgdexample.windows.template_release.x86_64.dll"
linux.debug.x86_64 = "./bin/libgdexample.linux.template_debug.x86_64.so"
linux.release.x86_64 = "./bin/libgdexample.linux.template_release.x86_64.so"
linux.debug.arm64 = "./bin/libgdexample.linux.template_debug.arm64.so"
linux.release.arm64 = "./bin/libgdexample.linux.template_release.arm64.so"
linux.debug.rv64 = "./bin/libgdexample.linux.template_debug.rv64.so"
linux.release.rv64 = "./bin/libgdexample.linux.template_release.rv64.so"

Шляхи можуть бути відносними або абсолютними (починаючи з res://). Рекомендується використовувати відносні шляхи, оскільки вони дозволяють розширенню продовжувати працювати, якщо його встановлено в папку, відмінну від тієї, що вказана в шляху.

Записи зіставляються по порядку, тому, якщо два набори тегів функцій можуть відповідати одній системі, обов’язково розмістіть конкретніші спочатку:

[libraries]

linux.release.editor.x86_64 = "./bin/libgdexample.linux.template_release.x86_64.so"
linux.release.x86_64 = "./bin/libgdexample.linux.noeditor.template_release.x86_64.so"

Ось перелік деяких доступних вбудованих параметрів (щоб дізнатися більше про feature tags):

Ходова система

Прапор

Опис

вікна

операційна система Windows

macos

Операційна система Mac

лінукс

Операційна система Linux

bsd

Операційна система BSD

linux bsd

Операційна система Linux або BSD

android

операційна система Android

ios

операційна система iOS

web

Веб-браузер

Збірки

Прапор

Опис

debug

Збірка з функціями налагодження (збірки редактора завжди мають функції налагодження)

release

Оптимізована збірка без функцій налагодження

editor

Збірка редактора

Архітектура

Прапор

Опис

подвійний

збірка подвійної точності

одинак

збірка одинарної точності

x86_64

64-розрядна збірка x86

arm64

64-розрядна збірка ARM

rv64

64-розрядна збірка RISC-V

risc v

Збірка RISC-V (будь-яка розрядність)

wasm 32

32-розрядна збірка WebAssembly

Розділ значків

За замовчуванням Godot використовує піктограму Node у доку сцени для вузлів GDExtension. Спеціальну піктограму можна встановити за посиланням на її назву та шлях до ресурсу файлу SVG.

Приклад:

[icons]

GDExample = "res://icons/gd_example.svg"

Шлях має вказувати на зображення SVG розміром 16×16 пікселів, з двома увімкненими параметрами зображення в панелі імпорту:

  • Редактор > Масштаб за допомогою функції «Масштаб редактора».

  • Редактор > Перетворити кольори за допомогою теми редактора.

Увімкнення обох опцій гарантує, що піктограма працюватиме максимально наближено до піктограм стандартного редактора. Для отримання додаткової інформації прочитайте посібник зі creating icons.

Розділ залежностей

У цьому розділі ви встановлюєте шляхи залежностей GDExtension. Це використовується внутрішньо для експорту залежностей під час експорту виконуваного файлу вашої гри. Ви можете встановити, яка залежність завантажується, залежно від прапорців функцій експортованого виконуваного файлу. Крім того, ви можете встановити необов'язковий підкаталог для переміщення ваших залежностей. Якщо шлях не вказано, Godot перемістить бібліотеки в той самий каталог, що й виконуваний файл вашої гри.

Попередження

У macOS необхідно мати спільні бібліотеки всередині папки під назвою Frameworks зі структурою каталогів, як-от ця: Game.app/Contents/Frameworks.

[dependencies]

macos.debug = {
    "res://bin/libdependency.macos.template_debug.framework" : "Contents/Frameworks"
}
macos.release = {
    "res://bin/libdependency.macos.template_release.framework" : "Contents/Frameworks"
}
windows.debug = {
    "res://bin/libdependency.windows.template_debug.x86_64.dll" : "",
    "res://bin/libdependency.windows.template_debug.x86_32.dll" : ""
}
windows.release = {
    "res://bin/libdependency.windows.template_release.x86_64.dll" : "",
    "res://bin/libdependency.windows.template_release.x86_32.dll" : ""
}
linux.debug = {
    "res://bin/libdependency.linux.template_debug.x86_64.so" : "",
    "res://bin/libdependency.linux.template_debug.arm64.so" : "",
    "res://bin/libdependency.linux.template_debug.rv64.so" : ""
}
linux.release = {
    "res://bin/libdependency.linux.template_release.x86_64.so" : "",
    "res://bin/libdependency.linux.template_release.arm64.so" : "",
    "res://bin/libdependency.linux.template_release.rv64.so" : ""
}