PROTOCOL all numbers are packed unless stated otherwise packed values are msb strings and blobs are prefixed with a packed ushort length byte n is b.n region n is r.n --- byte the zero: 0xDE byte the one: 0xAD byte the two: packet id byte the 3-6: total body length - uint byte the bytes after the header octet bytes bytes: raw body data shoved next to each other with no separation --- client -> server id 0: registration attempt r.0 - username - string r.1 - pin - ushort (max 9999) id 1: login attempt r.0 - username - string r.1 - pin - ushort (max 9999) id 2: ctx change response r.0 - ack - bool r.1 - ctx id - ushort --- server -> client id 0: registration response r.0 - succeeded - bool r.1 - status - string id 1: login response r.0 - succeeded - bool r.1 -> status - string (if r.0 false) -> user id - ushort (if r.0 true) id 2: ctx change request r.0 - ctx id - ushort