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
Executar um projeto no modo Debug cria um processo para uma determinada instância de tempo de execução do engine com seu jogo e um serviço especial do engine que pode ser acessado para infraestrutura de desenvolvimento e profiling, lógica e mensagens de tempo de execução, estado do engine e extensões.
O serviço do engine é um serviço HTTP de desenvolvimento que pertence a um engine de depuração (dmengine) em execução.
Ele é separado do servidor do editor, que pertence ao editor Defold e controla o projeto aberto.
Os dois serviços usam portas diferentes. Uma ferramenta que se conecta à porta do editor não pode chamar nela rotas de extensões de tempo de execução e vice-versa: uma ferramenta que se conecta ao serviço do engine não pode chamar operações do editor.
O serviço do engine faz parte da infraestrutura de depuração, desenvolvimento e profiling. As instâncias de release do engine não criam o serviço.
Quando o editor inicia um engine de depuração, ele solicita uma porta de serviço atribuída dinamicamente. O engine informa a porta selecionada no Console (e em seu log, se executado por uma CLI):

INFO:ENGINE: Engine service started on port <port>
A linha aparece no console do editor quando o jogo foi iniciado a partir dele. Um controlador local simples pode analisar essa linha, mas uma integração reutilizável deve permitir que o editor ou seu wrapper acompanhe a instância do engine e a porta registrada. Isso evita confundir uma porta antiga com um processo recém-iniciado ou reutilizado.
O engine também anuncia alvos de desenvolvimento por meio da descoberta de serviços nas plataformas compatíveis. Esse mecanismo é usado principalmente pelas ferramentas do Defold e não deve ser substituído por uma porta codificada permanentemente.
O servidor pode ser acessado em localhost (127.0.0.1) em uma determinada porta:

O engine de depuração atual registra um pequeno conjunto de rotas principais.
| Endpoint | Finalidade |
|---|---|
GET /ping |
Verificar se o serviço do engine responde |
GET /info |
Ler a versão do engine, a plataforma, o identificador do build e as informações do serviço de log |
GET /state |
Ler o estado da conexão de desenvolvimento usado pelas ferramentas do Defold |
POST /post/<socket>/<message-type> |
Publicar uma mensagem do Defold codificada em Protobuf em um socket nomeado do engine |
Por exemplo:
curl -sS "$ENGINE_URL/ping"
curl -sS "$ENGINE_URL/info" | jq
curl -sS "$ENGINE_URL/state" | jq
A rota /post é usada por operações de desenvolvimento, como hot reload, reinicialização, redimensionamento e controle de processos. Seu corpo é uma mensagem Protobuf binária do tipo nomeado na rota; ela não é uma API de mensagens JSON.
Essas rotas são infraestrutura de desenvolvimento, e existem outras rotas de profiling e inspeção de recursos na implementação do engine.
Em builds de depuração, o SDK de extensões nativas pode fornecer acesso ao servidor web do engine. Uma extensão pode registrar um prefixo de rota nesse servidor e expor operações que dependem de dados de tempo de execução.
Isso é útil para ferramentas de desenvolvimento porque uma extensão pode compartilhar o serviço existente do engine em vez de abrir outro servidor HTTP.
Uma API de automação em tempo de execução definida por extensão deve:
A Automation Bridge oficial do Defold é uma extensão nativa exclusiva para depuração, criada sobre o serviço do engine. Ela registra uma API versionada de automação em tempo de execução em:
http://127.0.0.1:<engine-service-port>/automation-bridge/v1
Sua API de tempo de execução oferece recursos como inspeção de cenas e nodes, entrada, informações da tela, capturas de tela, gravação, informações do ciclo de vida e sincronização opcional definida pela aplicação. Algumas operações incluem:
| Operação | Ação |
|---|---|
GET /automation-bridge/v1/health |
Relatório de integridade, recursos e compatibilidade da API |
POST /automation-bridge/v1/input/click |
Para interações de entrada em tempo de execução |
GET /automation-bridge/v1/screenshot |
Para capturas de tela em tempo de execução |
Use a documentação da API nativa e a documentação dos auxiliares em Python da extensão para a versão instalada no projeto.
A Automation Bridge não expõe sua API HTTP nem seu módulo Lua em builds de release.
Os auxiliares em Python da Automation Bridge ilustram a arquitetura de dois clientes. A função editor.open_project() retorna um cliente de projeto do editor, e project.build_and_run() retorna um cliente separado do engine.
| Cliente | Finalidade |
|---|---|
| Projeto | API HTTP do editor, comandos, depurador, console, preferências, referência, pré-visualizações, build e descoberta de porta |
| Jogo — serviço do engine | Cena, entrada, capturas de tela, estado de tempo de execução e sincronização |
A divisão entre project e game torna explícito o limite entre os processos. As operações do editor permanecem no servidor do editor, enquanto as observações e ações relacionadas ao jogo ativo permanecem no serviço do engine.
from automation_bridge import editor
project = editor.open_project(".")
game = project.build_and_run()
O serviço do engine e as rotas definidas por extensões são ferramentas de desenvolvimento e devem ser tratadas dessa forma.
Atualmente, o serviço do engine não publica um documento OpenAPI. As integrações devem se limitar ao comportamento documentado ou à API versionada de uma extensão.
Scripts de tempo de execução, física, entrada, objetos criados dinamicamente e renderização de plataforma exigem um engine em execução e devem ser verificados por meio de testes automatizados em tempo de execução.