Уточнение подбора игроков с использованием навыков, настроек данных и запросов (больше не поддерживается)
Обновлено: 21 сен 2023 г.
Чтобы узнать больше об упразднении этого API, нажмите здесь.
Для реализации подбора игроков в приложении можно использовать сторонние решения, например Photon. Пример интеграции Photon и других сторонних решений с Platform API приведен здесь.
Вы можете сделать подбор игроков более точным, добавив компонент навыков или запросив данные пользователя и использовав их для настройки запросов, которые система использует при подборе. Вы получаете доступ к настройкам данных и запросам, создавая пул, а затем изменяя его на панели Meta Quest. Ниже приведен пример списка пулов для подбора.
Добавление соответствий по навыкам
Чтобы добавить компонент навыков в пул подбора, перейдите в Панель разработчика. Выберите приложение и перейдите на страницу Службы платформы > Подбор игроков. Выберите Компоненты навыков во вкладке Подбор игроков и нажмите Создать компонент навыков.
Введите:
ключ компонента навыка (для идентификации компонента в коде);
коэффициент удачи;
возможность жеребьевки;
сброс навыков.
Нажмите Сохранить и развернуть
Затем свяжите компонент навыков с пулом подбора. Перейдите к пулу, который вы создали для своей игры, и выберите Просмотреть/Редактировать пул, затем выберите компонент навыков и сохраните пул для подбора.
Введите код, чтобы начать подбор
После того как вы сохранили пул с компонентом навыков, вы можете добавить его в свою игру. Для этого вам нужно добавить в код два метода:
Platform.Matchmaking.StartMatch() `
Platform.Matchmaking.ReportResultInsecure()
Теперь при определении качества подбора функция подбора игроков будет отслеживать и учитывать мастерство пользователя.
Настройки данных
Настройки данных — это данные в формате ключ/значение, которые игрок или комната предоставляет при добавлении в очередь. Настройки данных могут использоваться для определения как предпочтений игрока при подборе, так и его внешнего вида для другого игрока. Например, при постановке в очередь для игрока может быть указан тип матча, в котором он хочет играть, карта, на которой он хочет играть, и уровень, которого он достиг в игре. Вы также можете использовать настройки данных, чтобы обеспечить совпадения только с теми пользователями, которые используют ту же версию вашего приложения.
Чтобы изменить настройки данных для пула, перейдите на страницу Запросы для подбора игроков. Для этого:
Найдите пул в списке пулов для подбора, нажмите на многоточие (...) и выберите Управление запросами. Пример показан на следующем изображении.
На странице Запросы для подбора игроков нажмите Редактировать настройки данных.
Вы задаете настройку данных как пару ключ-значение. Ключ должен быть уникальным и использоваться для ссылки на настройку данных в запросах и коде. Значение может иметь тип double, integer, шестнадцатеричный набор битов или строковое перечисление. Вы также указываете значение по умолчанию, которое используется, если пользователь не предоставил свое значение.
Запросы на подбор игроков определяются в пулах подбора, которые вы создали на панели разработчика. Запросы позволяют задать критерии, определяющие, будут ли сопоставлены друг с другом игроки в очереди и комнаты. Запросы сравнивают настройки данных возможных совпадений.
Запрос на подбор игроков состоит из одного или нескольких выражений, которые формируют условный запрос. Функция подбора игроков заполняет каждое выражение параметрами данных кандидата и использует их для оценки качества потенциального совпадения. Подробнее о том, как используется эта информация при проведении совпадений, читайте в разделе Как выполняется подбор игроков.
Чтобы добавить выражение для запроса на подбор игроков в пул подбора, перейдите в Панель разработчика, а затем на страницу Запросов на подбор игроков. Для этого нажмите на многоточие (…) для пула и выберите Управление запросами.
Введите:
Ключ запроса — это уникальная строка, которая позволит вам ссылаться на этот запрос на подбор игроков в коде. Ключ запроса чувствителен к регистру, и имя, заданное в панели управления, должно точно совпадать с ключом, указанным в вашем коде. Нажмите Добавить выражение и введите:
Степень важности — вы настроите степень важности для заданного выражения. Передаваемое выражение оценивается как значение качества, равное 1. Неудачный случай оценивается по значению степени важности, указанному в таблице ниже. Указанные ниже значения времени задержки в случае неудачного подбора рассчитаны с учетом сокращения времени подбора на 30 секунд. Чем больше значение, тем меньше вероятность совпадения, если выражение не выполняется. В случае выражений со степенью важности Обязательно, сбой никогда не приведет к удачному подбору. В следующей таблице указаны строка значения важности, соответствующее значение и приблизительное время задержки для каждого значения.
Степень важности
Значение
Время подбора в случае сбоя
Обязательно
0
Неприменимо Подбор при сбое невозможен.
Высокая
Прибл. 0,55
27 секунд
Средняя
Прибл. 0,75
15 секунд
Низкая
Прибл. 0,9
6 секунд
Выражение — определяет критерии подбора. Вы можете определить, что настройка данных должна находиться в определенном диапазоне значений или совпадать с настройкой данных другого пользователя.
Добавление запросов на подбор игроков и других данных при постановке в очередь
Вы можете дополнительно настроить функцию подбора и использовать запросы для сравнения потенциальных совпадений. Некоторые запросы на подбор игроков имеют необязательное значение ovrMatchmakingOptionsHandle, что позволяет вам передавать настройки данных и другие особенности постановки в очередь, которые будут использоваться при поиске совпадений.
Настройки данных и примеры запросов
Следующий пример демонстрирует, как можно использовать настройки данных и запросы на подбор игроков. Чтобы выполнить пример, в панели разработчика создайте пул подбора игроков под названием my_pool и введите следующие настройки данных:
player_level (ЦЕЛОЕ ЧИСЛО)
game_mode (СТРОКА)
map_size (ЦЕЛОЕ ЧИСЛО_НАБОР БИТОВ)
Затем создайте запрос на подбор игроков под названием my_query для my_pool со следующими выражениями:
"player_level" совпадает с моим "player_level". Importance: средняя
"game_mode" совпадает с моим "game_mode". Importance: обязательно
"map_size" представляет собой битовую маску AND совпадает с моей "map_size". Importance: обязательно
В игре битовая маска map_size имеет следующие значения битов:
0x4: большой размер карты
0x2: средний размер карты
0x1: малый размер карты
Интеграция запросов на подбор игроков в код
Сначала создайте экземпляр MatchmakingOptionsHandle, вызвав MatchmakingOptions_Create(). Когда вы закончите работу с дескриптором, вы можете вызвать MatchmakingOptions_Destroy(), чтобы освободить память.
После того как вы создадите дескриптор, вы заполните сообщение о постановке в очередь пользователя или комнаты настройками данных для комнаты или пользователя.
Настройки данных для комнаты
Настройки данных для комнаты во время процесса создания комнаты доступны при вызове CreateRoom2 и CreateAndEnqueueRoom2.
MatchmakingOptions_SetCreateRoomMaxUsers переопределяет значение Max Users (Максимальное количество пользователей) для пула панели разработчика.
Примечание. Нельзя превышать значение Max Users, установленное при создании пула.
MatchmakingOptions_SetCreateRoomJoinPolicy задает правила присоединения для создаваемой комнаты. Если этот параметр не указан, правила присоединения по умолчанию принимает значение "Все".
Настройки данных для пользователя
Настройки данных для пользователя во время постановки в очередь доступны при вызове Enqueue2, EnqueueRoom2, и Browse2.
MatchmakingOptions_AddEnqueueAdditionalUser добавляет дополнительных пользователей, используя их userID, в очередь, чтобы они были включены в многопользовательский сеанс. Дополнительные пользователи не будут получать уведомления о постановке в очередь, а только о том, что произошло совпадение.
Примечание. После того как пользователи подобраны, вы можете объединить людей в команды на основе их первоначальных групп. Вы можете пройти в цикле по всем найденным пользователям, используя Room_GetMatchedUsers. Затем в каждом из них вызовите MatchmakingEnqueuedUser_GetAdditionalUserIDsSize. Если у кого-то их больше 1, пройдите по ним в цикле с помощью MatchmakingEnqueuedUser_GetAdditionalUserID, и объедините этих пользователей одну команду.
MatchmakingOptions_SetEnqueueDataSettingsInt устанавливает целочисленное значение для настройки данных.
MatchmakingOptions_SetEnqueueDataSettingsDouble устанавливает двойное значение для настройки данных.
MatchmakingOptions_SetEnqueueDataSettingsString устанавливает строку для настройки данных.
Если значение MatchmakingOptions_SetEnqueueIsDebug — true, отладочная информация возвращается вместе с полезными данными ответа. Подробнее см. в разделе "Отладка".
MatchmakingOptions_SetEnqueueQueryKey определяет конкретный запрос на подбор игроков для фильтрации возможных совпадений.
Пример интеграции настройки данных при добавлении в очередь
Согласно данным из примера, определенным ранее, в следующем примере на нативном C++ показано, как пользователь заходит в очередь для подбора игроков для игры с другими, у которых заданы настройки данных player_level=10, game_mode="CaptureTheFlag" и выбран большой map_size.
ovrMatchmakingOptionsHandle matchmakingOptions = ovr_MatchmakingOptions_Create();
ovr_MatchmakingOptions_SetEnqueueDataSettingsInt(matchmakingOptions, "player_level", 10);
ovr_MatchmakingOptions_SetEnqueueDataSettingsString(matchmakingOptions, "game_mode", "CaptureTheFlag");
// I want large or medium map size
ovr_MatchmakingOptions_SetEnqueueDataSettingsInt(matchmakingOptions, "map_size", 0x4);
// Specify which Matchmaking Query to use with the Data Settings we provided
ovr_MatchmakingOptions_SetEnqueueQueryKey(matchmakingOptions, "my_query");
ovr_Matchmaking_Enqueue2("my_pool", matchmakingOptions);
// Destroy the matchmaking options now that we are done with it
ovr_MatchmakingOptions_Destroy(matchmakingOptions);
Дальнейшие действия
Наконец, вам нужно будет протестировать и устранить неполадки в работе функции подбора игроков. Для получения дополнительной информации см. разделТестирование и наладка.