Перейти к содержанию

🖥️ UI & Camera API

This section provides endpoints for manipulating the in-game camera, opening game windows, and rendering visual overlays or images.

Камера

Предоставляет конечные точки для управления видом пользователя в игре. Позволяет внешним инструментам панорамировать камеру по конкретным координатам или программно настраивать уровень масштабирования.


POST
/api/v1/camera/change/zoom

UI Camera

Настраивает уровень масштабирования игровой камеры на указанное значение, мгновенно изменяя поле зрения. Это позволяет точно контролировать, насколько близко или далеко находится камера на игровой карте.

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/camera/change/zoom?zoom=15'

Response:

{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-09T19:16:06.4839322Z"
}


POST
/api/v1/camera/change/position

Мгновенно перемещает игровую камеру на указанные мировые координаты на текущей карте.

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/camera/change/position?x=50&y=50'

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-08T19:13:29.997162Z"
}


POST
/api/v1/camera/follow/pawn

UI Camera

Перемещает камеру к пешке по её числовому ID. Удобно для слежения за конкретным поселенцем, животным или врагом.

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/camera/follow/pawn?pawn_id=526'

Response:

{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-09T19:16:06.4839322Z"
}


POST
/api/v1/camera/screenshot

UI Camera

Делает скриншот текущего вида игры в формате base64-JPEG. Поддерживает изменение размера — опустите width/height для нативного разрешения.

Example:

curl --request POST \
--url http://localhost:8765/api/v1/camera/screenshot \
--header 'content-type: application/json' \
--data '{"width": 1280, "height": 720}'

Request:

{
    "width": 1280,
    "height": 720
}

Response:

{
    "success": true,
    "data": {
        "image": "/9j/4AAQSkZJRgAB...",
        "width": 1280,
        "height": 720
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-09T19:16:06.4839322Z"
}


POST
/api/v1/camera/screenshot/native

UI Camera

Перемещает камеру в указанную позицию и сохраняет высококачественный скриншот напрямую на диск хост-машины.

Example:

curl --request POST \
--url http://localhost:8765/api/v1/camera/screenshot/native \
--header 'content-type: application/json' \
--data '{"x": 100, "z": 100, "path": "C:/screenshots/colony.png"}'

Request:

{
    "x": 100,
    "z": 100,
    "path": "C:/screenshots/colony.png"
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-09T19:16:06.4839322Z"
}


POST
/api/v1/camera/stream/start

Запускает прямую видеотрансляцию текущего вида камеры игры. Эта конечная точка инициирует трансляцию игрового процесса в реальном времени, захватывая именно то, что видно в основном окне игрока.

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/camera/stream/start'

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-08T19:13:29.997162Z"
}


POST
/api/v1/camera/stream/stop

Корректно останавливает активную прямую видеотрансляцию вида камеры игры.

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/camera/stream/stop'

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-08T19:13:29.997162Z"
}


POST
/api/v1/camera/stream/setup

Настраивает параметры прямой видеотрансляции вида камеры игры перед её запуском.

Example:

curl --request POST \
--url 'http://localhost:8765/api/v1/camera/stream/setup?ip=127.0.0.1&port=5007&frame_width=1920&frame_height=1080&fps=15&quality=30'

Request:

{
    "port": 8080,
    "address": "127.0.0.1",
    "frame_width": 1280,
    "frame_height": 720,
    "target_fps": 30,
    "jpeg_quality": 85
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-08T19:13:29.997162Z"
}


GET
/api/v1/camera/stream/status

Возвращает текущий статус и конфигурацию прямой видеотрансляции камеры.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/camera/stream/status'

Response:

{
"success": true,
"data": {
    "is_streaming": false,
    "config": {
    "port": 5007,
    "address": "127.0.0.1",
    "frame_width": 1280,
    "frame_height": 720,
    "target_fps": 15,
    "jpeg_quality": 50
    }
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-09T19:31:56.8297247Z"
}

Overlay Controller

Overlay Controller предназначен для рисования оверлеев на экране.


POST
/api/v1/ui/announce

Изображения

Предоставляет конечные точки для извлечения визуальных ресурсов и текстур из игры. Это необходимо для внешних инструментов, которым нужно визуально отрисовывать игровые карты или предметы, получая реальные текстуры, используемые в RimWorld.


GET
/api/v1/terrain/image

Возвращает изображение текстуры для конкретного определения ландшафта в формате Base64. Параметр name соответствует defName ландшафта (например, Soil, WaterDeep, Sand).

Example:

curl --request GET \
--url "http://localhost:8765/api/v1/terrain/image?name=Soil"

Response:

{
    "success": true,
    "data": {
        "name": "Soil",
        "image_base64": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0..."
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-14T14:15:30.000Z"
}


GET
/api/v1/item/image

Возвращает изображение конкретного игрового предмета в кодировке base64.

Example:

curl --request GET \
--url 'http://localhost:8765/api/v1/item/image?name=ComponentIndustrial'

Response:

{
    "success": true,
    "data": {
        "result": "success",
        "image_base64": "..."
    },
    "errors": [],
    "warnings": [],
    "timestamp": "2025-12-10T19:31:48.7480326Z"
}


POST
/api/v1/item/change/image

Загружает и применяет новую пользовательскую текстуру к конкретному игровому предмету или объекту. Принимает данные изображения в кодировке base64 вместе с различными свойствами рендеринга, такими как масштаб, направление взгляда и маскирование.

Example:

curl --request POST \
--url http://localhost:8765/api/v1/item/change/image \
--header 'content-type: application/json' \
--data '{
    "Name": "WoodLog",
    "Image": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
    "Direction": "South",
    "Offset": "0,0,0",
    "Scale": "1.0",
    "ThingType": "Item",
    "IsStackable": "true",
    "MaskImage": "",
    "UpdateItemIndex": 0
}'

Request:

{
    "Name": "WoodLog",
    "Image": "<base64_encoded_string>",
    "Direction": "South",
    "Offset": "0,0,0",
    "Scale": "1.0",
    "ThingType": "Item",
    "IsStackable": "true",
    "MaskImage": "<optional_base64_mask>",
    "UpdateItemIndex": 0
}

Response:

{
    "success": true,
    "errors": [],
    "warnings": [],
    "timestamp": "2026-02-21T20:15:30.000Z"
}