Когда вы собираете игру, вам нужно выбрать тип движка, который вы хотите использовать.
Эти различные версии также называются вариантами сборки
.
Примечание: Когда вы выберете Project ▸ Build, вы получите отладочную версию.
В этом типе исполняемого файла еще остались функции отладки, такие как профилирование, протоколирование и горячая перезагрузка. Этот вариант выбирается во время разработки игры.
В этом варианте функции отладки отключены. Этот вариант выбирается, когда игра готова к выпуску в магазин приложений.
Этот исполняемый файл запускается без графики и звука. Это означает, что вы можете запускать игровые юнит/дымовые тесты на CI-сервере или даже иметь его в качестве игрового сервера в облаке.
С помощью функции Native Extensions вы можете не только добавлять в движок нативный код, но и удалять стандартные части движка. Например, если вам не нужен физический движок, вы можете удалить его из исполняемого файла.
Мы поддерживаем это с помощью файла, называемого App Manifest
(.appmanifest). В таком файле вы можете указать, какие библиотеки или символы удалить, или, возможно, добавить флаги компиляции
Эта функция находится в стадии разработки и совершенствования.
Манифест приложения фактически имеет ту же структуру и синтаксис, что и манифест расширения. Это позволяет нам объединять контексты для одной платформы вместе при окончательной сборке.
А сам Defold имеет свой собственный манифест сборки в качестве основы (build.yml
). Для каждого расширения, которое собирается, манифесты объединяются следующим образом:
manifest = merge(game.appmanifest, ext.manifest, build.yml)
Это делается для того, чтобы пользователь мог переопределить поведение по умолчанию движка, а также каждого расширения. И, на последнем этапе соединения, мы объединяем манифест приложения с манифестом Defold:
manifest = merge(game.appmanifest, build.yml)
В настоящее время этот процесс можно выполнить вручную, но мы рекомендуем нашим пользователям использовать Manifestation инструмент для создания манифеста приложения. В конечном итоге создание и изменение манифестов приложений будет осуществляться в редакторе.
Вот пример из Manifestation для справки (Может быть изменен. Не копируйте этот файл напрямую. Вместо этого используйте онлайн-инструмент):
platforms:
x86_64-osx:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
x86_64-linux:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
js-web:
context:
excludeLibs: []
excludeJsLibs: []
excludeSymbols: []
libs: []
linkFlags: []
wasm-web:
context:
excludeLibs: []
excludeJsLibs: []
excludeSymbols: []
libs: []
linkFlags: []
x86-win32:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
x86_64-win32:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
armv7-android:
context:
excludeLibs: []
excludeJars: []
excludeSymbols: []
libs: []
linkFlags: []
armv7-ios:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
arm64-ios:
context:
excludeLibs: []
excludeSymbols: []
libs: []
linkFlags: []
Для всех ключевых слов мы применяем фильтр белых списков. Это делается для того, чтобы избежать незаконной работы с путями и доступа к файлам вне папки загрузки сборки.
Здесь вы можете добавить флаги для компилятора конкретной платформы
Этот флаг используется только в том случае, если вы хотите добавить библиотеку, которая является частью платформы или Defold SDK. Все библиотеки в расширениях вашего приложения добавляются автоматически, и вы не должны добавлять их в этот флаг. Вот пример, в котором 3D-физика удалена из движка:
x86_64-linux:
context:
excludeLibs: ["physics","LinearMath","BulletDynamics","BulletCollision"]
excludeSymbols: []
libs: ["physics_2d"]
linkFlags: []
Эти флаги используются для удаления вещей, ранее определенных в контексте платформы. Вот пример того, как удалить расширение Facebook из движка (обратите внимание на (.*)
, которое является регулярным выражением, чтобы помочь удалить нужные элементы).
armv7-android:
context:
excludeLibs: ["facebookext"]
excludeJars: ["(.*)/facebooksdk.jar","(.*)/facebook_android.jar"]
excludeSymbols: ["FacebookExt"]
libs: []
linkFlags: []
Мы могли бы разместить некоторые из них здесь, но мы также считаем, что наше время лучше потратить на завершение функции перемещения конфигурации манифеста в редактор, сделав это простым шагом для пользователя.
Тем временем мы будем обновлять инструмент Manifestation.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB