Здесь мы приводим некоторые важные сведения о сборке, чтобы максимально упростить интеграцию с вашими расширениями.
Вот некоторые моменты, которые следует учитывать при создании расширения для движка Defold. Для получения более общих рекомендаций по разработке кроссплатформенного нативного кода, а также расширений/Lua APIs, пожалуйста, обратитесь к Нативные Расширения - Лучшие Практики.
В самом движке мы не используем C++ версии выше C++98. Хотя вы можете использовать более высокую версию для создания своего расширения, имейте в виду, что более высокая версия может содержать изменения ABI. Это может сделать невозможным использование вашего расширения в сочетании с другими расширениями в движке или в хранилище ассетов.
При создании библиотек (например, расширений) полезно придерживаться наименьшего целевого знаменателя.
Для получения наиболее точного списка версий проверьте с помощью build.py.
clang 17
clang
using NDK r25b
Emscripten 3.1.55
Microsoft 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++ уменьшает размер исполняемого файла и улучшает производительность во время выполнения.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB