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
При запуске проекта в режиме Debug создаётся процесс для конкретного экземпляра среды выполнения движка с вашей игрой и специальным сервисом движка, доступным для инфраструктуры разработки и профилирования, логики и сообщений среды выполнения, состояния движка и расширений.
Сервис движка — это HTTP-сервис разработки, принадлежащий запущенному отладочному движку (dmengine).
Он отделён от сервера редактора, который принадлежит редактору Defold и управляет открытым проектом.
Эти два сервиса используют разные порты. Инструмент, подключённый к порту редактора, не может вызывать через него маршруты расширений среды выполнения, и наоборот — инструмент, подключённый к сервису движка, не может вызывать операции редактора.
Сервис движка является частью инфраструктуры отладки, разработки и профилирования. Экземпляры релизного движка не создают этот сервис.
Когда редактор запускает отладочный движок, он запрашивает динамически назначенный порт сервиса. Движок сообщает выбранный порт в Console (и в журнале при запуске из CLI):

INFO:ENGINE: Engine service started on port <port>
Эта строка появляется в консоли редактора, когда игра запущена из редактора. Простой локальный контроллер может разобрать эту строку, но в повторно используемой интеграции следует позволить редактору или его оболочке отслеживать экземпляр движка и зарегистрированный порт. Это предотвращает путаницу между старым портом и недавно запущенным или повторно используемым процессом.
Движок также объявляет цели разработки посредством обнаружения сервисов на поддерживаемых платформах. Этот механизм в основном используется инструментами Defold, и его не следует заменять постоянным жёстко заданным портом.
Сервер доступен на localhost (127.0.0.1) по заданному порту:

Текущий отладочный движок регистрирует небольшой набор основных маршрутов.
| Эндпоинт | Назначение |
|---|---|
GET /ping |
Проверить, что сервис движка отвечает |
GET /info |
Получить версию движка, платформу, идентификатор сборки и информацию о сервисе журналирования |
GET /state |
Получить состояние подключения для разработки, используемое инструментами Defold |
POST /post/<socket>/<message-type> |
Отправить закодированное в Protobuf сообщение Defold в именованный сокет движка |
Например:
curl -sS "$ENGINE_URL/ping"
curl -sS "$ENGINE_URL/info" | jq
curl -sS "$ENGINE_URL/state" | jq
Маршрут /post используется такими операциями разработки, как горячая перезагрузка, перезапуск, изменение размера и управление процессом. Его тело — бинарное Protobuf-сообщение типа, указанного в маршруте; это не API сообщений JSON.
Эти маршруты относятся к инфраструктуре разработки; кроме того, в реализации движка существуют дополнительные маршруты профайлера и инспекции ресурсов.
В отладочных сборках SDK нативных расширений может предоставлять доступ к веб-серверу движка. Расширение может зарегистрировать на этом сервере префикс маршрута и предоставить операции, зависящие от данных среды выполнения.
Это удобно для инструментов разработки, поскольку расширение может совместно использовать существующий сервис движка вместо запуска ещё одного HTTP-сервера.
API автоматизации среды выполнения, определяемый расширением, должен:
Официальный Automation Bridge от Defold — это нативное расширение только для отладки, построенное на сервисе движка. Оно регистрирует версионированный API автоматизации среды выполнения по адресу:
http://127.0.0.1:<engine-service-port>/automation-bridge/v1
Его API среды выполнения предоставляет такие возможности, как инспекция сцен и узлов, ввод, информация об экране, снимки экрана, запись, информация о жизненном цикле и необязательная синхронизация, определяемая приложением. Некоторые операции:
| Операция | Действие |
|---|---|
GET /automation-bridge/v1/health |
Отчёт о работоспособности, возможности API и совместимость |
POST /automation-bridge/v1/input/click |
Взаимодействия с вводом среды выполнения |
GET /automation-bridge/v1/screenshot |
Получение снимков экрана среды выполнения |
Используйте документацию нативного API расширения и документацию вспомогательной библиотеки Python для версии, установленной в проекте.
Automation Bridge не предоставляет ни свой HTTP API, ни свой модуль Lua в релизных сборках.
Вспомогательные библиотеки Python для Automation Bridge иллюстрируют архитектуру с двумя клиентами. Функция editor.open_project() возвращает клиент проекта редактора, а project.build_and_run() — отдельный клиент движка.
| Клиент | Назначение |
|---|---|
| Проект | HTTP API редактора, команды, отладчик, консоль, настройки, справочник, предпросмотры, сборка и определение порта |
| Игра — сервис движка | Сцена, ввод, снимки экрана, состояние среды выполнения и синхронизация |
Разделение между project и game явно отражает границу процессов. Операции редактора остаются на сервере редактора, а наблюдения и действия над запущенной игрой — в сервисе движка.
from automation_bridge import editor
project = editor.open_project(".")
game = project.build_and_run()
Сервис движка и маршруты, определяемые расширениями, являются инструментами разработки, и относиться к ним следует соответственно.
В настоящее время сервис движка не публикует документ OpenAPI. Интеграции должны ограничиваться документированным поведением или версионированным API расширения.
Скрипты среды выполнения, физика, ввод, динамически создаваемые объекты и платформенный рендеринг требуют запущенного движка и должны проверяться с помощью автоматизированного тестирования среды выполнения.