]> git.localhorst.tv Git - blank.git/blob - doc/protocol
documented packet structure
[blank.git] / doc / protocol
1 Structure
2 =========
3
4 Offset  Size   Type  Description
5  0      4      data  protocol tag, must be 0xFB1AB1AF
6  4      2      uint  sequence number
7  6      2      uint  sequence ack
8  8      4      data  bitfield with previous acks
9 12      1      uint  type code for the payload
10 13      3      none  padding, reserved for future use
11 16      0-484  data  payload, contents and length vary,
12                      mostly depending on the type code
13
14 all multibyte values are in LE
15 the current code does no conversion, so only works on machines
16 with native LE (or BE if the server and all clients are on that,
17 but that's by accident and will break if conversion code is ever
18 added)
19
20
21 Packets
22 =======
23
24 Ping
25 ----
26
27 To tell the other side we're still alive.
28 Both server and client will send this if they haven't sent something in
29 a while.
30
31 Code: 0
32 Payload: none
33
34
35 Login
36 -----
37
38 Sent from client to serveri as a request to join. The server may
39 respond negatively if the player name is already taken or some cap has
40 been reached.
41
42 Code: 1
43 Payload:
44         0 player name, max 32 byte UTF-8 string,
45           shorter names should be zero terminated
46
47
48 Join
49 ----
50
51 Sent by the server either as a response to a successful login or when
52 it's changing worlds.
53
54 Code: 2
55 Payload:
56          0 entity ID of the player, 32bit unsigned int
57          4 chunk coords of the player, 3x 32bit signed int
58         16 pos/vel/rot/ang of the player, 13x 32bit float
59         68 name of the world the server's currently running
60            max 32 byte UTF-8 string
61
62
63 Part
64 ----
65
66 Sent by the server either as a respons to a failed login or when the
67 client was kicked.
68 Optionally sent by the client on disconnect.
69
70 Code: 3
71 Payload: none