Client must send this message during onboarding phase of the game to be able to play. Joining means specifying how client is going to be seen by others: providing username and a color.
struct c2s_join_t {
char type; // MSG_C2S_JOIN
char name_length; // Length of the name
char name[name_length]; // Name of the player as seen by others
unsigned char r; // (r, g, b) - Color of the player
unsigned char g;
unsigned char b;
};
function send_join(socket, name, r, g, b) {
let payload = new Uint8Array(1 + 1 + name.length + 3);
payload[0] = C2S_JOIN;
payload[1] = name.length;
for (let i = 0; i < name.length; i++) {
payload[i + 2] = name.charCodeAt(i);
}
payload[2 + name.length + 0] = r;
payload[2 + name.length + 1] = g;
payload[2 + name.length + 2] = b;
socket.send(payload);
}