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
Ejecutar un proyecto en modo Debug crea un proceso para una instancia de runtime determinada del motor con tu juego y un servicio especial del motor al que se puede acceder para la infraestructura de desarrollo y profiling, la lógica y los mensajes de runtime, el estado del motor y las extensiones.
El servicio del motor es un servicio HTTP de desarrollo que pertenece a un motor de depuración (dmengine) en ejecución.
Es independiente del servidor del editor, que pertenece al editor Defold y controla el proyecto abierto.
Los dos servicios utilizan puertos distintos. Una herramienta que se conecte al puerto del editor no puede llamar allí a rutas de extensiones de runtime y, a la inversa, una herramienta que se conecte al servicio del motor no puede llamar a operaciones del editor.
El servicio del motor forma parte de la infraestructura de depuración, desarrollo y profiling. Las instancias del motor de release no crean el servicio.
Cuando el editor inicia un motor de depuración, solicita un puerto de servicio asignado dinámicamente. El motor indica el puerto seleccionado en Console (y en su log si se ejecuta desde una CLI):

INFO:ENGINE: Engine service started on port <port>
La línea aparece en la consola del editor cuando el juego se inicia desde el editor. Un controlador local sencillo puede analizarla, pero una integración reutilizable debe permitir que el editor o su wrapper realice el seguimiento de la instancia del motor y del puerto registrado. Esto evita confundir un puerto antiguo con un proceso recién iniciado o reutilizado.
El motor también anuncia objetivos de desarrollo mediante la detección de servicios en las plataformas compatibles. Este mecanismo lo utilizan principalmente las herramientas de Defold y no debe sustituirse por un puerto fijado permanentemente en el código.
El servidor está disponible en localhost (127.0.0.1) en un puerto determinado:

El motor de depuración actual registra un pequeño conjunto de rutas principales.
| Endpoint | Propósito |
|---|---|
GET /ping |
Comprobar que el servicio del motor responde |
GET /info |
Leer la versión del motor, la plataforma, el identificador de la build y la información del servicio de logs |
GET /state |
Leer el estado de la conexión de desarrollo que utilizan las herramientas de Defold |
POST /post/<socket>/<message-type> |
Enviar un mensaje Defold codificado con Protobuf a un socket del motor con nombre |
Por ejemplo:
curl -sS "$ENGINE_URL/ping"
curl -sS "$ENGINE_URL/info" | jq
curl -sS "$ENGINE_URL/state" | jq
La ruta /post se utiliza para operaciones de desarrollo como hot reload, reinicio, cambio de tamaño y control de procesos. Su cuerpo es un mensaje binario Protobuf del tipo indicado en la ruta; no es una API de mensajes JSON.
Estas rutas son infraestructura de desarrollo, y existen rutas adicionales de profiler e inspección de recursos en la implementación del motor.
En las builds de depuración, el SDK de extensiones nativas puede proporcionar acceso al servidor web del motor. Una extensión puede registrar un prefijo de ruta en ese servidor y exponer operaciones que dependan de datos de runtime.
Esto resulta útil para las herramientas de desarrollo porque una extensión puede compartir el servicio existente del motor en lugar de abrir otro servidor HTTP.
Una API de automatización de runtime definida por una extensión debe:
La Automation Bridge oficial de Defold es una extensión nativa exclusiva para depuración basada en el servicio del motor. Registra una API de automatización de runtime versionada en:
http://127.0.0.1:<engine-service-port>/automation-bridge/v1
Su API de runtime proporciona funcionalidades como la inspección de escenas y nodos, input, información de la pantalla, capturas de pantalla, grabación, información del ciclo de vida y sincronización opcional definida por la aplicación. Algunas de sus operaciones son:
| Operación | Acción |
|---|---|
GET /automation-bridge/v1/health |
Informe de estado, funcionalidades de la API y compatibilidad |
POST /automation-bridge/v1/input/click |
Interacciones de input en runtime |
GET /automation-bridge/v1/screenshot |
Capturas de pantalla del runtime |
Consulta la documentación de la API nativa y la documentación del helper de Python de la extensión para conocer la versión instalada en el proyecto.
Automation Bridge no expone su API HTTP ni su módulo Lua en las builds de release.
Los helpers de Python de Automation Bridge ilustran la arquitectura de dos clientes. La función editor.open_project() devuelve un cliente de proyecto del editor y project.build_and_run() devuelve un cliente independiente del motor.
| Cliente | Propósito |
|---|---|
| Proyecto | API HTTP del editor, comandos, debugger, consola, preferencias, referencia, vistas previas, build y detección del puerto |
| Juego: servicio del motor | Escena, input, capturas de pantalla, estado de runtime y sincronización |
La separación entre project y game hace explícito el límite entre procesos. Las operaciones del editor permanecen en el servidor del editor, mientras que las observaciones y acciones sobre el juego activo permanecen en el servicio del motor.
from automation_bridge import editor
project = editor.open_project(".")
game = project.build_and_run()
El servicio del motor y las rutas definidas por extensiones son herramientas de desarrollo y deben tratarse como tales.
Actualmente, el servicio del motor no publica un documento OpenAPI. Las integraciones deben limitarse al comportamiento documentado o a la API versionada de una extensión.
Los scripts de runtime, las físicas, el input, los objetos creados dinámicamente y el renderizado específico de la plataforma requieren un motor en ejecución y deben verificarse mediante pruebas automatizadas de runtime.