🖥️ 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
¶
/api/v1/camera/change/zoom
¶
Настраивает уровень масштабирования игровой камеры на указанное значение, мгновенно изменяя поле зрения. Это позволяет точно контролировать, насколько близко или далеко находится камера на игровой карте.
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
¶
/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
¶
/api/v1/camera/follow/pawn
¶
Перемещает камеру к пешке по её числовому 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
¶
/api/v1/camera/screenshot
¶
Делает скриншот текущего вида игры в формате 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
¶
/api/v1/camera/screenshot/native
¶
Перемещает камеру в указанную позицию и сохраняет высококачественный скриншот напрямую на диск хост-машины.
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
¶
/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
¶
/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
¶
/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
¶
/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
¶
/api/v1/ui/announce
¶
Изображения¶
Предоставляет конечные точки для извлечения визуальных ресурсов и текстур из игры. Это необходимо для внешних инструментов, которым нужно визуально отрисовывать игровые карты или предметы, получая реальные текстуры, используемые в RimWorld.
GET
/api/v1/terrain/image
¶
/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
¶
/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
¶
/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"
}