143 lines
5.4 KiB
Markdown
143 lines
5.4 KiB
Markdown
# Unreal Rundown Server API
|
||
|
||
|
||
|
||
## Descrption
|
||
|
||
As I understand, this experimental feature of Motion Design Plugin that allow us to make several action with rundowns.
|
||
This documentation based on [Unreal Engine 5.5.1](https://epicgames.com) and Motion Design v1.0.
|
||
The initial setup of the rundown server is describe [here](dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-rundown-server-for-motion-design-in-unreal-engine).
|
||
|
||
### Establishing connection
|
||
|
||
The port number and the server bind address is setup in unreal engine project setting window section _Plugins|Websocket Messaging|Transport_. Another important thing is to select the **right transport type (JSON|CBOR)**.
|
||
|
||
After establishing the websocket connection, you will receive a lot of messages that does not you need. First of all, you **must** send an ``AvaRundownPing`` and the the rundown server will send you back an ``AvaRundownPong`` with a ``Sender`` field needed to start sending other commands.
|
||
|
||
|
||
> The Pong message Sender field is the UUID of the Rundown server’s endpoint in the message bus system. This is then used as the Recipients field for all other messages from the Websocket client.
|
||
>
|
||
> --- [Message Bus Handshake with Rundown Server in Unreal Engine 5.5 Official documentation](dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-rundown-server-for-motion-design-in-unreal-engine)
|
||
|
||
Once you have this precious (it takes me days to finnaly understand that without at least on ``Recipients`` in the array nothing will happen), just run some [commands](#commands)
|
||
|
||
### Common Fields
|
||
|
||
#### ``Sender``
|
||
An Id you can choose. It's something like your the expeditor and the rundownServer will respond backl to you by placing ``Sender`` yopu provided in the ``Recipients`` field.
|
||
|
||
#### ``Recipients``
|
||
Array of recipients of the message
|
||
|
||
#### ``MessageType``
|
||
This is the real endpoints of the message, something like the command address. The ``MessageType`` can have multiple usage out of RundownServer. For example, [with http commands via websockets](https://dev.epicgames.com/documentation/en-us/unreal-engine/remote-control-api-websocket-reference-for-unreal-engine#websocketmessagetype-http) or [managing remote control presets.](https://dev.epicgames.com/documentation/en-us/unreal-engine/remote-control-api-websocket-reference-for-unreal-engine#websocketmessagetype-presetregister)
|
||
|
||
#### ``Scope``
|
||
Enum determinig the scope of the message bus system. For the rundownServer it always will be "Network"
|
||
|
||
#### ``Expiration``
|
||
Unix time at which the message gets discarded. **Important**
|
||
|
||
#### ``Annotations``
|
||
Optional message annotations. I've never use this for now.
|
||
|
||
#### ``Message``
|
||
Content of the message. This is the specific part of the messaging system. It's parameters that you _send_ to the server.
|
||
|
||
|
||
### Commands
|
||
|
||
#### ServerInfo/Script/AvalancheMedia.AvaRundownPing
|
||
example:
|
||
```json
|
||
{
|
||
"Sender": "F2DCD99C267C4F84B50CF091AA4ED608",
|
||
"Recipients": [],
|
||
"MessageType": "/Script/AvalancheMedia.AvaRundownPing",
|
||
"Expiration": 253402300799,
|
||
"Scope": "Network",
|
||
"Annotations": {},
|
||
"Message":
|
||
{
|
||
"requestId" : -1 // could be customize to your needs
|
||
}
|
||
}
|
||
```
|
||
#### ServerInfo/Script/AvalancheMedia.AvaRundownGetServerInfo
|
||
example:
|
||
```json
|
||
{
|
||
"Sender": "F2DCD99C267C4F84B50CF091AA4ED608",
|
||
"Recipients": [
|
||
"139696A842C8861F52E756BB60AA8661"
|
||
],
|
||
"MessageType": "/Script/AvalancheMedia.AvaRundownGetServerInfo",
|
||
"Expiration": 253402300799,
|
||
"Scope": "Network",
|
||
"Annotations": {},
|
||
"Message":
|
||
{
|
||
"requestId" : -1 // could be customize to your needs
|
||
}
|
||
}
|
||
```
|
||
|
||
#### ServerInfo/Script/AvalancheMedia.AvaRundownGetRundowns
|
||
example:
|
||
```json
|
||
{
|
||
"Sender": "F2DCD99C267C4F84B50CF091AA4ED608",
|
||
"Recipients": [
|
||
"139696A842C8861F52E756BB60AA8661"
|
||
],
|
||
"MessageType": "/Script/AvalancheMedia.AvaRundownGetRundowns",
|
||
"Expiration": 253402300799,
|
||
"Scope": "Network",
|
||
"Annotations": {},
|
||
"Message":
|
||
{
|
||
"requestId" : -1 // could be customize to your needs
|
||
}
|
||
}
|
||
```
|
||
#### ServerInfo/Script/AvalancheMedia.AvaRundownLoadRundown
|
||
example:
|
||
```json
|
||
{
|
||
"Sender": "F2DCD99C267C4F84B50CF091AA4ED608",
|
||
"Recipients": [
|
||
"139696A842C8861F52E756BB60AA8661"
|
||
],
|
||
"MessageType": "/Script/AvalancheMedia.AvaRundownLoadRundown",
|
||
"Expiration": 253402300799,
|
||
"Scope": "Network",
|
||
"Annotations": {},
|
||
"Message":
|
||
{
|
||
"rundown": "/Game/Rundowns/001Rundow.001Rundown", // rundown Path within unreal
|
||
"requestId" : -1 // could be customize to your needs
|
||
}
|
||
}
|
||
```
|
||
|
||
|
||
|
||
|
||
## More infos and useful links
|
||
|
||
|
||
### Unreal Engine 5.5 Official Documentation
|
||
|
||
- [Rundown Server WebSocket API Reference](https://dev.epicgames.com/documentation/en-us/unreal-engine/WebAPI/RundownServerWebSocketAPIReference#message:pagedetails)
|
||
- [Setting Up Rundown Server for Motion](https://dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-rundown-server-for-motion-design-in-unreal-engine#editingthepagercpwithremotecontrolapi)
|
||
- [General Documentation for Motion Design](https://dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-rundown-server-for-motion-design-in-unreal-engine#editingthepagercpwithremotecontrolapi)
|
||
|
||
### Unofficial Documentation
|
||
|
||
- [Pixel Prof Youtube channel with a lot of useful and life-saving ressources](https://www.youtube.com/@PixelProf/videos)
|
||
|
||
## Author
|
||
|
||
[Ange-Marie MAURIN](mailto://a-m.maurin@a2msystemes.fr) | [GitHub](https://github.com/a2mSystemes)
|
||
|