146 lines
No EOL
4.8 KiB
Markdown
146 lines
No EOL
4.8 KiB
Markdown
# Protocol notes
|
|
|
|
Raw UDP Payload:
|
|
|
|
```
|
|
0f0000020007007544b3c59018374774c6b246009805000009955f3c00067134
|
|
0281062c090900001d007f5e0e22c6ddf52247cce2b64655163b8c8e0b4a272f
|
|
44e7afc745ef91354600000000000000000008155f8300035186005100e9fb08
|
|
050040007e5700ffff6301000010ff2365f96e1e00000002000000105f000006
|
|
21e000daf7b1f73a0000c800ff7544b3c59018374774c6b24697f5d702000000
|
|
00000000000000000000000000000000002c2502159ba419d1c4012d3c47252d
|
|
af465359899e7745e6531142b96009c4ffff2402159e7f005800b5ff20f1f019
|
|
04210bd5f5ffff2302159f4a6cd1c44625314792e5b04614cb45d6da5c26aa4e
|
|
44a2ca72c5cdb4edc3ffff2202159e7e0014009efff6e8c89f0822fc8ff3ffff
|
|
```
|
|
|
|
Hexdump:
|
|
|
|
```
|
|
0000 0F 00 00 02 00 07 00 75 44 B3 C5 90 18 37 47 74 .......uD....7Gt
|
|
0010 C6 B2 46 00 98 05 00 00 09 95 5F 3C 00 06 71 34 ..F......._<..q4
|
|
0020 02 81 06 2C 09 09 00 00 1D 00 7F 5E 0E 22 C6 DD ...,.......^."..
|
|
0030 F5 22 47 CC E2 B6 46 55 16 3B 8C 8E 0B 4A 27 2F ."G...FU.;...J'/
|
|
0040 44 E7 AF C7 45 EF 91 35 46 00 00 00 00 00 00 00 D...E..5F.......
|
|
0050 00 00 08 15 5F 83 00 03 51 86 00 51 00 E9 FB 08 ...._...Q..Q....
|
|
0060 05 00 40 00 7E 57 00 FF FF 63 01 00 00 10 FF 23 ..@.~W...c.....#
|
|
0070 65 F9 6E 1E 00 00 00 02 00 00 00 10 5F 00 00 06 e.n........._...
|
|
0080 21 E0 00 DA F7 B1 F7 3A 00 00 C8 00 FF 75 44 B3 !......:.....uD.
|
|
0090 C5 90 18 37 47 74 C6 B2 46 97 F5 D7 02 00 00 00 ...7Gt..F.......
|
|
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
|
00b0 00 2C 25 02 15 9B A4 19 D1 C4 01 2D 3C 47 25 2D .,%........-<G%-
|
|
00c0 AF 46 53 59 89 9E 77 45 E6 53 11 42 B9 60 09 C4 .FSY..wE.S.B.`..
|
|
00d0 FF FF 24 02 15 9E 7F 00 58 00 B5 FF 20 F1 F0 19 ..$.....X... ...
|
|
00e0 04 21 0B D5 F5 FF FF 23 02 15 9F 4A 6C D1 C4 46 .!.....#...Jl..F
|
|
00f0 25 31 47 92 E5 B0 46 14 CB 45 D6 DA 5C 26 AA 4E %1G...F..E..\&.N
|
|
0100 44 A2 CA 72 C5 CD B4 ED C3 FF FF 22 02 15 9E 7E D..r......."...~
|
|
0110 00 14 00 9E FF F6 E8 C8 9F 08 22 FC 8F F3 FF FF ..........".....
|
|
```
|
|
|
|
Split up into chunks:
|
|
|
|
```
|
|
0f 00 0002 0007 00 7544b3c5 90183747 74c6b246 0098
|
|
|
|
0500 00 09955f3c000671340281062c090900001d007f5e0e22c6ddf52247cce2b64655163b8c8e0b4a272f44e7afc745ef913546000000000000
|
|
0000 00 08155f8300035186005100e9fb08050040007e5700ffff6301000010ff2365f96e1e000000
|
|
0200 00 00105f00000621e000daf7b1f73a0000c800ff7544b3c59018374774c6b24697f5d70200000000000000000000000000000000000000002c
|
|
2502 15 9ba419d1c4012d3c47252daf465359899e7745e6531142b96009c4ffff
|
|
2402 15 9e7f005800b5ff20f1f01904210bd5f5ffff
|
|
2302 15 9f4a6cd1c44625314792e5b04614cb45d6da5c26aa4e44a2ca72c5cdb4edc3ffff
|
|
2202 15 9e7e0014009efff6e8c89f0822fc8ff3ffff
|
|
```
|
|
|
|
Log message:
|
|
|
|
```
|
|
Size: 0285 PlyId: 002 NumVals: 007
|
|
( 0:'net 5'-00) 09955f3c000671340281062c090900001d007f5e0e22c6ddf52247cce2b64655163b8c8e0b4a272f44e7afc745ef913546000000000000
|
|
( 1:'net 0'-00) 08155f8300035186005100e9fb08050040007e5700ffff6301000010ff2365f96e1e000000
|
|
( 2:'net 2'-00) 00105f00000621e000daf7b1f73a0000c800ff7544b3c59018374774c6b24697f5d70200000000000000000000000000000000000000002c
|
|
( 3:'net549'-15) 9ba419d1c4012d3c47252daf465359899e7745e6531142b96009c4ffff
|
|
( 4:'net548'-15) 9e7f005800b5ff20f1f01904210bd5f5ffff
|
|
( 5:'net547'-15) 9f4a6cd1c44625314792e5b04614cb45d6da5c26aa4e44a2ca72c5cdb4edc3ffff
|
|
( 6:'net546'-15) 9e7e0014009efff6e8c89f0822fc8ff3ffff
|
|
```
|
|
|
|
Structure:
|
|
|
|
```
|
|
|
|
0f00 # Unk
|
|
0002 # PlayerID
|
|
0007 # Num Vals
|
|
00 # Unk
|
|
7544b3c5 # Pos.X
|
|
90183747 # Pos.Y
|
|
74c6b246 # Pos.Z
|
|
00 # Player Index
|
|
98 # Rtt
|
|
0500 00 09955f3c000671340281062c090900001d007f5e0e22c6ddf52247cce2b64655163b8c8e0b4a272f44e7afc745ef913546000000000000
|
|
0000 00 08155f8300035186005100e9fb08050040007e5700ffff6301000010ff2365f96e1e000000
|
|
0200 00 00105f00000621e000daf7b1f73a0000c800ff7544b3c59018374774c6b24697f5d70200000000000000000000000000000000000000002c
|
|
2502 15 9ba419d1c4012d3c47252daf465359899e7745e6531142b96009c4ffff
|
|
2402 15 9e7f005800b5ff20f1f01904210bd5f5ffff
|
|
2302 15 9f4a6cd1c44625314792e5b04614cb45d6da5c26aa4e44a2ca72c5cdb4edc3ffff
|
|
2202 15 9e7e0014009efff6e8c89f0822fc8ff3ffff
|
|
|
|
```
|
|
|
|
```c
|
|
#pragma endian big
|
|
|
|
struct NetValue {
|
|
le u16 entity_index;
|
|
u8 entity_type;
|
|
char data[?]; // TODO: how is length determined?
|
|
};
|
|
|
|
struct NetData {
|
|
le u16 unk;
|
|
u16 player_id;
|
|
u16 num_vals;
|
|
u8 unk_2;
|
|
le float pos[3];
|
|
u8 player_idx;
|
|
u8 rtt_ms;
|
|
NetValue values[num_vals];
|
|
};
|
|
|
|
```
|
|
|
|
Packets are split into Data packets (map change, resources, chat message, etc) and entity (position?) updates
|
|
|
|
## Packet types
|
|
|
|
- 00: MapChange:
|
|
- str map_name
|
|
- str game_mode
|
|
|
|
- 01: Resource:
|
|
- u8: unk
|
|
- u16?: num_resources
|
|
- [str: resource_name]*num_resources
|
|
|
|
- 02: Unknown (Keepalive?)
|
|
|
|
- 03: ChatMessage
|
|
- str: message
|
|
|
|
- 04: UsrString:
|
|
- str: data
|
|
|
|
- 05: Player join:
|
|
- u8: player_id
|
|
- str: player_name
|
|
- str: ship_model
|
|
- u16: max_health
|
|
- str[4]: engine_models
|
|
- str: pilot_model
|
|
- str: loadout
|
|
- u32: unknown
|
|
|
|
- 06: unknown
|
|
- u8: ent_index
|
|
|
|
- 07: unknown (reload?) |