# Lobby
The lobby uses a 196 byte data field to communicate game settings between the players. Lobbies always require a host to allow new players to connect. Only the hosting player can change the settings.
Packets are transmitted in intervals of 4s.
## Values and Length
```ruby
def LobbySettings
byte20 :header
4 bytes
array :player_network_ids,
type => :int32,
initial_length => 8
int8 :ready
69 bytes
int8 :checkboxes
byte
6bit :reveal_map
2bit :game_speed
1 byte
byte
4bit :starting_age
4bit :starting_resources
byte
4bit :map_size
4bit :difficulty
int8 :map_id
int8 :victory
1 byte
int16 :victory_limit
int8 :max_population
8 bytes
array :player_civ_ids,
type => :int8,
initial_length => 8
16 bytes
array :teams,
type => :int8,
initial_length => 8
int16 :zero
int8 :map_description_length
array :map_description,
type => :char,
initial_length => :map_description_length + 6
end
```
*:player_network_ids*
The network IDs of the players. If a slot is empty, the corresponding value in the array is `0x00`.
*:ready*
This byte indicates readied slots. Every bit (read from right to left) is associated with a slot in the lobby. If the bit is set to one, the slot is closed. Slots are also considered ready when they are filled with an AI or are closed.
For example, the value `0x0c` translates to a binary notation of `00001100b`. Therefore, the third and forth slot are closed.
*:checkboxes*
A byte which is used to determine which of the checkbox options in the lower right are checked. Every bit is associated with checkbox. A bit is set to 1, when the checkbox is **not** set to its standard setting.
Checkbox | On|Off | Bit representation
--------------|--------|-------------------
Team together | 0|1 | `01000000b`
Lock teams | 1|0 | `00001000b`
All tech | 1|0 | `10000000b`
Lock speed | 1|0 | `00000100b`
Allow cheats | 1|0 | `00000001b`
*:reveal_map*
Determines whether the fog of war is present. Uses the 5th and 6th bit of the byte.
Mode | Value
---------|------
Normal | 0x00
Explored | `00001000b`
Visible | `00000100b`
*:game_speed*
Sets the default game speed. Uses the 7th and 8th bit of the byte.
Speed | Value
-------|------
Slow | `00000001b`
Normal | `00000010b`
Fast | `00000011b`
*:starting_age*
Sets the starting age.
Age | Value
--------------|------
Standard | 0x0
Dark | 0x2
Feudal | 0x3
Castle | 0x4
Imperial | 0x5
Post-Imperial | 0x6
*:starting_resources*
Sets the amount of starting resources.
Resources| Value
---------|------
Standard | 0x0
Low | 0x1
Medium | 0x2
High | 0x3
*:map_size*
Sets the map size.
Size | Value
-----------|------
Very Small | 0x0
Small | 0x1
Medium | 0x2
Normal | 0x3
Large | 0x4
Giant | 0x5
*:difficulty*
Sets the difficulty of the AI.
Difficulty | Value
-----------|------
Very Easy | 0x4
Standard | 0x3
Medium | 0x2
Hard | 0x1
Hardest | 0x0
*:map_id*
The ID of map that will be generated.
*:victory*
Sets the victory condition.
Victory | Value
------------------|------
Standard | 0x00
Conquest | 0x01
Time Limit | 0x07
Score | 0x08
Last Man Standing | 0x0b
*:victory_limit*
Amount of points to win in score mode or timer for the time limit game mode.
*:max_population*
This field is used for setting the maximum population for the game.
*:player_civ_ids*
The ID of the civilisations the players have chosen. Defaults to Random (`0x1e`).
*:teams*
The teams of each individual player. For whatever reason, the value for no team is `0x01` which leaves the teams 1, 2, 3 and 4 with these values:
Team | Value
------------------|------
None | 0x01
1 | 0x02
2 | 0x03
3 | 0x04
4 | 0x05
Random | 0x06
*:zero*
These 2 bytes are always zero.
*:map_description_length*
The length of the name a custom maps. Only present when custom maps are selected.
*:map_description*
The name of the custom map encoded in extended ASCII. It starts with 6 bytes that are used for formatting and not displayed by the game.