В игре есть несколько сценариев, которые выбираются через параметры комнаты. Например, mode:
private async Task StartGame() {
_runner.ProvideInput = true;
var result = await _runner.StartGame(new StartGameArgs {
GameMode = GameMode.AutoHostOrClient,
Address = NetAddress.Any(),
SessionProperties = new Dictionary<string, SessionProperty> { { "mode", "example0" } }
});
if (!result.Ok)
Debug.LogError($"Failed to Start: {result.ShutdownReason}\n{result.ErrorMessage}");
}
Всё работало хорошо ровно до тех пор, пока не понадобилось ввести возможность искать не конкретный сценарий, а любой доступный.
В чём проблема.
При подборе значение SessionProperties, каким бы оно ни было, всегда ищет полное совпадение. Если оставить значение для нужного ключа пустым, это вовсе не значит "любое попавшееся значение", а скорее "только такие же пустые значения". Поковырявшись в документации на их сайте, я не нашёл ничего, что помогло бы мне решить этот вопрос.
Мой вариант решения.
Пока мне в голову пришла только одна мысль - полностью вынести матчмейкинг себе.. например в firebase и полностью его контролировать, а затем когда мне нужно будет уже отправить всех в игру, создавать приватную комнату и отправлять туда всех командой Join.
Но как ни посмотри это выглядит как костыль. Может быть есть решение получше?