This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Файл game.project содержит все настройки проекта. Он должен находиться в корневой папке проекта и называться game.project. Первое, что делает движок при старте и запуске игры, это ищет данный файл.
Каждая настройка в файле относится к определенной категории. При открытии файла Defold представляет все настройки, сгруппированные по категориям.
Формат файла настроек представляет собой простой текст (формат INI) и может быть отредактирован любым стандартным текстовым редактором. Формат выглядит следующим образом:
[category1]
setting1 = value
setting2 = value
[category2]
...
Наглядный пример:
[bootstrap]
main_collection = /main/main.collectionc
что означает, что настройка main_collection относится к категории bootstrap. Во всех случаях, когда используется ссылка на файл, как в примере выше, путь должен быть дополнен символом ‘c’. Это означает, что вы ссылаетесь на скомпилированную версию файла. Также следует учитывать, что папка, содержащая файл game.project, будет корнем проекта, поэтому в пути установки присутствует начальный символ ‘/’.
Возможно получить доступ к значениям из game.project во время выполнения с помощью sys.get_config_string(key)
, sys.get_config_number(key)
и sys.get_config_int(key)
. Примеры:
local title = sys.get_config_string("project.title")
local gravity_y = sys.get_config_number("physics.gravity_y")
Ключ — это комбинация названия категории и имени настройки, разделённые точкой, записанные строчными буквами с заменой всех пробелов на подчёркивания. Примеры: поле “Title” из категории “Project” превращается в project.title
, а поле “Gravity Y” из категории “Physics” — в physics.gravity_y
.
Ниже перечислены все доступные настройки, сгруппированные по категориям.
Название приложения.
Версия приложения.
Если опция отмечена, движок будет записывать файл журнала. Если запущено несколько экземпляров из редактора, файл будет называться instance_2_log.txt, где 2
— индекс экземпляра. Если запущен один экземпляр или используется сборка, файл будет называться log.txt. Файл журнала будет сохранён в одном из следующих путей (в порядке приоритета):
NSDocumentDirectory
Context.getExternalFilesDir()
NSApplicationSupportDirectory
CSIDL_APPDATA
(например, C:\Users\<username>\AppData\Roaming
)Context.getFilesDir()
HOME
Минимальный уровень логирования. Будут отображаться только логи с этим уровнем или выше.
Включает сжатие архивов при упаковке в бандл. Стоит отметить, что в настоящее время это относится ко всем платформам, кроме Android, где apk содержит все данные в уже сжатом виде.
Список URL на Library URL проекта. За подробностями обращайтесь к руководству по библиотекам.
custom_resources
Custom resources are bundled in the main game archive using the Custom Resources field in game.project.
The Custom Resources field should contain a comma separated list of resources that will be included in the main game archive. If directories are specified, all files and directories in that directory are recursively included. You can read the files using sys.load_resource()
.
Дополнительную информацию о пользовательских ресурсах см. в разделе Файловый доступ.
bundle_resources
Bundle resources are additional files and folders located as a part of your application bundle using the Bundle Resources field in game.project.
The Bundle Resources field should contain a comma separated list of directories containing resource files and folders that should be copied as-is into the resulting package when bundling. The directories must be specified with an absolute path from the project root, for example /res
. The resource directory must contain subfolders named by platform
, or architecture-platform
.
Supported platforms are ios
, android
, osx
, win32
, linux
, web
, switch
A subfolder named common
is also allowed, containing resource files common for all platforms. Example:
res
├── win32
│ └── mywin32file.txt
├── common
│ └── mycommonfile.txt
└── android
├── myandroidfile.txt
└── res
└── xml
└── filepaths.xml
You can use sys.get_application_path()
to get the path to where the application is stored. Use this application base path to create the final absolute path to the files you need access to. Once you have the absolute path of these files you can use the io.*
and os.*
functions to access the files.
Дополнительную информацию о включаемых в бандл ресурсах см. в разделе Файловый доступ.
bundle_exclude_resources
Список ресурсов, разделённых запятыми, которые не должны включаться в бандл. Эти ресурсы будут исключены из результата сбора шага bundle_resources
.
Ссылка на файл коллекции, используемой для запуска приложения. По умолчанию: /logic/main.collection
.
Файл настройки рендера, определяющий пайплайн рендеринга. По умолчанию: /builtins/render/default.render
.
Список директорий, разделённых пробелами, которые должны быть доступны из проекта через общий доступ к библиотеке. Подробнее см. в руководстве по библиотекам.
Если опция отмечена, все типы скриптов будут использовать единое состояние Lua.
Позволяет движку продолжать выполнение, пока окно приложения свернуто (только для настольных платформ).
Частота обновления функции fixed_update(self, dt)
в герцах.
Максимальный шаг времени (в секундах), если за один кадр прошло слишком много времени. Превышение этого значения будет ограничено.
Ширина окна приложения в пикселях.
Высота окна приложения в пикселях.
Создаёт back buffer высокого разрешения на дисплеях с поддержкой High DPI. Как правило, игра будет рендериться в двойном разрешении относительно значений Width и Height, которые по-прежнему будут логическим разрешением в скриптах и свойствах.
Количество сэмплов для суперсэмплинга (SSAA). Задаёт GLFW_FSAA_SAMPLES. Значение 0
отключает сглаживание.
Если опция отмечена, приложение запускается в полноэкранном режиме. Если нет — в оконном.
Желаемая частота кадров в герцах. Значение 0
— переменная частота. При значении больше 0
частота фиксируется и ограничивается в рантайме реальной частотой обновления. Это означает, что игровой цикл не сможет выполняться дважды за кадр движка. Используйте sys.set_update_frequency(hz)
для изменения этого значения во время выполнения. Работает и в headless-сборках.
Целое значение, управляющее VSync. 0
— отключает, по умолчанию 1
. При использовании OpenGL это значение определяет количество кадров между обновлениями буфера (swap interval). Для Vulkan VSync контролируется напрямую этим значением, так как понятия swap interval нет.
Файл профилей дисплея. По умолчанию: /builtins/render/default.display_profilesc
. Подробнее см. в руководстве по GUI Layouts.
Если опция включена, приложение автоматически переключает ориентацию между альбомной и портретной при повороте устройства. Приложение разработки не поддерживает эту настройку.
Компонент красного цвета для очистки экрана. Используется в render-скрипте и при создании окна.
Компонент зелёного цвета для очистки экрана. Используется в render-скрипте и при создании окна.
Компонент синего цвета для очистки экрана. Используется в render-скрипте и при создании окна.
Компонент альфа-канала для очистки экрана. Используется в render-скрипте и при создании окна.
Тип физики: 2D
или 3D
.
Гравитация по оси X (м/с²).
Гравитация по оси Y (м/с²).
Гравитация по оси Z (м/с²).
Если опция отмечена, физика будет визуализироваться для отладки.
Значение альфа-компонента для визуализированной физики (0
–1
).
Максимальное количество одновременных физических миров. По умолчанию 4
. Если загружается больше через прокси, значение необходимо увеличить. Каждый мир использует значительный объём памяти.
Коэффициент масштабирования физики относительно игрового мира для повышения точности (0.01
–1.0
). Например, при 0.02
— 50 единиц равны 1 метру (1 / 0.02
).
Если включено, движок будет применять трансформации игрового объекта (позиция, масштаб, поворот) к привязанным компонентам столкновений.
Если включено, физика будет обновляться фиксированным шагом времени, независимым от частоты кадров. Используется вместе с функцией fixed_update(self, dt)
и настройкой engine.fixed_update_frequency
. Рекомендуется для новых проектов.
Размер отрисовки единичных объектов физики, таких как триады и нормали.
Максимум коллизий, передаваемых в скрипты.
Максимум точек контакта, передаваемых в скрипты.
Игнорировать импульсы столкновений с величиной меньше указанной.
Максимальное количество запросов 2D-рейкастинга в кадре.
Максимальное количество запросов 3D-рейкастинга в кадре.
Максимальное количество пересекающихся физических триггеров.
Определяет фильтрацию, используемую при уменьшении текстуры (minification filtering).
Определяет фильтрацию, используемую при увеличении текстуры (magnification filtering).
Максимальное количество вызовов рендеринга.
Количество символов, заранее выделенных в буфере рендеринга текста — то есть сколько символов может быть отображено за кадр.
Максимальное количество отладочных вершин. Используется, в том числе, для отрисовки физических форм.
Файл профилей текстур, используемый для проекта. По умолчанию: /builtins/graphics/default.texture_profiles
.
Проверяет возвращаемые значения всех графических вызовов и записывает ошибки в журнал.
Подсказка по версии контекста OpenGL. Если выбрана конкретная версия, она используется как минимально допустимая. Не применяется к OpenGL ES.
Устанавливает профиль OpenGL ‘core’ при создании контекста. Core-профиль исключает устаревшие функции OpenGL, такие как немедленный режим отрисовки (immediate mode). Не применяется к OpenGL ES.
Количество секунд ожидания перед началом повторного ввода при удержании клавиши.
Количество секунд между повторениями удерживаемого ввода.
Ссылка на файл конфигурации геймпадов, сопоставляющий сигналы геймпада с ОС. По умолчанию: /builtins/input/default.gamepads
.
Ссылка на файл конфигурации ввода, сопоставляющий аппаратные события с действиями. По умолчанию: /input/game.input_binding
.
Если включено, движок будет получать события акселерометра каждый кадр. Отключение может незначительно повысить производительность.
Если включено, активируется HTTP-кэш, что позволяет ускорить загрузку ресурсов по сети на устройстве во время выполнения.
Местоположение сборки проекта в формате URI.
Максимальное количество ресурсов, которые могут быть загружены одновременно.
Таймаут HTTP в секундах. Значение 0
отключает таймаут.
Количество рабочих потоков, используемых HTTP-сервисом.
Если включено, активируется HTTP-кэш для сетевых запросов (используется с http.request()
). Кэш сохраняет ответ, связанный с запросом, и повторно использует его при следующих вызовах. Поддерживаются заголовки ETag
и Cache-Control: max-age
.
Файл, содержащий корневые SSL-сертификаты, используемые для проверки цепочки сертификатов во время SSL-рукопожатия.
Максимальное количество экземпляров игровых объектов в коллекции. По умолчанию — 1024
. (См. информацию по оптимизации количества компонентов).
Максимальное количество игровых объектов во входном стеке.
Глобальное усиление (громкость), от 0
до 1
.
Максимальное количество звуковых ресурсов, то есть уникальных звуковых файлов во время выполнения.
(В настоящее время не используется) Максимальное количество одновременно используемых звуковых буферов.
(В настоящее время не используется) Максимальное количество одновременно воспроизводимых звуков.
Максимальное количество одновременно воспроизводимых экземпляров звуков.
Если включено, система звука будет использовать потоки для воспроизведения, что снижает риск запинаний при высокой нагрузке на основной поток.
Если включено, система будет использовать потоковую загрузку исходных звуковых файлов.
Максимальный размер кэша звуковых чанков. По умолчанию — 2097152
байт.
Это значение должно быть больше произведения количества загруженных звуков и размера чанка.
Иначе новые чанки могут вытесняться каждый кадр.
Размер в байтах каждого потокового чанка.
Размер в байтах предварительного чанка при чтении звуков из архива.
Максимальное количество спрайтов на коллекцию. (См. информацию по оптимизации количества компонентов).
Если опция включена, спрайты могут отображаться с дробным позиционированием, не выровненным по пиксельной сетке.
Максимальное количество тайлмапов на коллекцию. (См. информацию по оптимизации количества компонентов).
Максимальное количество одновременно отображаемых тайлов в коллекции.
Максимальное количество компонентов Spine-моделей. (См. информацию по оптимизации количества компонентов).
Максимальное количество компонентов Mesh на коллекцию. (См. информацию по оптимизации количества компонентов).
Максимальное количество компонентов Model на коллекцию. (См. информацию по оптимизации количества компонентов).
Максимальное количество компонентов GUI. (См. информацию по оптимизации количества компонентов).
Максимальное количество одновременно активных эмиттеров.
Максимальное количество одновременно отображаемых частиц.
Максимальное количество одновременно активных анимаций в GUI.
Максимальное количество компонентов Label. (См. информацию по оптимизации количества компонентов).
Если опция включена, Label могут отображаться с дробным позиционированием, не выровненным по пикселям.
Максимальное количество одновременно активных эмиттеров. (См. информацию по оптимизации количества компонентов).
Максимальное количество одновременно отображаемых частиц.
Максимальное количество прокси-коллекций. (См. информацию по оптимизации количества компонентов).
Максимальное количество фабрик коллекций. (См. информацию по оптимизации количества компонентов).
Максимальное количество фабрик игровых объектов. (См. информацию по оптимизации количества компонентов).
Файл изображения (.png), используемый в качестве иконки приложения при заданных размерах W
× H
.
Файл раскадровки (.storyboard). Подробнее о создании см. в руководстве по iOS.
(iOS 6 и ниже) Если опция не включена, иконки получат глянцевое покрытие автоматически. Если включена — иконки считаются уже готовыми к использованию.
Идентификатор бандла позволяет iOS распознавать обновления вашего приложения. Идентификатор должен быть зарегистрирован в Apple и уникален для приложения. Нельзя использовать один и тот же идентификатор как для iOS, так и для macOS. Он должен состоять минимум из двух сегментов, разделённых точками. Каждый сегмент должен начинаться с буквы и может содержать только буквенно-цифровые символы, подчёркивания или дефисы (-
) (см. CFBundleIdentifier
).
Короткое имя бандла (до 15 символов) (см. CFBundleName
).
Версия бандла — число или строка в формате x.y.z
(см. CFBundleVersion
).
Если задано, используется указанный файл info.plist
при сборке приложения.
Манифест конфиденциальности Apple для приложения. По умолчанию: /builtins/manifests/ios/PrivacyInfo.xcprivacy
.
Если задано, права (entitlements) из предоставленного provisioning profile (.entitlements
, .xcent
, .plist
) будут объединены с правами из профиля, указанного при сборке.
Если включено, пользовательские entitlements заменят права из provisioning profile. Используется только вместе с настройкой Custom Entitlements.
Язык, используемый приложением, если в списке Localizations
отсутствует предпочтительный язык пользователя (см. CFBundleDevelopmentRegion
). Используйте двухбуквенный ISO 639-1, если доступен, или трёхбуквенный ISO 639-2.
Поле со списком поддерживаемых локалей в виде строк, разделённых запятыми. Каждая строка — это название языка или ISO-код языка (см. CFBundleLocalizations
).
Файл изображения (.png), используемый как иконка приложения при заданных размерах W
× H
.
Файлы изображений (.png), используемые в качестве кастомных иконок push-уведомлений на Android. Иконки будут использоваться как для локальных, так и для удалённых уведомлений. Если не задано, по умолчанию будет использоваться иконка приложения.
Поле в JSON-пейлоуде, используемое в качестве заголовка push-уведомления. Если оставить пустым, заголовком будет имя приложения.
Поле в JSON-пейлоуде, используемое в качестве текста push-уведомления. Если оставить пустым, будет использовано поле alert
, аналогично поведению на iOS.
Целочисленное значение, указывающее версию приложения. Увеличивайте при каждом обновлении.
Идентификатор пакета. Должен состоять минимум из двух сегментов, разделённых точками. Каждый сегмент должен начинаться с буквы и содержать только буквенно-цифровые символы или подчёркивания.
Sender Id для Google Cloud Messaging. Установите строку, выданную Google, чтобы включить push-уведомления.
Если указано, используется заданный Android-манифест (XML-файл) при сборке.
Указывает, какой магазин использовать. Допустимые значения: Amazon
и GooglePlay
. См. extension-iap для получения дополнительной информации.
Определяет метод получения текстового ввода на Android-устройствах. Допустимые значения: KeyEvent
(старый метод) и HiddenInputField
(новый).
Если включено, скрывает навигационные и статус-бары и позволяет приложению обрабатывать все касания по экрану.
Определяет, может ли приложение быть отлажено с помощью таких инструментов, как GAPID или Android Studio. Устанавливает флаг android:debuggable
в Android-манифесте (официальная документация).
Указывает, должен ли установщик извлекать нативные библиотеки из APK в файловую систему. Если установлено в false
, библиотеки остаются внутри APK в несжатом виде. Это увеличивает размер APK, но ускоряет загрузку, так как библиотеки загружаются напрямую. Устанавливает флаг android:extractNativeLibs
в Android-манифесте (официальная документация).
Файл изображения (.png), используемый как иконка приложения на macOS.
Если указано, используется заданный файл info.plist при сборке приложения.
Манифест конфиденциальности Apple для приложения. По умолчанию используется /builtins/manifests/osx/PrivacyInfo.xcprivacy
.
Идентификатор бандла позволяет macOS распознавать обновления вашего приложения. Идентификатор должен быть зарегистрирован в Apple и уникален для приложения. Нельзя использовать один и тот же идентификатор как для iOS, так и для macOS. Он должен состоять минимум из двух сегментов, разделённых точками. Каждый сегмент должен начинаться с буквы и содержать только буквенно-цифровые символы, подчёркивания или дефисы.
Язык, используемый приложением, если в списке Localizations
отсутствует предпочтительный язык пользователя (см. CFBundleDevelopmentRegion
). Используйте двухбуквенный ISO 639-1, если доступен, или трёхбуквенный ISO 639-2.
Список поддерживаемых локалей, указанный через запятую. Каждое значение — это название языка или его ISO-дизигнатор (см. CFBundleLocalizations
).
Файл изображения (.ico), используемый как иконка приложения на Windows. Подробнее о создании .ico файла см. в руководстве по Windows.
См. руководство по платформе HTML5 для получения дополнительной информации о большинстве из этих опций.
Размер кучи в мегабайтах, выделяемый Emscripten.
HTML-шаблон, используемый при сборке. По умолчанию — /builtins/manifests/web/engine_template.html
.
Файл CSS-темы, используемый при сборке. По умолчанию — /builtins/manifests/web/light_theme.css
.
Если указано, заданное изображение отображается при запуске вместо логотипа Defold.
При сборке HTML5-версии данные игры разбиваются на архивные файлы. При запуске движок считывает их в память. Здесь задаётся префикс пути к этим файлам.
Суффикс, добавляемый к именам архивов. Полезен, например, для принудительной загрузки свежего содержимого с CDN (?version2
и т.п.).
Список аргументов, передаваемых движку при запуске.
Включает кнопку полноэкранного режима в index.html
.
Добавляет ссылку «Made With Defold» в index.html
.
Если включено, в консоли браузера будет выведена информация о движке и его версии при запуске (с помощью console.log()
).
Определяет способ масштабирования canvas-элемента.
Количество попыток повторной загрузки файла при запуске движка (см. Retry Time
).
Интервал в секундах между попытками загрузки файла при сбое (см. Retry Count
).
Если включено, графический контекст будет иметь прозрачный фон.
Если включено, транзакции IAP завершаются автоматически. Если отключено, необходимо вручную вызывать iap.finish()
после успешной транзакции.
Если указано, используется заданный файл закрытого ключа при сборке live update-контента. Если ключ не задан, он будет сгенерирован автоматически.
Если указано, используется заданный файл открытого ключа при сборке live update-контента. Если ключ не задан, он будет сгенерирован автоматически.
Если задан, используется манифест приложения для настройки сборки движка. Это позволяет удалить неиспользуемые части движка и уменьшить размер итогового бинарного файла. Подробнее об исключении ненужных возможностей читайте в руководстве по манифесту приложения.
Если включено, разрешается профилирование CPU в release-сборках. Обычно доступ к профилированию возможен только в debug-сборках.
При запуске движка из командной строки можно указать конфигурационные значения, переопределяющие настройки game.project:
# Указать коллекцию начальной загрузки
$ dmengine --config=bootstrap.main_collection=/my.collectionc
# Установить два пользовательских конфигурационных значения
$ dmengine --config=test.my_value=4711 --config=test2.my_value2=1234
Пользовательские значения, как и любое другое значение конфигурации, могут быть считаны с помощью sys.get_config()
:
local my_value = sys.get_config_number("test.my_value")
local my_value2 = sys.get_config_string("test.my_value2")
The game.project settings file contains many values specifying the maximum number of a certain resource that can exist at the same time, often counted per loaded collection (also called world). The Defold engine will use these max values to preallocate memory for this amount of memory to avoid dynamic allocations and memory fragmentation while the game is running.
The Defold data structures used to represent components and other resources are optimized to use as little memory as possible but care should still be taken when setting the values to avoid allocating more memory than is actually necessary.
To further optimize memory usage the Defold build process will analyse the content of the game and override the max counts if it is possible to know for certain the exact amount:
Возможно определить собственные настройки как для основного проекта, так и для нативных расширений. Для основного проекта они указываются в файле game.properties
в корне проекта. Для нативного расширения — в файле ext.properties
рядом с ext.manifest
.
Файл настроек использует тот же INI-формат, что и game.project, а атрибуты свойств указываются с помощью точечной нотации с суффиксами:
[my_category]
my_property.private = 1
...
Файл с настройками по умолчанию, применяемый всегда, доступен здесь.
Доступны следующие атрибуты:
// `type` — используется для парсинга строкового значения (на данный момент только в bob.jar)
my_property.type = string // возможные значения: bool, string, number, integer, string_array, resource
// `help` — используется как подсказка в редакторе (на данный момент не используется)
my_property.help = string
// `default` — значение по умолчанию, если пользователь не задал его вручную (на данный момент только в bob.jar)
my_property.default = string
// `private` — приватное значение, используемое при сборке, но не включаемое в итоговый бандл
my_property.private = 1 // булевое значение: 1 или 0
На данный момент meta-свойства используются только в bob.jar
при сборке, но в будущем они будут также обрабатываться редактором и отображаться в game.project.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB