Home › Engine executable › Multiplayer and lobby vocabulary

Engine executable. Settings and tools of the game program (CivilizationVI.exe), usable without a mod. Mostly undocumented debug and configuration functionality; descriptions come from analysis of the executable and have not all been tried in the running game.

Multiplayer, lobby and Firaxis Live vocabulary

The names the engine executable uses for multiplayer lobbies, connections and the Firaxis Live service (145 names). Most useful for modders: the Lua game list entry (what Matchmaking.GetGameListEntry returns) and the lobby metadata keys behind it, each with its integer or string type read from the decompiled code. The network Lua functions themselves are on the Network and Matchmaking pages; the numeric enums (ServerType, KickReason, NetworkResult, ...) are on the enum tables. Log and error texts are on the messages page.

Scope and omissions. Only names and types are listed. The functions that create the Epic platform and start the Firaxis Live client also contain embedded service identifiers; they were deliberately not read for this page and none of those values are reproduced anywhere in this reference. Nothing here describes what is sent over the network beyond the key names.

Fields of the Lua game list entry (20)

The table Matchmaking.GetGameListEntry fills for every lobby or cloud game (decompiled AddLobbyToTable, 0x266980). The kind is the Lua type of the value. "Script uses" counts reads of the field in the game's own Lua files that use the matchmaking table.

Field Lua type Source Script uses
serverName string lobby name 2
numPlayers number current player count, from the lobby interface 3
maxPlayers number maximum players, from the lobby interface 1
Players string list of the lobby members, read from the metadata key Members 1
serverID number index of the entry in the lobby list (the argument of the call) 6
MapName string metadata key MapName 2
MapSize integer metadata key MapSize 2
RuleSet string metadata key RuleSet 1
RuleSetName string metadata key RuleSetName 4
EnabledMods string metadata key EnabledMods 3
EnabledGameModeNames string metadata key EnabledGameModeNames 3
Initialized integer metadata key Initialized 3
GameVersion string metadata key GameVersion 6
GameSpeed integer metadata key GameSpeed 1
GameSpeedName string metadata key GameSpeedName 4
GameStarted integer metadata key GameStarted 6
SavedGame integer metadata key SavedGame 2
CloudTurnPlayerName string metadata key CloudTurnPlayerName 4
VictoryName string metadata key VictoryName 0
VictoryPlayerName string metadata key VictoryPlayerName 0

Lobby metadata keys (18)

Keys the host writes into the lobby (or cloud match) metadata and clients read back. The kind comes from which accessor slot the code calls on the lobby interface: set/get integer or set/get string (Verified from the decompiled code). GameLaunchReady is written but not shown in the Lua entry; Members is only read.

Key Kind Written by Read by In the Lua entry
Initialized integer UpdateLobbyGameSettings (0x294ea0) AddLobbyToTable yes
GameVersion string UpdateLobbyGameSettings (0x294ea0) AddLobbyToTable yes
GameSpeed integer UpdateLobbyGameSettings (0x294ea0) AddLobbyToTable yes
GameSpeedName string UpdateLobbyGameSettings (0x294ea0) AddLobbyToTable yes
GameStarted integer UpdateLobbyGameSettings (0x294ea0) AddLobbyToTable yes
SavedGame integer UpdateLobbyGameSettings (0x294ea0) AddLobbyToTable yes
GameLaunchReady integer UpdateLobbyGameSettings (0x294ea0) — no
CloudTurnPlayerName string UpdateLobbyGameSettings (0x294ea0) AddLobbyToTable yes
VictoryName string UpdateLobbyGameSettings (0x294ea0) AddLobbyToTable yes
VictoryPlayerName string UpdateLobbyGameSettings (0x294ea0) AddLobbyToTable yes
MapName string UpdateLobbyMap (0x2956e0) AddLobbyToTable yes
MapDisplayName string UpdateLobbyMap (0x2956e0) AddLobbyToTable no
MapSize integer UpdateLobbyMap (0x2956e0) AddLobbyToTable yes
RuleSet string UpdateLobbyMod (0x295bb0) AddLobbyToTable yes
RuleSetName string UpdateLobbyMod (0x295bb0) AddLobbyToTable yes
EnabledMods string UpdateLobbyMod (0x295bb0) AddLobbyToTable yes
EnabledGameModeNames string UpdateLobbyMod (0x295bb0) AddLobbyToTable yes
Members string — AddLobbyToTable no

Platform lobby keys (Epic Online Services and Steam) (11)

Internal attribute names the lobby back ends use. The meaning is Inferred from the functions that use the names.

Name Meaning (inferred) Used by
_GAME_STARTED_ set when the host starts the game StartGame
PACK_DATA Steam server string key that carries the packed lobby data GetServerCustomString, RegisterServerStringKey
_NAME_ lobby name key of the Steam lobby OnLobbyEntered, OnLobbyMatchListCallback
LobbyZone Steam lobby search filter RequestLobbies
_LOBBY_NAME_ lobby (room) name CreateLobbyFromLobbyDetails, OnLobbyCreated
_LOBBY_PRIVATE_ private flag; changed by SetLobbyPrivacy CreateLobbyFromLobbyDetails, RequestLobbies, SetLobbyPrivacy
FXS:879689344 value of the bucket used by the game (matches only lobbies of this game) OnLobbyCreated, RequestLobbies
_BUCKET_ search bucket: lobby searches filter on it OnLobbyCreated, RequestLobbies
_LOBBY_JOIN_CODE_ join code players can type to enter a lobby OnLobbyCreated, RequestLobbies
_LOBBY_MAX_PLAYERS_ player limit set when the lobby is created OnLobbyCreated
CHUNKED_DATA marks lobby data that was split into chunks because one value is limited in size (the exe logs "Meta data too large") SetLobbyData

Firaxis cloud (PlayByCloud) keys (7)

Names used for cloud matches and cloud saves. Meaning inferred.

Name Meaning (inferred) Used by
C6GAME key prefix of cloud game data OnFiraxisLiveKeyDataError
_META suffix of the cloud key that holds a save file's metadata OnFiraxisLiveKeyDataError, OnFiraxisLiveKeyDataResult, Write
MatchName name of the Firaxis cloud match BroadcastGame, SetCurrentGameName
MaxPlayers player limit of the cloud match BroadcastGame
Metadata match metadata blob (the lobby metadata keys above) BroadcastGame, RefreshAppServerMetaData
PrivateGame private flag of the cloud match BroadcastGame, SetPrivateGame
JoinsBlocked cloud match attribute that stops new players from joining SetCloudJoinsBlocked

Connection close reasons (11)

Names the Epic transport logs when a connection ends (OnConnectionDropped). The numeric values are not in the strings.

Name Meaning (inferred) Used by
CCR_ClosedByLocalUser this player closed the connection OnConnectionDropped
CCR_ClosedByPeer the other side closed the connection OnConnectionDropped
CCR_ConnectionClosed connection closed (no specific reason) OnConnectionDropped
CCR_ConnectionFailed connection could not be established OnConnectionDropped
CCR_InvalidData received data failed validation OnConnectionDropped
CCR_InvalidMessage received message could not be parsed OnConnectionDropped
CCR_NegotiationFailed handshake failed OnConnectionDropped
CCR_TimedOut no data arrived in time OnConnectionDropped
CCR_TooManyConnections connection limit reached OnConnectionDropped
CCR_UnexpectedError unexpected error OnConnectionDropped
CCR_Unknown reason not known OnConnectionDropped

Lobby member status codes (6)

Names logged when the Epic lobby reports a member change (OnLobbyMemberStatusReceived).

Name Meaning (inferred) Used by
LMS_CLOSED the lobby was closed OnLobbyMemberStatusReceived
LMS_DISCONNECTED a member dropped OnLobbyMemberStatusReceived
LMS_JOINED a member joined the lobby OnLobbyMemberStatusReceived
LMS_KICKED a member was removed by the host OnLobbyMemberStatusReceived
LMS_LEFT a member left OnLobbyMemberStatusReceived
LMS_PROMOTED a member became the host OnLobbyMemberStatusReceived

Firaxis Live session fields (12)

Field names the client sets when it creates the Firaxis Live client (names only; the values, including any identifiers, are not listed here).

Name Meaning (inferred) Used by
BuildVersion game build reported to the service CreateFiraxisLive
FiraxisLiveID Firaxis Live account id CreateFiraxisLive
GamerTag player display name CreateFiraxisLive
SessionID id of the current session CreateFiraxisLive
UserID user id CreateFiraxisLive
ctpGameDataPath folder of the game data (for the client library) CreateFiraxisLive
ctpLogPath log folder CreateFiraxisLive
ctpPermanentPath folder for permanent client data CreateFiraxisLive
ctpTempPath temporary folder CreateFiraxisLive
my2KClientID client identifier of the 2K account service CreateFiraxisLive
my2KLocal local account state of the 2K service CreateFiraxisLive
my2KSecret name of a credential field (its value is not listed here) CreateFiraxisLive

Firaxis Live configuration (5)

Data push topics and flags of the online configuration.

Name Meaning (inferred) Used by
App/FiraxisLive/Configuration data push topic: online configuration DoDataPushNotify
App/FiraxisLive/MarketingMessage data push topic: marketing message for the main menu DoDataPushNotify
SendAppLogs configuration flag: upload application logs HandleConfigurationUpdates
SendAppMinidumps configuration flag: upload crash dumps HandleConfigurationUpdates
App/FiraxisLive/OnlineTelemetryConfiguration.xml online telemetry ruleset document (see the telemetry page) OnOnlineConfigUpdated

Firaxis Live operations (20)

The server calls the client makes, from the "X failed" messages of the client wrapper. These are the cloud-match and account operations behind PlayByCloud and the 2K account link.

20 names
Name Function
EndMatch EndMatch (0x521dd0)
EndTurnMatch EndTurnMatch (0x521e10)
GetMatchSaveGame GetMatchSaveGame (0x522060)
KVPDataGetEntries GetKvpDataEntries (0x521f60)
KickPlayerMatch KickPlayerMatch (0x522710)
KillMatch KillMatch (0x522750)
MatchCreate HostMatch (0x5221a0)
MatchGetInfo GetMatchInfo (0x521fe0)
MatchJoin JoinMatch (0x5226d0)
MatchList GetMatchList (0x522020)
MatchStartMatch StartMatch (0x5252a0)
My2KLinkAccount LinkAccount (0x522790)
My2KLogon Logon (0x5228e0)
My2KUnlinkAccount UnlinkAccount (0x5252e0)
QuitMatch QuitMatch (0x524500)
SetMatchPlayerMetadata SetMatchPlayerMetadata (0x525160)
SetMatchPlayerOrder SetMatchPlayerOrder (0x5251b0)
SetMatchPlayerStatus SetMatchPlayerStatus (0x5251f0)
UpdateMatchAttributes UpdateMatchAttributes (0x5253c0)
UpdateMatchSaveGame UpdateMatchSaveGame (0x525400)

Firaxis Live notifications (35)

Notification callbacks the client registers (FiraxisLive_On...), each handled by one function.

35 names
Name Function
FiraxisLive_OnConnectFailureNotify OnConnectFailureNotify (0x522b20)
FiraxisLive_OnConnectionStatusNotify OnConnectionStatusNotify (0x522bc0)
FiraxisLive_OnDataPushNotify OnDataPushNotify (0x522c60)
FiraxisLive_OnGetDOBDataNotify OnGetDOBDataNotify (0x522d50)
FiraxisLive_OnGetGrantedEntitlements OnGetGrantedEntitlements (0x522dd0)
FiraxisLive_OnGetLogonDataNotify OnGetLogonDataNotify (0x522ea0)
FiraxisLive_OnGetNewAccountDataNotify OnGetNewAccountDataNotify (0x522f40)
FiraxisLive_OnKVPDataErrorNotify OnKVPDataErrorNotify (0x522fd0)
FiraxisLive_OnKVPDataListNotify OnKVPDataListNotify (0x523070)
FiraxisLive_OnKVPDataNotify OnKVPDataNotify (0x523170)
FiraxisLive_OnKVPDataProgressNotify OnKVPDataProgressNotify (0x523210)
FiraxisLive_OnLegalNotify OnLegalNotify (0x523300)
FiraxisLive_OnLoggedOffNotify OnLoggedOffNotify (0x523650)
FiraxisLive_OnLoginStatusNotify OnLoginStatusNotify (0x5236e0)
FiraxisLive_OnMatchCreateDataNotify OnMatchCreateDataNotify (0x5237f0)
FiraxisLive_OnMatchEndMatchNotify OnMatchEndMatchNotify (0x523890)
FiraxisLive_OnMatchEndTurnNotify OnMatchEndTurnNotify (0x523930)
FiraxisLive_OnMatchGetInfoNotify OnMatchGetInfoNotify (0x5239d0)
FiraxisLive_OnMatchGetSaveGameNotify OnMatchGetSaveGameNotify (0x523a70)
FiraxisLive_OnMatchJoinNotify OnMatchJoinNotify (0x523b10)
FiraxisLive_OnMatchKickPlayerNotify OnMatchKickPlayerNotify (0x523bb0)
FiraxisLive_OnMatchKillMatchNotify OnMatchKillMatchNotify (0x523c50)
FiraxisLive_OnMatchListDataNotify OnMatchListDataNotify (0x523cf0)
FiraxisLive_OnMatchQuitMatchNotify OnMatchQuitMatchNotify (0x523de0)
FiraxisLive_OnMatchSetPlayerMetadataNotify OnMatchSetPlayerMetadataNotify (0x523e80)
FiraxisLive_OnMatchSetPlayerOrderNotify OnMatchSetPlayerOrderNotify (0x523f20)
FiraxisLive_OnMatchSetPlayerStatusNotify OnMatchSetPlayerStatusNotify (0x523fc0)
FiraxisLive_OnMatchSetSlotTypeNotify OnMatchSetSlotTypeNotify (0x524060)
FiraxisLive_OnMatchStartMatchNotify OnMatchStartMatchNotify (0x524100)
FiraxisLive_OnMatchUpdateAttributesNotify OnMatchUpdateAttributesNotify (0x5241a0)
FiraxisLive_OnMatchUpdateSaveGameNotify OnMatchUpdateSaveGameNotify (0x524240)
FiraxisLive_OnSimpleKVPInfoNotify OnSimpleKVPInfoNotify (0x5242e0)
FiraxisLive_OnSimpleKVPNotify OnSimpleKVPNotify (0x524350)
FiraxisLive_OnStateNotify OnStateNotify (0x5243c0)
FiraxisLive_OnUserStateNotify OnUserStateNotify (0x524460)