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
O arquivo game.project contém todas as configurações globais do projeto. Ele deve permanecer na pasta raiz do projeto e deve se chamar game.project. A primeira coisa que a engine faz ao iniciar e lançar seu jogo é procurar esse arquivo.
Toda configuração no arquivo pertence a uma categoria. Quando você abre o arquivo, o Defold apresenta todas as configurações agrupadas por categoria.

As configurações em game.project geralmente são alteradas dentro do Defold, mas o arquivo também pode ser editado em qualquer editor de texto padrão. O arquivo segue o padrão de formato de arquivo INI e se parece com isto:
[category1]
setting1 = value
setting2 = value
[category2]
...
Um exemplo real é:
[bootstrap]
main_collection = /main/main.collectionc
o que significa que a configuração main_collection pertence à categoria bootstrap. Sempre que uma referência de arquivo é usada, como no exemplo acima, o caminho precisa receber um caractere ‘c’ no final, o que significa que você está referenciando a versão compilada do arquivo. Observe também que a pasta que contém game.project será a raiz do projeto, por isso há uma ‘/’ inicial no caminho da configuração.
É possível ler valores de game.project em tempo de execução usando sys.get_config_string(key), sys.get_config_number(key), sys.get_config_int(key) e sys.get_config_boolean(key). Exemplos:
local title = sys.get_config_string("project.title")
local gravity_y = sys.get_config_number("physics.gravity_y")
local fullscreen = sys.get_config_boolean("display.fullscreen", false)
A chave é uma combinação da categoria e do nome da configuração, separados por ponto, escrita em letras minúsculas com quaisquer espaços substituídos por underscores. Exemplos: o campo “Title” da categoria “Project” se torna project.title e o campo “Gravity Y” da categoria “Physics” se torna physics.gravity_y.
Abaixo estão todas as configurações disponíveis, organizadas por categoria.
O título da aplicação.
A versão da aplicação.
Nome do publisher.
Nome do desenvolvedor.
Controla quando a engine grava um arquivo de log. Opções:
Se mais de uma instância estiver sendo executada a partir do editor, o arquivo será chamado instance_2_log.txt, com 2 sendo o índice da instância. Se uma única instância estiver sendo executada, ou se estiver sendo executada a partir de um pacote, o arquivo será chamado log.txt. O local do arquivo de log será um dos seguintes caminhos (tentados em ordem):
NSDocumentDirectoryContext.getExternalFilesDir()NSApplicationSupportDirectoryCSIDL_APPDATA (por exemplo, C:\Users\<username>\AppData\Roaming)Context.getFilesDir()HOMEEspecifica o nível mínimo de log para o sistema de logging. Somente logs nesse nível ou acima dele serão mostrados.
Habilita compressão de arquivos ao empacotar. Observe que isso atualmente se aplica a todas as plataformas exceto Android, onde o apk já contém todos os dados comprimidos.
Uma lista de URLs para os Library URLs do projeto. Consulte o manual de Bibliotecas para mais informações.
project.dependencies_metadata inclui metadados sobre dependências de bibliotecas no pacote da aplicação. Desativado por padrão. Os metadados podem ser lidos em tempo de execução com sys.load_resource("/.internal/dependencies.json").
custom_resources
Custom resources são incluídos no arquivo principal do jogo usando o campo Custom Resources em game.project.
O campo Custom Resources deve conter uma lista separada por vírgulas de recursos que serão incluídos no arquivo principal do jogo. Se diretórios forem especificados, todos os arquivos e diretórios dentro desse diretório serão incluídos recursivamente. Você pode ler os arquivos usando sys.load_resource().
O carregamento de recursos personalizados é abordado em mais detalhes no manual de Acesso a Arquivos.
Caminhos contribuídos por extensões por meio de custom_resources.default em ext.properties são combinados com esta configuração. Consulte recursos personalizados de extensões para ver um exemplo.
bundle_resources
Bundle resources são arquivos e pastas adicionais localizados como parte do bundle da sua aplicação usando o campo Bundle Resources em game.project.
O campo Bundle Resources deve conter uma lista separada por vírgulas de diretórios com arquivos e pastas de recursos que devem ser copiados como estão para o pacote resultante ao empacotar. Os diretórios devem ser especificados com um caminho absoluto a partir da raiz do projeto, por exemplo /res. O diretório de recursos deve conter subpastas nomeadas por platform, ou architecture-platform.
As plataformas suportadas são ios, android, osx, win32, linux, web, switch. Uma subpasta chamada common também é permitida, contendo arquivos de recursos comuns a todas as plataformas. Exemplo:
res
├── win32
│ └── mywin32file.txt
├── common
│ └── mycommonfile.txt
└── android
├── myandroidfile.txt
└── res
└── xml
└── filepaths.xml
Você pode usar sys.get_application_path() para obter o caminho onde a aplicação está armazenada. Use esse caminho base da aplicação para criar o caminho absoluto final para os arquivos que você precisa acessar. Depois de ter o caminho absoluto desses arquivos, você pode usar as funções io.* e os.* para acessá-los.
O carregamento de recursos de pacote é abordado em mais detalhes no manual de Acesso a Arquivos.
bundle_exclude_resources
Uma lista separada por vírgulas de recursos que não devem ser incluídos no pacote. Ou seja, eles são removidos do resultado da coleta da etapa bundle_resources.
Referência de arquivo da coleção a usar para iniciar a aplicação, /logic/main.collection por padrão.
Qual arquivo de configuração de renderização usar, que define o pipeline de renderização, /builtins/render/default.render por padrão.
Uma lista de diretórios separados por espaço que devem ser compartilhados a partir do seu projeto via compartilhamento de biblioteca. Consulte o manual de Bibliotecas para mais informações.
library.defold_min_version especifica a versão mínima do Defold/Bob necessária para usar este projeto como biblioteca, por exemplo, 1.11.2. Deixe vazio para não exigir uma versão mínima.
Permite que a engine continue em execução enquanto a janela da aplicação está iconificada (somente plataformas desktop).
A frequência de atualização da função de ciclo de vida fixed_update(self, dt). Em Hertz.
Se o passo de tempo ficar grande demais durante um único frame, ele será limitado a este valor máximo. Em segundos.
A largura em pixels da janela da aplicação.
A altura em pixels da janela da aplicação.
Cria um back buffer high dpi em displays que oferecem suporte a isso. Normalmente o jogo será renderizado no dobro da resolução definida nas configurações Width e Height, que ainda serão a resolução lógica usada em scripts e propriedades.
Quantas amostras usar para anti-aliasing por superamostragem. Isso define a hint de janela GLFW_FSAA_SAMPLES. Um valor de 0 significa que anti-aliasing está desativado.
Esta configuração controla a janela. Alvos de renderização com múltiplas amostras fora da tela têm sua própria contagem de amostras.
Marque se a aplicação deve iniciar em tela cheia. Se desmarcado, a aplicação roda em janela.
A taxa de quadros desejada em Hertz. Defina como 0 para taxa de quadros variável. Um valor maior que 0 resultará em uma taxa de quadros fixa, limitada em tempo de execução em relação à taxa de quadros real (o que significa que você não pode atualizar o loop do jogo duas vezes em um frame da engine). Use sys.set_update_frequency(hz) para alterar esse valor em tempo de execução. Essa configuração também funciona em builds headless.
Este valor inteiro controla como a aplicação lida com vsync. 0 desabilita vsync, e o valor padrão é 1. Ao usar um adaptador OpenGL, esse valor define o número de frames entre trocas de buffer da janela. Para Vulkan, não há conceito integrado de swap interval; em vez disso, o valor controla se vsync deve ser habilitado ou não.
Configuração de compatibilidade legada. Esta configuração está obsoleta; use Swap Interval em projetos novos. Se desabilitada, ela força o intervalo de troca efetivo para 0. Se habilitada, Swap Interval determina o valor efetivo.
Especifica qual arquivo de perfis de exibição usar, /builtins/render/default.display_profilesc por padrão. Saiba mais no manual de Layouts de GUI.
Marque se o app deve alternar dinamicamente entre retrato e paisagem na rotação do dispositivo. Observe que o aplicativo de desenvolvimento atualmente não respeita essa configuração.
Emite informações da GPU no console durante a inicialização.
Canal vermelho da cor de limpeza, usado pelo script de renderização e quando a janela é criada.
Canal verde da cor de limpeza, usado pelo script de renderização e quando a janela é criada.
Canal azul da cor de limpeza, usado pelo script de renderização e quando a janela é criada.
Canal alfa da cor de limpeza, usado pelo script de renderização e quando a janela é criada.
Usa geração de fonte em tempo de execução.
Número máximo de objetos de colisão.
Qual tipo de física usar, 2D ou 3D.
Gravidade do mundo ao longo do eixo x. Em metros por segundo.
Gravidade do mundo ao longo do eixo y. Em metros por segundo.
Gravidade do mundo ao longo do eixo z. Em metros por segundo.
Marque se a física deve ser visualizada para depuração.
Valor do componente alfa para física visualizada, 0–1.
Número máximo de mundos de física simultâneos, 4 por padrão. Se você carregar mais de 4 mundos simultaneamente por meio de proxies de coleção, precisa aumentar esse valor. Esteja ciente de que cada mundo de física aloca uma quantidade considerável de memória.
Diz à engine de física como escalar os mundos de física em relação ao mundo do jogo para precisão numérica, 0.01–1.0. Se o valor for definido como 0.02, isso significa que a engine de física verá 50 unidades como 1 metro ($1 / 0.02$).
Marque se a engine de física deve aplicar a transformação de um objeto de jogo a quaisquer componentes de objeto de colisão anexados. Isso pode ser usado para mover, escalar e rotacionar formas de colisão, mesmo as dinâmicas.
Marque se a engine de física deve usar atualizações fixas e independentes da taxa de quadros. Use esta configuração em combinação com a função de ciclo de vida fixed_update(self, dt) e a configuração de projeto engine.fixed_update_frequency para interagir com a engine de física em intervalos regulares. Para novos projetos, a configuração recomendada é true.
O tamanho para desenhar objetos unitários em física, como tríades e normais.
Quantas colisões serão relatadas de volta aos scripts.
Quantos pontos de contato serão relatados de volta aos scripts.
Ignora impulsos de contato com valores menores que esta configuração.
O número máximo de requisições de ray cast 2d por frame.
O número máximo de requisições de ray cast 3d por frame.
O número máximo de gatilhos de física sobrepostos.
Velocidade mínima que resultará em colisões elásticas.
Número máximo de passos na simulação ao usar timestep fixo (somente 3D).
Especifica qual filtragem usar para filtragem de minificação.
Especifica qual filtragem usar para filtragem de magnificação.
O número máximo de chamadas de renderização.
O número de caracteres pré-alocados no buffer de renderização de texto, isto é, o número de caracteres que podem ser exibidos a cada frame.
O número máximo de batches de texto que podem ser exibidos a cada frame.
O número máximo de vértices de depuração. Usado para renderização de formas de física, entre outras coisas.
O arquivo de perfis de textura a usar para este projeto, /builtins/graphics/default.texture_profiles por padrão.
Verifica o valor de retorno após cada chamada gráfica e relata quaisquer erros no log.
graphics.webgl_version_hint seleciona a versão do contexto WebGL a solicitar para HTML5. Os valores válidos são 1 (WebGL 1) e 2 (WebGL 2, o padrão). Defina como 1 para usar ou testar WebGL 1 mesmo em um navegador compatível com WebGL 2. Mantenha Exclude GLES 2.0 desativado ao usar WebGL 1 para que os shaders necessários sejam incluídos.
Hint de versão de contexto OpenGL. Se uma versão específica for selecionada, ela será usada como a versão mínima exigida (não se aplica ao OpenGL ES).
Define a hint de perfil OpenGL ‘core’ ao criar o contexto. O core profile remove todos os recursos obsoletos do OpenGL, como renderização em modo imediato. Não se aplica ao OpenGL ES.
graphics.vulkan_version_major é a hint da versão principal do contexto/API Vulkan. Aplica-se somente quando o backend gráfico Vulkan está selecionado. O padrão é 1.
graphics.vulkan_version_minor é a hint da versão secundária do contexto/API Vulkan. Aplica-se somente quando o backend gráfico Vulkan está selecionado. O padrão é 0.
Não compila shaders para dispositivos executando OpenGLES 2.0 / WebGL 1.0.
shader.glsl_es_default_precision_float define o qualificador global de precisão padrão para valores de ponto flutuante em shaders GLSL ES gerados por compilação cruzada. Os valores válidos são mediump e highp; o padrão é mediump.
shader.glsl_es_default_precision_int define o qualificador global de precisão padrão para valores inteiros em shaders GLSL ES gerados por compilação cruzada. Os valores válidos são mediump e highp; o padrão é highp.
Segundos a aguardar antes que uma entrada mantida pressionada comece a se repetir.
Segundos a aguardar entre cada repetição de uma entrada mantida pressionada.
Referência de arquivo do arquivo de configuração de gamepads, que mapeia sinais de gamepad para o SO, /builtins/input/default.gamepads por padrão.
input.gamepad_database seleciona um banco de dados de mapeamentos de gamepad no formato SDL (.txt). O padrão é /builtins/input/gamecontrollerdb.txt. Seus mapeamentos são combinados com o arquivo Gamepads ao compilar o projeto.
input.gamepad_deadzone define a zona morta aplicada em tempo de execução aos mapeamentos do banco de dados de gamepads SDL. O padrão é 0.2.
Referência de arquivo do arquivo de configuração de entrada, que mapeia entradas de hardware para ações, /input/game.input_binding por padrão.
Marque para fazer a engine receber eventos de entrada do acelerômetro a cada frame. Desabilitar a entrada do acelerômetro pode trazer algum ganho de desempenho.
Se marcado, um cache HTTP é habilitado para carregar recursos mais rapidamente pela rede na engine em execução no dispositivo.
Onde encontrar os dados de build do projeto, em formato URI.
O número máximo de recursos que podem ser carregados ao mesmo tempo.
O timeout HTTP em segundos. Defina como 0 para desabilitar timeout.
O número de worker threads para o serviço HTTP.
Marque para habilitar o cache HTTP para requisições de rede (usando http.request()). O cache HTTP armazenará a resposta associada a uma requisição e reutilizará a resposta armazenada em requisições posteriores. O cache HTTP oferece suporte aos cabeçalhos de resposta HTTP ETag e Cache-Control: max-age.
Arquivo contendo certificados raiz SSL a usar ao verificar a cadeia de certificados durante handshakes SSL.
Número máximo de instâncias de objetos de jogo em uma coleção, 1024 por padrão. (Veja informações sobre otimizações de contagem máxima de componentes).
Número máximo de objetos de jogo na pilha de entrada.
Ganho global (volume), 0–1.
Se habilitado, o ganho é linear. Se desabilitado, usa uma curva exponencial.
Número máximo de recursos de som, isto é, o número de arquivos de som únicos em tempo de execução.
(Atualmente não usado) Número máximo de buffers de som simultâneos.
(Atualmente não usado) Número máximo de sons tocando simultaneamente.
Número máximo de instâncias de som simultâneas, isto é, sons reais reproduzidos ao mesmo tempo.
Número máximo de componentes de som por coleção.
Número de amostras usadas para cada atualização de áudio. 0 significa automático (1024 para 48 kHz, 768 para 44,1 kHz).
Se marcado, o sistema de som usará threads para reprodução de som para reduzir o risco de engasgos quando a thread principal estiver sob carga elevada.
Se marcado, o sistema de som usará streaming para carregar arquivos-fonte.
O tamanho máximo do cache de chunks de som contendo todos os chunks. 2097152 bytes por padrão.
Esse número deve ser maior que o número de arquivos de som carregados multiplicado pelo tamanho do chunk de stream.
Caso contrário, você corre o risco de expulsar novos chunks a cada frame.
O tamanho em bytes de cada chunk transmitido por streaming.
Determina o tamanho em bytes do chunk inicial para arquivos de som lidos do archive.
Número máximo de sprites por coleção. (Veja informações sobre otimizações de contagem máxima de componentes).
Marque para permitir que sprites apareçam desalinhados em relação aos pixels.
Número máximo de tile maps por coleção. (Veja informações sobre otimizações de contagem máxima de componentes).
Número máximo de tiles visíveis simultâneos por coleção.
Número máximo de componentes de modelo spine. (Veja informações sobre otimizações de contagem máxima de componentes).
Número máximo de componentes de mesh por coleção. (Veja informações sobre otimizações de contagem máxima de componentes).
Número máximo de componentes de modelo por coleção. (Veja informações sobre otimizações de contagem máxima de componentes).
Divide meshes com mais de 65536 vértices em novas meshes.
Largura máxima da textura de matriz de ossos. Apenas o tamanho necessário para animações é usado, arredondado para a potência de dois mais próxima.
Altura máxima da textura de matriz de ossos. Apenas o tamanho necessário para animações é usado, arredondado para a potência de dois mais próxima.
model.max_morph_target_texture_width define a largura máxima em pixels da textura gerada para cada mesh com os deltas de posição, normal e tangente dos morph targets. O padrão é 1024.
model.max_morph_target_texture_height define a altura máxima em pixels da textura gerada para cada mesh com os deltas de posição, normal e tangente dos morph targets. O padrão é 1024.
light.max_count define o número máximo de componentes de luz, 64 por padrão. (Veja informações sobre otimizações de contagem máxima de componentes).
Número máximo de componentes GUI. (Veja informações sobre otimizações de contagem máxima de componentes).
O número máximo de partículas simultâneas na GUI.
gui.max_particlefx_count define o número máximo de nós de efeitos de partículas por coleção. O padrão é 64.
O número máximo de animações ativas na gui.
gui.safe_area_mode seleciona quais margens da área segura afetam o ajuste da GUI:
none (padrão): Ignora as margens.long: Aplica as margens esquerda e direita na orientação paisagem e as margens superior e inferior na orientação retrato.short: Aplica as margens superior e inferior na orientação paisagem e as margens esquerda e direita na orientação retrato.both: Aplica as quatro margens.Um script de GUI pode sobrescrever o modo de sua cena com gui.set_safe_area_mode(). Consulte as orientações sobre área segura para informações sobre suporte nas plataformas e layouts personalizados.
Número máximo de rótulos. (Veja informações sobre otimizações de contagem máxima de componentes).
Marque para permitir que rótulos apareçam desalinhados em relação aos pixels.
particle_fx.max_count define o número máximo de componentes de efeitos de partículas, 64 por padrão. (Veja informações sobre otimizações de contagem máxima de componentes).
particle_fx.max_emitter_count define o número máximo de emissores de efeitos de partículas simultâneos. O padrão é 64.
O número máximo de partículas simultâneas. Isso limita o tamanho do buffer de vértices da GPU, com 1024 partículas por padrão.
particle_fx.max_particle_buffer_count define o número máximo de partículas por envio à GPU. Isso limita o buffer da CPU usado para gerar os vértices das partículas. O padrão é 1024.
Número de iterações de velocidade para o solver de física Box2D 2.2.
Número de iterações de posição para o solver de física Box2D 2.2.
Número de subpassos para o solver de física Box2D 3.x.
Número máximo de proxies de coleção. (Veja informações sobre otimizações de contagem máxima de componentes).
Número máximo de fábricas de coleção. (Veja informações sobre otimizações de contagem máxima de componentes).
Número máximo de fábricas de objetos de jogo. (Veja informações sobre otimizações de contagem máxima de componentes).
Arquivo de imagem (.png) a usar como ícone da aplicação nas dimensões de largura e altura fornecidas W × H.
Arquivo Storyboard (.storyboard). Saiba mais sobre como criar um no manual de iOS.
O arquivo de asset de ícones (.car) contendo ícones do app.
(iOS 6 e anteriores) Marque se seus ícones são pré-renderizados. Se isso estiver desmarcado, os ícones receberão automaticamente um destaque brilhante.
O bundle identifier permite que o iOS reconheça quaisquer atualizações do seu app. Seu bundle ID deve ser registrado na Apple e ser único para seu app. Você não pode usar o mesmo identificador para apps iOS e macOS. Deve consistir em dois ou mais segmentos separados por ponto. Cada segmento deve começar com uma letra. Cada segmento deve consistir apenas em letras alfanuméricas, underscore ou hífen (-) (veja CFBundleIdentifier)
O nome curto do bundle (15 caracteres) (veja CFBundleName).
A versão do bundle, seja um número ou x.y.z. (veja CFBundleVersion)
Se especificado, usa este arquivo Info.plist em vez do manifesto base integrado do iOS ao empacotar seu app. O manifesto integrado contém as entradas de rede local e Bonjour necessárias para a descoberta de alvos pelo editor em builds que não sejam release. Se você fornecer um manifesto personalizado e precisar da descoberta de alvos, profiling, hot reload ou streaming de logs em um dispositivo, preserve essas entradas conforme descrito no manual de iOS.
O Apple Privacy Manifest da aplicação. O campo usará /builtins/manifests/ios/PrivacyInfo.xcprivacy como padrão.
Se especificado, os entitlements no provisioning profile fornecido (.entitlements, .xcent, .plist) serão mesclados com os entitlements do provisioning profile fornecido ao empacotar a aplicação.
O idioma usado se a aplicação não tiver o idioma preferido do usuário na lista Localizations (veja CFBundleDevelopmentRegion). Use o padrão ISO 639-1 de duas letras se o idioma preferido estiver disponível ali, ou o ISO 639-2 de três letras.
Este campo contém strings separadas por vírgula que identificam o nome do idioma ou designador ISO de idioma das localizações suportadas (veja CFBundleLocalizations).
Arquivo de imagem (.png) a usar como ícone da aplicação nas dimensões de largura e altura fornecidas W × H.
Arquivos de imagem (.png) a serem usados como ícone personalizado de notificação push no Android. Os ícones serão usados automaticamente para notificações push locais e remotas. Se não definido, o ícone da aplicação será usado por padrão.
Especifica qual campo JSON do payload deve ser usado como título da notificação. Deixar esta configuração vazia faz com que os pushes usem o nome da aplicação como título por padrão.
Especifica qual campo JSON do payload deve ser usado como texto da notificação. Se deixado vazio, o texto no campo alert é usado, assim como no iOS.
Um valor inteiro que indica a versão do app. Aumente o valor a cada atualização subsequente.
O API Level mínimo necessário para a aplicação executar (android:minSdkVersion).
O API Level que a aplicação tem como alvo (android:targetSdkVersion).
Identificador do pacote. Deve consistir em dois ou mais segmentos separados por ponto. Cada segmento deve começar com uma letra. Cada segmento deve consistir apenas em letras alfanuméricas ou no caractere underscore.
Google Cloud Messaging Sender Id. Defina isto como a string atribuída pelo Google para habilitar notificações push.
Firebase Cloud Messaging Application Id.
Se definido, usa o arquivo XML de manifesto Android especificado ao empacotar. Um manifesto personalizado substitui o manifesto-base integrado do Defold. Fragmentos de manifesto de extensões nativas ainda são mesclados a ele, mas alterações posteriores no manifesto-base integrado não são herdadas automaticamente; portanto, compare os manifestos personalizados com o manifesto integrado atual ao atualizar. Para jogos, defina android:appCategory="game" no elemento <application>. Para aplicações que não são jogos, defina android:appCategory apenas se uma das categorias de aplicação definidas pelo Android descrever corretamente a aplicação.
Especifica qual loja usar. As opções válidas são Amazon e GooglePlay. Consulte extension-iap para mais informações.
Especifica qual método usar para obter entrada de teclado em dispositivos Android. As opções válidas são KeyEvent (método antigo) e HiddenInputField (novo).
Se definido, oculta as barras de navegação e status e permite que seu app capture todos os eventos de toque na tela.
Estende até o recorte da tela.
Se a aplicação pode ou não ser depurada usando ferramentas como GAPID ou Android Studio. Isso definirá a flag android:debuggable no manifesto Android (documentação oficial).
android.r8_keep_rules seleciona um arquivo .keep para ativar a remoção de código não utilizado, a otimização e a ofuscação de código Java pelo R8 em builds Android. Deixe a configuração vazia para usar o D8 sem remover código não utilizado.
Selecione /builtins/manifests/android/dmengine.keep para usar diretamente as regras padrão do Defold. As extensões fornecem suas próprias regras de preservação, que são combinadas com esse arquivo.
Copie o arquivo integrado para seu projeto somente se precisar adicionar regras específicas do projeto. Preserve as regras integradas na cópia: selecionar um arquivo personalizado substitui o conjunto completo de regras do projeto.
Consulte o manual de Android para ativar o R8 e preservar seu mapeamento de ofuscação junto com um pacote de lançamento.
Especifica se o instalador do pacote extrai bibliotecas nativas do APK para o sistema de arquivos. Se definido como false, suas bibliotecas nativas são armazenadas sem compressão no APK. Embora seu APK possa ficar maior, sua aplicação carrega mais rápido porque as bibliotecas são carregadas diretamente do APK em tempo de execução. Isso definirá a flag android:extractNativeLibs no Android Manifest (documentação oficial).
Arquivo de ícone do bundle (.icns) a usar como ícone da aplicação no macOS.
Se definido, usa o arquivo info.plist especificado ao empacotar.
O Apple Privacy Manifest da aplicação. O campo usará /builtins/manifests/osx/PrivacyInfo.xcprivacy como padrão.
O bundle identifier permite que o macOS reconheça atualizações do seu app. Seu bundle ID deve ser registrado na Apple e ser único para seu app. Você não pode usar o mesmo identificador para apps iOS e macOS. Deve consistir em dois ou mais segmentos separados por ponto. Cada segmento deve começar com uma letra. Cada segmento deve consistir apenas em letras alfanuméricas, underscore ou hífen (-).
osx.bundle_name especifica o nome curto do bundle (CFBundleName), limitado a 15 caracteres.
osx.bundle_version especifica o número do build (CFBundleVersion), seja um número ou x.y.z. O padrão é 1.
O idioma usado se a aplicação não tiver o idioma preferido do usuário na lista Localizations (veja CFBundleDevelopmentRegion). Use o padrão ISO 639-1 de duas letras se o idioma preferido estiver disponível ali, ou o ISO 639-2 de três letras.
Este campo contém strings separadas por vírgula que identificam o nome do idioma ou designador ISO de idioma das localizações suportadas (veja CFBundleLocalizations).
Arquivo de imagem (.ico) a usar como ícone da aplicação no Windows. Leia mais sobre como criar um arquivo .ico no manual de Windows.
Consulte o manual da plataforma HTML5 para mais informações sobre muitas dessas opções.
Tamanho do heap em megabytes para o Emscripten usar.
Usa o arquivo HTML de template especificado ao empacotar. Por padrão, /builtins/manifests/web/engine_template.html.
Usa o arquivo CSS de tema especificado ao empacotar. Por padrão, /builtins/manifests/web/light_theme.css.
Se definido, usa a imagem splash especificada na inicialização ao empacotar, em vez do logo Defold.
Ao empacotar para HTML5, os dados do jogo são divididos em um ou mais arquivos de dados de archive. Quando a engine inicia o jogo, esses arquivos de archive são lidos para a memória. Use esta configuração para especificar a localização dos dados.
Sufixo a ser anexado aos arquivos de archive. Útil, por exemplo, para forçar conteúdo sem cache de uma CDN (?version2, por exemplo).
Lista de argumentos que serão passados à engine.
Habilita streaming do arquivo wasm (mais rápido e usa menos memória, mas exige o tipo MIME application/wasm).
Habilita Fullscreen Button no arquivo index.html.
Habilita o link Made With Defold no arquivo index.html.
Quando habilitada, esta opção imprimirá informações sobre a engine e a versão da engine no console do navegador (usando console.log()) quando a engine iniciar.
Especifica qual método usar para escalar o canvas do jogo.
O número de novas tentativas após um download com falha durante a inicialização, incluindo erros de rede, status HTTP de falha e divergências de tamanho no arquivo JavaScript ou WebAssembly da engine. A requisição inicial é separada. A verificação dos arquivos do arquivo de jogo tem seu próprio limite de novas tentativas; consulte verificação de downloads e Retry Time.
O número de segundos a aguardar entre tentativas de baixar um arquivo quando o download falha (veja Retry Count).
html5.verify_downloaded_file_size verifica se os arquivos baixados da engine e do arquivo de jogo têm os tamanhos esperados. Vem ativado por padrão (true). Defina como false somente se um servidor, proxy ou CDN reescrever intencionalmente os arquivos e alterar seus tamanhos. Uma falha na verificação provoca novas tentativas de download antes de a inicialização falhar. Os limites de novas tentativas diferem entre os downloads da engine e a verificação dos arquivos do arquivo de jogo; consulte verificação de downloads.
Marque se você quer que o contexto gráfico tenha um fundo transparente.
Marque para finalizar automaticamente transações IAP. Se desmarcado, você precisa chamar explicitamente iap.finish() após uma transação bem-sucedida.
liveupdate.enabled ativa o sistema Live update em tempo de execução. Ativado por padrão. Consulte o manual de Live update para saber como excluir, baixar e montar recursos.
Arquivo de recurso de configurações Liveupdate a usar durante o empacotamento.
Se definido, usa o app manifest para personalizar a build da engine. Isso permite remover partes não usadas da engine para diminuir o tamanho final do binário. Aprenda como excluir recursos não usados no manual de manifesto da aplicação.
A configuração Profiler do Manifesto do aplicativo controla se o código do profiler é vinculado a builds debug e release. As configurações abaixo controlam o comportamento em tempo de execução do código do profiler presente no build selecionado. Consulte o manual de Profiling para obter detalhes.
Habilita o perfilador dentro do jogo.
A amostragem de uso da CPU vem ativada por padrão em builds debug. Ative esta configuração quando a amostragem de CPU também for necessária em uma build release que inclua suporte ao profiler por meio do Manifesto do aplicativo.
profiler.track_detailed_memory ativa a amostragem detalhada de memória no profiler. Desativado por padrão. Isso pode consumir muitos recursos no HTML5.
Número de milissegundos a dormir entre atualizações do servidor.
Habilita a timeline de desempenho no navegador (somente HTML5).
profiler.max_sample_count é o número máximo de amostras do profiler registradas por thread e por frame. O padrão é 4096 e o mínimo é 128. Aumente-o somente quando um perfil legítimo exceder o limite; primeiro verifique se o código de profiling das extensões nativas tem chamadas de início/fim de escopo sem correspondência.
Quando a engine inicia, é possível fornecer valores de configuração pela linha de comando que sobrescrevem as configurações de game.project:
# Especifica uma coleção bootstrap
$ dmengine --config=bootstrap.main_collection=/my.collectionc
# Define dois valores de configuração personalizados
$ dmengine --config=test.my_value=4711 --config=test2.my_value2=foobar
Valores personalizados podem, assim como qualquer outro valor de configuração, ser lidos com a função correspondente descrita em Acesso em tempo de execução:
local my_value = sys.get_config_number("test.my_value")
local my_value2 = sys.get_config_string("test.my_value2")
local my_flag = sys.get_config_boolean("test.my_flag", false)
O arquivo de configurações game.project contém muitos valores que especificam o número máximo de determinado recurso que pode existir ao mesmo tempo, geralmente contado por coleção carregada (também chamada de mundo). A engine Defold usará esses valores máximos para pré-alocar memória para essa quantidade, evitando alocações dinâmicas e fragmentação de memória enquanto o jogo está em execução.
As estruturas de dados do Defold usadas para representar componentes e outros recursos são otimizadas para usar o mínimo de memória possível, mas ainda é preciso tomar cuidado ao definir os valores para evitar alocar mais memória do que realmente é necessário.
Para otimizar ainda mais o uso de memória, o processo de build do Defold analisará o conteúdo do jogo e substituirá as contagens máximas se for possível saber com certeza a quantidade exata:
É possível definir configurações personalizadas para o projeto principal ou para uma extensão nativa. Configurações personalizadas para o projeto principal devem ser definidas em um arquivo game.properties na raiz do projeto. Arquivos chamados ext.properties são encontrados em qualquer lugar do projeto e nas dependências de bibliotecas obtidas; eles não precisam estar ao lado de um ext.manifest. Todos os metadados de extensão encontrados são mesclados e, depois, o arquivo game.properties da raiz é aplicado e pode sobrescrevê-los.
O arquivo de configurações usa o mesmo formato INI de game.project, e atributos de propriedade são definidos usando notação com ponto e um sufixo:
[my_category]
my_property.private = 1
...
O meta arquivo padrão que é sempre aplicado está disponível aqui
Os seguintes atributos estão disponíveis atualmente:
[my_extension]
// `type` - usado para analisar a string de valor
my_property.type = string // um dos seguintes valores: bool, string, number, integer, string_array, resource
// `help` - displayed as a help tooltip in the editor
my_property.help = string
// `default` - valor usado como padrão se o usuário não definiu valor manualmente
my_property.default = string
// `private` - valor privado usado durante o processo de empacotamento, mas removido do próprio pacote
my_property.private = 1 // valor booleano 1 ou 0
// `label` - rótulo de entrada no editor
my_property.label = My Awesome Property
// `minimum` e/ou `maximum` - faixa válida para propriedades numéricas, validada na UI do editor
my_property.minimum = 0
my_property.maximum = 255
// `options` - opções de menu suspenso para a UI do editor, pares valor[:rótulo] separados por vírgula
my_property.options = android: Android, ios: iOS
// apenas tipo `resource`:
my_property.filter = jpg,png // extensões de arquivo permitidas para o diálogo seletor de recursos
my_property.preserve-extension = 1 // usa a extensão original do recurso em vez de uma gerada
// depreciação
my_property.deprecated = 1 // marca a propriedade como obsoleta
my_property.severity-default = warning // se a propriedade obsoleta for especificada, mas definida para um valor padrão
my_property.severity-override = error // se a propriedade obsoleta for especificada e definida para um valor não padrão
Além disso, você pode definir os seguintes atributos em uma categoria de configuração:
[my_extension]
// `group` - grupo de categoria de game.project, por exemplo, Main, Platforms, Components, Runtime, Distribution
group = Runtime
// `title` - título exibido da categoria
title = My Awesome Extension
// `help` - ajuda exibida da categoria
help = Settings for My Awesome Extension
Tanto o Bob quanto o Editor analisam esses arquivos de metadados. O Editor os usa para criar os campos, as opções, a validação e as tooltips de ajuda correspondentes no visualizador de game.project.