Upgrade 1.8 -> 2.0
Obsolete: MatchmakerClient
Starting from 2.0, the old MatchmakerClient cloud service has been marked as obsolete. Lobbies should be used for matchmaking instead.
Cloud Service Accessor Migration
Accessors for some cloud services were migrated from CloudService.GameServices directly to the root of CloudService.
Additionally, LobbiesService can now be accessed directly from the CloudService root as well, instead of being found under CloudService.Rooms.
This should help make your code shorter and make it easier to find all the different cloud services.
async void Start()
{
PlayerAccount playerAccount = await PlayerAccount.GetMainAsync();
//var lobbies = playerAccount.Services.Rooms.LobbyService; // <- old
var lobbies = playerAccount.Services.Lobbies; // <- new
var lobbySessions = await lobbies.GetLobbySessionsAsync();
Debug.Log($"You are currently in {lobbySessions.Count} lobbies.");
//var cloudStorage = playerAccount.Services.GameServices.CloudStorage; // <- old
var cloudStorage = playerAccount.Services.CloudStorage; // <- new
var storageId = (playerAccount.Id.ToString(), "Friends");
string[] friends = await cloudStorage.LoadObjectAsync<string[]>(storageId);
Debug.Log($"You have {friends.Length} friends: {string.Join(", ", friends)}.");
}CloudService.Regions
Functionality related to regions was relocated from CloudService.Rooms to CloudService.Regions.
This makes more sense when using regions without rooms, such as when working with worlds.
async void Start()
{
PlayerAccount playerAccount = await PlayerAccount.GetMainAsync();
//var roomsService = playerAccount.Services.Rooms;
//var regions = await roomsService.RefreshRegionsAsync(); // <- old
var regionsService = playerAccount.Services.Regions;
var regions = await regionsService.FetchRegionsAsync(); // <- new
Debug.Log($"Project has {regions.Length} regions: {string.Join(", ", regions)}.");
}Lobby Creation
Some changes were made to the Lobby creation process, to clearly distinguish between Lobbies that are associated with a particular Room, and Lobbies that are not associated with any Room (Lobbies for interroom communication).
For Room
The new CreateLobbyOptions.ForRoom method can be used to initialize new instances of lobby creation options that should be associated with a particular room:
async void Start()
{
PlayerAccount playerAccount = await PlayerAccount.GetMainAsync();
var regionsService = playerAccount.Services.Regions;
var lobbies = playerAccount.Services.Lobbies;
var regions = await regionsService.FetchRegionsAsync();
var region = regions.First();
var rooms = playerAccount.Services.Rooms;
var roomsService = rooms.GetRoomServiceForRegion(region);
var room = await roomsService.CreateRoomAsync(new() { Name = "My Room" });
var createLobbyOptions = CreateLobbyOptions.ForRoom(room);
var lobbySession = await lobbies.CreateLobbyAsync(createLobbyOptions);
Debug.Log($"You created the lobby '{lobbySession.LobbyData.Name}'.");
}Not For Room
To create a lobby that is not associated with any particular room, use the CreateLobbyOptions's constructor instead:
async void Start()
{
PlayerAccount playerAccount = await PlayerAccount.GetMainAsync();
var regionsService = playerAccount.Services.Regions;
var lobbies = playerAccount.Services.Lobbies; // <- new
var regions = await regionsService.FetchRegionsAsync();
var region = regions.First();
var createLobbyOptions = new CreateLobbyOptions(name: "My Lobby", region, maxPlayers: 25);
var lobbySession = await lobbies.CreateLobbyAsync(createLobbyOptions);
Debug.Log($"You created the lobby '{lobbySession.LobbyData.Name}'.");
}CreateLobbyOptions.Secret → Password
The Secret property on the CreateLobbyOptions type has been marked as obsolete, and replaced by a Password property.
This was done to avoid potential confusion between a room secret and a lobby password, which are two separate things.
RefreshRegions → RefreshRegionsInfo
The regions API now returns not only a list regions but also a list of ping servers for use with the new Ping Client. Following functions have been renamed:
cloudRooms.Regions -> cloudRooms.RegionsInfo
cloudRooms.RefreshRegions -> cloudRooms.RefreshRegionsInfo
cloudRooms.RefreshRegionsAsync -> cloudRooms.RefreshRegionsInfoAsync
roomRegionsService.Regions -> roomRegionsService.RegionsInfo
roomRegionsService.FetchRegions -> roomRegionsService.FetchRegionsInfo
roomRegionsService.FetchRegionsAsync -> roomRegionsService.FetchRegionsInfoAsyncLast updated
Was this helpful?

