Разработка
Разработка
Выберите платформу

Уточнение подбора игроков с использованием навыков, настроек данных и запросов (больше не поддерживается)

Обновлено: 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);

Дальнейшие действия

Наконец, вам нужно будет протестировать и устранить неполадки в работе функции подбора игроков. Для получения дополнительной информации см. разделТестирование и наладка.
Логотип навигации
Русский
© 2026 Meta