Sure.
The entire function CreateLobby:
try {
CreateLobbyOptions createLobbyOptions = new CreateLobbyOptions {
IsPrivate = LobbyData.is_private,
Player = GetPlayer(),
Data = new Dictionary<string, DataObject> {
{ "GameMode", new DataObject(DataObject.VisibilityOptions.Public, LobbyData.game_mode) },
{ "Map", new DataObject(DataObject.VisibilityOptions.Public, LobbyData.game_map) },
{ "ModifierOutbreak", new DataObject(DataObject.VisibilityOptions.Public, LobbyData.modifier_outbreak) },
{ "ModifierTiers1", new DataObject(DataObject.VisibilityOptions.Public, LobbyData.modifier_tiers1) },
{ "ModifierBuildings", new DataObject(DataObject.VisibilityOptions.Public, LobbyData.modifier_buildings) },
{ "ModifierStorm", new DataObject(DataObject.VisibilityOptions.Public, LobbyData.modifier_storm) },
{ "ModifierRifle", new DataObject(DataObject.VisibilityOptions.Public, LobbyData.modifier_rifle) },
{ "Modifier1Life", new DataObject(DataObject.VisibilityOptions.Public, LobbyData.modifier_1life) },
{ "ModifierTraining", new DataObject(DataObject.VisibilityOptions.Public, LobbyData.modifier_training_mode) },
{ "KEY_START_GAME", new DataObject(DataObject.VisibilityOptions.Member, "0") }
}
};
Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(LobbyData.game_description, LobbyData.max_players, createLobbyOptions);
hostLobby = lobby;
joinedLobby = hostLobby;
nb_players.text = (lobby.MaxPlayers - lobby.AvailableSlots) + " / " + lobby.MaxPlayers;
lobby_code_input.GetComponent<TMP_InputField>().text = lobby.LobbyCode;
Debug.Log("Create Lobby: " + lobby.Name + " (" + lobby.Id + ") map: " + lobby.Data["Map"].Value + " / " + lobby.Data["GameMode"].Value + " " + lobby.MaxPlayers + " - " + lobby.LobbyCode);
DisplayPlayers();
} catch (LobbyServiceException e) {
Debug.Log(e);
}
try {
string relayCode = await CreateRelay();
Lobby lobby = await Lobbies.Instance.UpdateLobbyAsync(joinedLobby.Id, new UpdateLobbyOptions {
Data = new Dictionary<string, DataObject> {
{ "KEY_START_GAME", new DataObject(DataObject.VisibilityOptions.Member, relayCode)}
}
});
joinedLobby = lobby;
Debug.Log("Lobby relay code: " + lobby.Data["KEY_START_GAME"].Value);
Debug.Log("Relay code: " + relayCode);
} catch (LobbyServiceException e) {
Debug.Log(e);
}
The function DisplayLobbies:
try {
QueryLobbiesOptions queryLobbiesOptions = new QueryLobbiesOptions {
Count = 25,
Filters = new List<QueryFilter> {
new QueryFilter(QueryFilter.FieldOptions.AvailableSlots, "0", QueryFilter.OpOptions.GT)
},
Order = new List<QueryOrder> {
new QueryOrder(false, QueryOrder.FieldOptions.Created)
}
};
QueryResponse queryResponse = await Lobbies.Instance.QueryLobbiesAsync(queryLobbiesOptions);
nb_platoons_found.text = queryResponse.Results.Count.ToString();
} catch (LobbyServiceException e) {
Debug.Log(e);
}
If I comment the code in my first post above, it works well.
I wonder if it could work to create the relay first. It would avoid a lobby update.