title: Нативные расширения - Подробнее
Здесь мы приводим некоторые важные сведения о сборке, чтобы максимально упростить интеграцию с вашими расширениями.
Вот некоторые моменты, которые следует учитывать при создании расширения для движка Defold. Для получения более общих рекомендаций по разработке кроссплатформенного нативного кода, а также расширений/Lua APIs, пожалуйста, обратитесь к Нативные Расширения - Лучшие Практики.
В самом движке мы не используем C++ версии выше C++98. Хотя вы можете использовать более высокую версию для создания своего расширения, имейте в виду, что более высокая версия может содержать изменения ABI. Это может сделать невозможным использование вашего расширения в сочетании с другими расширениями в движке или в хранилище ассетов.
При создании библиотек (например, расширений) полезно придерживаться наименьшего целевого знаменателя.
Для получения наиболее точного списка версий проверьте с помощью build.py.
clang 17clang using NDK r25bEmscripten 3.1.55Microsoft Visual Studio 2022 (clang 17 on build server)apple-clang (clang 17 on build server)Для iOS/macOS мы используем -miphoneos-version-min=11.0 и -mmacosx-version-min=10.13 соответственно.
Мы не указываем конкретную версию C++, поэтому используем версию по умолчанию каждого компилятора.
Недавнее дополнение - возможность собирать сборки для Windows с помощью clang. Это позволяет ускорить сборку на наших серверах, а также оптимизировать наши сборки.
Пользовательский движок построен с использованием статической связки. Основная причина заключается в том, что на iOS версии < 8 несколько исполняемых двоичных файлов в .ipa не допускаются в App Store.
Мы не используем никаких исключений в движке. Они обычно не используются в игровых движках, поскольку данные (в основном) известны заранее, во время разработки. Удаление поддержки исключений C++ уменьшает размер исполняемого файла и улучшает производительность во время выполнения.