Packet specification
The packet is designed to be always padded to 4 bytes. All values are
little endian encoded. All packets have a 4 byte header representing an
integer, specifying the type of data:
| Type |
Value |
| 0 |
null |
| 1 |
bool |
| 2 |
integer |
| 3 |
float |
| 4 |
string |
| 5 |
vector2 |
| 6 |
rect2 |
| 7 |
vector3 |
| 8 |
transform2d |
| 9 |
plane |
| 10 |
quat |
| 11 |
aabb |
| 12 |
basis |
| 13 |
transform |
| 14 |
color |
| 15 |
node path |
| 16 |
rid |
| 17 |
object |
| 18 |
dictionary |
| 19 |
array |
| 20 |
raw array |
| 21 |
int array |
| 22 |
real array |
| 23 |
string array |
| 24 |
vector2 array |
| 25 |
vector3 array |
| 26 |
color array |
| 27 |
max |
Following this is the actual packet contents, which varies for each type
of packet:
0: null
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
0 for False, 1 for True |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
Signed, 32-Bit Integer |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Float |
IEE 754 32-Bits Float |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
String Length (in Bytes) |
| 8 |
X |
Bytes |
UTF-8 Encoded String |
This field is padded to 4 bytes.
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Float |
X Coordinate |
| 8 |
4 |
Float |
Y Coordinate |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Float |
X Coordinate |
| 8 |
4 |
Float |
Y Coordinate |
| 12 |
4 |
Float |
X Size |
| 16 |
4 |
Float |
Y Size |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Float |
X Coordinate |
| 8 |
4 |
Float |
Y Coordinate |
| 12 |
4 |
Float |
Z Coordinate |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Float |
Normal X |
| 8 |
4 |
Float |
Normal Y |
| 12 |
4 |
Float |
Normal Z |
| 16 |
4 |
Float |
Distance |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Float |
Imaginary X |
| 8 |
4 |
Float |
Imaginary Y |
| 12 |
4 |
Float |
Imaginary Z |
| 16 |
4 |
Float |
Real W |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Float |
X Coordinate |
| 8 |
4 |
Float |
Y Coordinate |
| 12 |
4 |
Float |
Z Coordinate |
| 16 |
4 |
Float |
X Size |
| 20 |
4 |
Float |
Y Size |
| 24 |
4 |
Float |
Z Size |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Float |
[0][0] |
| 8 |
4 |
Float |
[0][1] |
| 12 |
4 |
Float |
[0][2] |
| 16 |
4 |
Float |
[1][0] |
| 20 |
4 |
Float |
[1][1] |
| 24 |
4 |
Float |
[1][2] |
| 28 |
4 |
Float |
[2][0] |
| 32 |
4 |
Float |
[2][1] |
| 36 |
4 |
Float |
[2][2] |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Float |
Red (0..1) |
| 8 |
4 |
Float |
Green (0..1) |
| 12 |
4 |
Float |
Blue (0..1) |
| 16 |
4 |
Float |
Alpha (0..1) |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
String Length, or New Format (val&0x80000000!=0 and NameCount=val&0x7FFFFFFF) |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
val&0x7FFFFFFF = elements, val&0x80000000 = shared (bool) |
Then what follows is, for amount of “elements”, pairs of key and value,
one after the other, using this same format.
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
val&0x7FFFFFFF = elements, val&0x80000000 = shared (bool) |
Then what follows is, for amount of “elements”, values one after the
other, using this same format.
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
Array Length (Bytes) |
| 8..8+length |
1 |
Byte |
Byte (0..255) |
The array data is padded to 4 bytes.
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
Array Length (Integers) |
| 8..8+length*4 |
4 |
Integer |
32 Bits Signed Integer |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
Array Length (Floats) |
| 8..8+length*4 |
4 |
Integer |
32 Bits IEE 754 Float |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
Array Length (Strings) |
For each String:
| Offset |
Len |
Type |
Description |
| X+0 |
4 |
Integer |
String Length |
| X+4 |
X |
Bytes |
UTF-8 Encoded String |
Every string is padded to 4 bytes.
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
Array Length |
| 8..8+length*8 |
4 |
Float |
X Coordinate |
| 8..12+length*8 |
4 |
Float |
Y Coordinate |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
Array Length |
| 8..8+length*12 |
4 |
Float |
X Coordinate |
| 8..12+length*12 |
4 |
Float |
Y Coordinate |
| 8..16+length*12 |
4 |
Float |
Z Coordinate |
| Offset |
Len |
Type |
Description |
| 4 |
4 |
Integer |
Array Length |
| 8..8+length*16 |
4 |
Float |
Red (0..1) |
| 8..12+length*16 |
4 |
Float |
Green (0..1) |
| 8..16+length*16 |
4 |
Float |
Blue (0..1) |
| 8..20+length*16 |
4 |
Float |
Alpha (0..1) |