slidersПодробный обзор

Узнайте подробнее о концепциях no-code matchmaker от Edgegap и настройте их под свои нужды.

✔️ Введение

Начните за 5 минут и бесплатно протестируйте все функции, кредитная карта не требуется.

Переходите на более мощный, приватный (выделенный) кластер, когда будете готовы. Нативная интеграция с Edgegap Развертывания обеспечивает лучший в классе пинг независимо от того, где находятся ваши игроки.

circle-info

Бесплатный тариф позволяет 3 часа работы после каждого перезапуска. Ваш matchmaker будет работать на общей инфраструктуре с ограниченными ресурсами, подходящей для тестирования. После публичного релиза ваш matchmaker должен работать 24/7.

У каждого Matchmaker есть три основных концепции:

  • Подробный обзор - базовая серверная инфраструктура, полностью управляемая и обслуживаемая Edgegap.

  • Подробный обзор - набор правил и настроек, определяющих, как работает matchmaker.

  • 🌐 Экземпляр сервиса - живой сервис подбора игроков, работающий 24/7 на Cluster, использующий Configuration для подбора игроков и создания назначений развертывания (сервера).

circle-check

▶️ Начать подбор игроков

Узнайте о процессе подбора игроков, чтобы настраивать, устранять неполадки и оптимизировать интеграцию с вашей игрой.

Последовательность подбора игроков
  1. Аутентифицировать игрока - предотвращает игру в сети с пиратских копий,

  2. Создать лобби - объединиться с друзьями и поделиться предпочтениями игрока/матча,

  3. Объединиться в группу - зарегистрировать ваше лобби как группу подбора игроков,

  4. Найти матч - подготовиться и начать поиск матча (нового или существующего),

    1. Назначить сервер и внедрить тикеты - сервер назначается автоматически через несколько секунд,

  5. Подключиться и аутентифицироваться - попытаться установить защищённое соединение с игровым сервером,

    1. Подтвердить личность - сервер проверяет личность игрового клиента с помощью токенов сторонних сервисов,

    2. Принять игрока или исключить игрока - сервер решает, разрешено ли игроку присоединиться.

Быстро начните работу — добавьте в свою игру наш стартовый пример подбора игроков:

Аутентификация

circle-check

Отдельных игроков можно идентифицировать по ID их тикета, доступному на клиентах и сервере. При желании добавьте собственную аутентификацию или ограничения с помощью собственного прокси через Сервер к серверу API.

Объединиться в группу

Создание группы (party) гарантирует, что игроки попадут в одну и ту же команду и на один и тот же сервер со своими друзьями.

circle-check
Диаграмма активности жизненного цикла группы

Лобби и группа

Используйте сервис Lobby, если дизайн вашей игры требует задания настраиваемых игроком предпочтений подбора (например, выбор персонажа, сложность, карта и т. д.). По мере того как игроки входят в Lobby и выходят из него, они также обновляют группу подбора, чтобы подготовиться к поиску матча позже.

circle-check
Дизайн игры - Функция / Требование
Предматчевое лобби
Группа Matchmaker

приглашать друзей играть со мной

изменять мои предпочтения игрока/матча

просматривать предпочтения других участников лобби

хранить и управлять пользовательскими данными в формате ключ-значение

уведомлять участников группы, что я готов играть

показывать ход подбора игроков и находить матч

получать назначение команды для игрока/группы

получать данные подключения к игровому серверу

Наш кроссплатформенный matchmaker поддерживает все коммерческие и пользовательские сервисы Lobby:

Сервис Lobby (сторонний)
Unreal Engine
Unity
ПК
Консоли
VR/XR
Мобильные устройства

Пользовательское лобби (ваша компания)

Владелец лобби (игрок, отправляющий приглашения) также должен создать группу подбора игроков.

Сохраните ID вашей группы в общих данных лобби, чтобы другие участники лобби могли легко найти и присоединиться к группе подбора, связанной со сторонним лобби. Игроки, приглашённые в группу, используют ID группы, чтобы создавать свои членства (присоединяться), а также чтобы безопасно хранить свои атрибуты подбора.

circle-exclamation

Оптимизация пинга

Если Подробный обзор включает задержки правило все участники группы отправляют свои Ping Beacons измерения в предотвращать подбор игроков из удалённых регионов или с гораздо более высоким/низким пингом (задержкой).

Покинуть очередь

Владелец группы может удалить группу, автоматически удалив все членства в группе. Удаление группы после начала подбора отменит все членства и удалит их вскоре после этого.

Участники группы (кроме владельца) могут удалить свои членства (покинуть группу) в любое время до Подробный обзор. Удаление членства после этого отменит подбор для всей группы.

circle-info

После отмены подбора участники автоматически удаляются из подбора и получают уведомление через членство status:CANCELLED в своём следующем ответе опроса статуса.

После отмены, если группа хочет перезапустить подбор, владелец группы должен заново создать группу, передать новый ID группы участникам, а затем заставить их заново создать свои членства.

После того как матч найден, группу нельзя удалить (409 Conflict), и она будет удалена автоматически. Ваш сервер должен дать игрокам некоторое время (например, 60 с) на подключение, прежде чем считать игрока покинувшим очередь. В таком случае ваш сервер может:

  • заменить вышедшего игрока ИИ-персонажем, чтобы немедленно начать матч,

  • или создать backfill чтобы найти нового игрока на замену ушедшему,

  • или продолжить без замены ушедшего игрока, если дизайн вашей игры допускает переменное число игроков.

Найти матч

Чтобы начать поиск матча, все участники и владелец должны отметить себя готовыми.

circle-check
circle-info

Для наилучшего опыта предоставляйте игрокам обновления статуса через внутриигровой интерфейс.

Все игроки должны регулярно опрашивать своё членство (рекомендуется каждые 3-5 с), чтобы определить, когда начинается подбор игроков, и сообщать о ходе подбора через внутриигровой интерфейс.

Игрокам следует сохранять ID своего членства и группы постоянно, чтобы в случае сбоя клиента они могли перезапустить игру и продолжить без потери прогресса подбора.

Как только мы найдём достаточно игроков, чтобы собрать их в одну команду в соответствии с вашим Правила, игроки получат уведомление в ответе по своему членству с status:TEAM_FOUND.

Удаление членства на этом этапе приведёт к отмене всех членств группы, а все другие группы, назначенные в ту же команду, вернутся к status:SEARCHING .

Команды продолжают подбор с другими командами, используя совпадающие значения между своими группами (или среднее значение в случае number_difference ), пока не будут собраны достаточные команды. Членства указывают это ответом status:MATCH_FOUND , что означает, что ваше развертывание запускается.

Matchmaker стремится максимизировать заполнение матча и не перейдёт к MATCH_FOUND пока не выполнится одно из условий:

  1. достаточное количество команд подобрано с настроенным максимальным размером команды,

  2. или если Подробный обзор определено И достигнуто время расширения, И достаточное количество команд подобрано с настроенным минимальным размером команды,

  3. или истёк настроенный срок жизни тикета И достаточное количество команд подобрано с настроенным минимальным размером команды.

Если ни один сценарий не удаётся до истечения настроенного срока жизни тикета, группа и тикеты отменяются.

circle-info

Столкнулись с долгим ожиданием в очереди во время тестирования или с игроками из менее популярных регионов? Установите более короткий срок жизни тикета (например, 30 с) и заново создавайте группу (или тикеты) на стороне клиента по истечении срока.

Срок жизни тикета автоматически сбрасывается всякий раз, когда группа (или игрок) назначается в команду.

circle-check
circle-info

Каждый игрок получает уникальный ID тикета, который можно использовать для Подробный обзор с игровыми серверами.

Если игрок был подобран и назначен на игровой сервер, его тикет удаляется автоматически. Игроки, покинувшие очередь после status:HOST_ASSIGNED могут быть заменены backfill.

Как только игроки получают status:HOST_ASSIGNED они переходят к Подробный обзор.

Подключиться к серверу

Подбор при заполнении

После завершения инициализации игрового сервера ваш сервер должен:

  • Запустить таймер покидания для каждого нового игрока. Мы рекомендуем показывать подключённым игрокам ход загрузки с помощью сцены/уровня загрузки — полноценной 3D-сцены, социального интерфейса в стиле лобби или экрана загрузки с полосой прогресса.

  • Отслеживайте новые подключения игроков или уходящих со временем существующих игроков:

    1. Новые игроки должны сообщить серверу ID тикета для аутентификации и чтобы сопоставить своё соединение с matchmaker Подробный обзор или assigned_ticket (если выполнен backfill).

    2. Создавайте новые backfill для неиспользуемой ёмкости игроков (ушедших) на протяжении всего времени жизни сервера.

    3. Обновляйте просроченные backfill, которые удаляются после ticket_expiration_period.

  • Очистите (удалите) все оставшиеся backfill когда Развертывания:

Для backfill можно использовать любой профиль, если указано корректное назначение сервера и предоставлен хотя бы один тикет. См. Подбор матчей для минимального примера.

⚙️ Конфигурация

API Matchmaker генерируется из JSON-конфигурации, указанной при создании нового (или при быстром перезапуске) Matchmaker. Вы можете указать любое количество профилей с разными правилами и расширениями:

circle-check
circle-exclamation

Профили (очереди)

Профили представляют собой полностью отдельные очереди подбора игроков, использующие одну и ту же версию matchmaker. Вы можете настроить любое количество профилей для каждого matchmaker. Разделение базы игроков на несколько профилей может привести к более длительному ожиданию в очереди для ваших игроков.

Каждый профиль matchmaker использует Версию приложения как шаблон для запуска новых развертываний (серверов).

circle-check

Правила

Каждый игрок и группа присоединяются к очереди подбора и находят матчи, используя начальные правила сначала.

Каждая запись в профиле по пути .rules.initial представляет собой правило, где:

  • key — это строковое значение, задающее имя правила так, как вам удобно; например, match_size , а

  • value — это объект, определяющий тип и атрибуты правила в соответствии с нашим стандартным набором правил.

circle-info

Все правила должны выполняться одновременно, чтобы инициировать назначение хоста и начать или найти развертывание.

Операторы (тип правила)

player_count — это специальное правило, определяющее, сколько игроков нужно сопоставить для начала назначения.

circle-exclamation

Matchmaker всегда стремится максимизировать заполнение матча, вплоть до указанного max_team_size :

  1. если достигнут максимальный размер команды, матч создаётся немедленно,

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

  3. незадолго до расширения (или истечения срока), если возможен частичный матч (≥ min и < max team size), этот матч будет создан со всеми игроками на одной и той же стадии расширения (при условии прохождения других правил).

circle-check

Количество команд можно настроить, чтобы формировать несколько сбалансированных команд для соревновательных игр:

  • атрибуты группы вычисляются как среднее/перекрытие атрибутов игроков группы,

  • атрибуты команды вычисляются как среднее/перекрытие атрибутов групп команды.

Предполагая фиксированный размер команды в 4 игрока:

Примеры сценариев матча
circle-info

Группы сопоставляются в команды без переполнения, только если в команде достаточно места для всей группы.

string_equality сопоставляет игроков с точно таким же строковым значением.

chevron-rightПример правила: selected_game_modehashtag

selected_game_mode правило будет сопоставлять игроков с учётом регистра:

Alice + Bob + Dave могут совпасть,

Alice + Erin или Charlie + Frank никогда не совпадут.

"Free For All"
"Capture The Flag"
"capture the flag"

Alice

Erin

Frank

Bob

Charlie

Dave

number_difference сопоставляет игроков в пределах абсолютной числовой разницы между ними.

chevron-rightПример правила: elo_ratinghashtag

elo_rating правило выше с "max_difference": 50 изначально:

Alice + Bob могут совпасть, или Bob + Charlie могут совпасть,

Alice + Bob + Charlie никогда не совпадут.

intersection сопоставляет игроков с одним или несколькими перекрывающимися строковыми значениями, с учётом регистра.

chevron-rightПример правила: selected_maphashtag

selected_map правило выше с "overlap": 1 будет сопоставляться:

Alice + Bob + Charlie могут совпасть, или Alice + Bob + Dave могут совпасть,

Alice + Bob + Charlie + Dave никогда не совпадут.

Расширение правил

При желании расширения изменяют атрибуты правила по прошествии времени в очереди, чтобы ослабить ограничения и расширить пул игроков, которых можно сопоставить, что приводит к более быстрым матчам.

chevron-rightПример сценария: расширенияhashtag

Изначально требуется 1 команда, состоящая ровно из 4 игроков (возможно, разделённых по группам) с:

  • максимум 125 мс задержки относительно одного и того же (любого одного) beacon,

  • разницей задержки 125 мс или меньше между минимальным и максимальным значением для одного и того же beacon,

  • разницей рейтинга навыка 50 очков или меньше между игроком с самым низким и самым высоким рейтингом,

  • точно таким же (с учётом регистра) выбранным игровым режимом,

  • как минимум одним совпадающим выбором карты (с учётом регистра) среди игроков,

  • как минимум одним совпадающим размером backfill группы значением среди игроков.

В приведённом выше примере мы расширяем поиск, изменяя атрибуты после:

30 секунд:

  • 4 игроков

  • диапазон рейтинга навыка 150

  • макс. задержка 250 мс

60 секунд:

  • 4 игроков

  • диапазон рейтинга навыка 200

  • макс. задержка 250 мс

3 минуты (180 с):

  • 1-4 игрока

  • диапазон рейтинга навыка 200

  • любая задержка

chevron-rightТочная настройка расширенийhashtag

Предсказание предпочтений игроков похоже на стрельбу по движущейся мишени. Начните с менее строгого набора правил при релизе, а затем оптимизируйте его поэтапно с Подробный обзор.

Эти вопросы могут помочь структурировать ваш мыслительный процесс:

  • Какова длительность моей игровой сессии?

    • 5-минутная игровая сессия означает, что каждый игрок снова попадает в очередь каждые 5 минут, что косвенно уменьшит время ожидания, поскольку в любой момент в очереди будет больше игроков.

  • Каков мой пиковый CCU и мой низкий CCU?

    • Если между низким и высоким значением высокая разница (более 60%), вам может понадобиться отдельный профиль для периода спада, чтобы дольше ждать на каждом расширении и накапливать больше игроков.

  • Каково географическое распределение моих игроков?

    • Равномерное распределение по нескольким часовым поясам означает, что у пика и спада меньшая вариативность, но не ускоряет подбор, поскольку игроки из разных регионов не должны совпадать, если ваш Подробный обзор настроен правильно (иначе получится высокий пинг).

  • Каково распределение рейтинга навыка моих игроков (по регионам)?

    • Распределение навыка обычно следует кривой Гауссаarrow-up-right (нормальному распределению), поэтому на каждом стандартном отклонении от среднего вы находите всё меньше игроков, удалённых от среднего. Игроки со средними значениями будут подобраны быстро, на первом расширении, но крайние значения — проблема.

    • Мы рекомендуем увеличивать величину допустимой разницы с каждым расширением, например 25 -> 50 -> 100, чтобы учитывать меньшее число игроков на краях кривой.

    • Если у вас есть игроки любого challenger-tier (профессионалы), мы рекомендуем отдельный профиль с собственной настройкой навыка, поскольку выборка меньше и часто не следует общему тренду по всей базе игроков. (смещение к экстремумам, перевёрнутая кривая Гаусса)

  • Как улучшить скорость подбора и заполнение матча при небольшой базе игроков?

    • Узнайте как можно больше о своих игроках и их предпочтениях!

    • Рассмотрите возможность убрать некоторые правила или изначально ослабить ограничения.

    • Со временем ослабляйте размер команды или количество команд — частичный матч лучше, чем отсутствие матча.

    • Увеличьте интервал между расширениями, чтобы накапливать больше игроков.

    • Свяжитесь с нами за дополнительными советами и приёмами, специально для дизайна вашей игры.

circle-info

Расширения любого атрибута правила перезапишут предыдущие значения этого атрибута.

📌 Внедрённые переменные

Вашему серверу могут понадобиться сведения о своих игроках. Атрибуты игроков, рассчитанные значения матча и другие значения внедряются в ваше развертывание вместе с обычными Приложения и версии.

Предпросмотр без форматирования 🏁 Дополнительные примерные переменные:

circle-info

Переменные окружения хранятся в виде JSON-строк, парсите их с помощью нашего SDK или собственного метода.

circle-check

🧵 Трассировка игроков

Если у ваших игроков возникают проблемы, полезно отслеживать их путь до серверных логов. Каждый Matchmaker развертывание будет помечено назначенными ID тикетов игроков чтобы вы могли легко Развертывания и находить Развертывания для помощи в устранении неполадок.

circle-check
circle-info

См. Развертывания чтобы узнать об устранении неполадок с развертыванием.

👀 Аналитика

Получайте сведения о нагрузке и производительности вашего matchmaker — без кода и без необходимости настройки.

🌟 Обновите Matchmaker до Enterprise Tierarrow-up-right чтобы открыть метрики и аналитические сведения о подборе игроков:

☁️ Хостинговый кластер

Matchmaker удобно размещается и управляется Edgegap 24/7 без перерывов.

Выберите вариант хостинга, который лучше всего подходит для вашей цели:

Тарифы приватного кластера

Обновите до приватного кластера в один клик. Также возможно изменить тарифы приватного кластера после запуска без простоя для игроков с ⏩ Пошаговые обновления. Управляемые кластеры предоставляют высокодоступный хостинг сервисов, поддерживаемый Edgegap, с круглосуточной живой поддержкой для публично выпущенных игр.

Требования к ресурсам для вашего экземпляра будут зависеть от факторов:

  • количество игроков - больше игроков приводит к большему числу тикетов и API-запросов,

  • количество запросов на игрока - более частые повторные попытки увеличивают нагрузку на сервис и потребляют ресурсы,

  • сложность конфигурации - правила пересечения и расширения особенно требовательны,

  • средняя длительность матча - более короткие сессии заставляют игроков чаще возвращаться в подбор,

  • сроки истечения и удаления - устаревшие тикеты накапливаются со временем и потребляют ресурсы,

  • логика повторных попыток клиента с fallback - повторные попытки с jittered backoff помогают распределять пики всплесков трафика.

circle-exclamation

Ограничения скорости

Чтобы защитить ваш кластер от превышения его пиковых возможностей и сбоев, мы ограничиваем число запросов в секунду на основе наших внутренних нагрузочных тестов, используя Подбор матчей конфигурацию.

Конечная точка API
Бесплатный тариф
Тариф для любителей
Студийный тариф
Корпоративный тариф

Общий лимит

100

200

750

2,000

Создать развертывание

5

10

30

30

Получить список маяков

10

20

75

200

Создать группу + Создать тикет + Создать групповой тикет

10

20

75

200

Читать членство + Читать группу + Читать тикет

10

120

450

1,300

Создать обратное заполнение

5

10

37

100

Ограничения по скорости выражаются в совокупном количестве запросов в секунду к указанному набору конечных точек API.

Если ваши игровые клиенты не повторяют запросы при получении ответа 429 Слишком много запросов в ваших развертываниях могут отсутствовать игроки которые перестают читать свои назначения из-за высокой нагрузки.

Нагрузочное тестирование

Матчмейкинг и назначения требуют использования CPU и памяти, что влечет за собой стоимость хостинга для каждого частного матчмейкера. См. ресурсы и цены, связанные с каждым тарифом, на нашей странице ценarrow-up-right.

circle-check

При проектировании нагрузочного теста пожалуйста, учитывайте реалистичные модели поведения игроков:

Реалистичный сценарий
Нереалистичный шаблон трафика

✅ Игроки постепенно подключаются к матчмейкингу, увеличивая req/s в течение нескольких часов.

❌ Все игроки координируются и создают свои тикеты в одну и ту же секунду.

✅ Игроки ждут все больше времени между повторными попытками (например, 1 с - 5 с - 10 с - 10 с).

❌ Все игроки повторяют попытку сразу после получения 429 Слишком много запросов ответа.

✅ Большинство игроков получат свои назначения в течение короткого времени (10–60 с) и перестанут опрашивать сервер.

❌ Все игроки продолжают опрашивать сервер в течение заданного времени даже после получения назначения.

✅ Большинство игроков заканчивают свою игру (это занимает время), прежде чем снова начать матчмейкинг.

❌ Все игроки сразу же заново запускают матчмейкинг после получения назначения.

✅ Пиковый трафик сохраняется 6–8 часов в день, после чего в некоторых часовых поясах он снижается.

❌ Пиковый трафик сохраняется 24 часа в сутки, все игроки играют днем и ночью.

Если матчмейкер испытывает высокую нагрузку:

  • если CPU ограничивается, матчмейкинг может замедлиться,

  • если у матчмейкера заканчивается память, он перезапустится без потери информации о тикетах, в надежде, что клиенты реализуют экспоненциальный backoff и всплеск распределится на более длительный период времени.

⏩ Пошаговые обновления

Отслеживание совместимости между версиями сервера и клиента может быть сложным. Следуйте нашим советам для надежных релизов, обновлений и предотвращения простоя или проблем совместимости.

URL вашего матчмейкера и токен аутентификации всегда останутся прежними после перезапуска.

triangle-exclamation

⚠️ Перед выходом в продакшен

Мы рекомендуем заранее создать несколько копий вашего матчмейкера: green, blue и orange. Вы можете переключать, какой матчмейкер используется, по мере выпуска обновлений (blue/green-стратегияarrow-up-right).

Выбирайте разные регионы для каждого экземпляра, чтобы предотвратить простой во время локальных сбоев.

Пример DevOps-среды Blue/Green

🔃 Обновление клиента + сервера

Предварительные требования: В этом разделе предполагается, что вы завершили Подробный обзор.

Чтобы выпускать обновления игрового клиента + сервера, вы можете:

  1. Подготовить новую версию серверного приложения v1.2.0-rc в Edgegap:

    1. отправить новый тег образа в ваш container registry t1.2.0,

    2. создать новую версию приложения v1.2.0-rc,

  2. Выполнить любые dev-тесты, развернув новую версию приложенияarrow-up-right v1.2.0-rc:

    1. подключив редактор вашего игрового движка к предоставленному URL + внешнему порту,

  3. Обновить неиспользуемый матчмейкер blue чтобы привязать его к новому тегу образа t1.2.0,

    1. включить кэширование для новой версии приложения v1.2.0-rc , включение кэша для этой версии обеспечит также кэширование образа для версии v-blue поскольку они ссылаются на один и тот же тег,

    2. дождаться, пока индикатор кэширования в версии v1.2.0-rc достигнет 🟢 green,

  4. Обновить новый игровой клиент c2 чтобы использовать новую версию v-blue при создании тикетов:

    1. обновите базовый URL и токен авторизации в игровом клиенте,

  5. Выполнить QA-тесты и финальные проверки нового игрового клиента c2:

    1. если вы обнаружите и устраните какие-либо проблемы, повторите процесс с начала,

    2. подождите 3–7 дней, чтобы изменения DNS матчмейкера распространились на провайдеров по всему миру, после того как матчмейкер был остановлен (быстрый перезапуск не требует обновления DNS или периода ожидания),

  6. Выпустите обновление нового игрового клиента c2 на платформах распространения игр,

  7. Дайте время новому игровому клиенту c2 распространиться на устройства игроков (обычно до 3–7 дней):

    1. следите за устаревшими игровыми клиентами c1 используя развертывание Развертывания,

  8. Очистите неиспользуемые ресурсы в вашей учетной записи Edgegap:

    1. удалите тег образа t1.0.0 чтобы освободить место в Container Registry,

    2. удалите тег образа t1.1.0 чтобы освободить место в Container Registry,

    3. отключите свой green матчмейкер, чтобы приостановить биллинг до следующего обновления.

circle-check

⚡ Срочный серверный патч

Предварительные требования: В этом разделе предполагается, что вы завершили Подробный обзор.

Чтобы выпустить патч сервера без необходимости обновления игрового клиента, вы можете:

  1. Подготовить новую версию серверного приложения v1.2.0-rc в Edgegap:

    1. отправить новый тег образа в ваш container registry t1.2.0,

    2. создать новую версию приложения v1.2.0-rc,

  2. Выполните тесты и проверки, развернув новую версию приложенияarrow-up-right v1.2.0-rc:

    1. подключив редактор вашего игрового движка к предоставленному URL + внешнему порту,

    2. если вы обнаружите и устраните какие-либо проблемы, повторите процесс с начала,

    3. включить кэширование для новой версии приложения v1.2.0-rc , включение кэша для этой версии обеспечит также кэширование образа для версии v-green позже, поскольку они будут ссылаться на тот же тег,

    4. дождаться, пока индикатор кэширования в версии v1.2.0-rc достигнет 🟢 green,

  3. Обновить версию v-green чтобы привязать его к новому тегу образа t1.2.0,

    1. новые матчи будут автоматически запускать назначение с обновленным тегом t1.2.0,

    2. следите за устаревшими игровыми клиентами c1 используя развертывание Развертывания,

  4. Очистка неиспользуемых ресурсов в вашей учетной записи Edgegap:

    1. удалите тег образа t1.1.0 чтобы освободить место в Container Registry.

📗 API

Клиенты и серверы могут вызывать API напрямую или с помощью SDK игрового движка, см. также Подбор матчей.

Сервер к серверу

Добавьте расширенные или настраиваемые элементы управления потоком матчмейкинга — реализуйте собственный прокси с помощью нашего Управляемые кластеры или любой облачной FaaS вычислительной платформы, чтобы добиться любого из следующего:

  • прикрепить чувствительные атрибуты игрока — такие как флаги читера, рейтинги навыка или подобные,

  • предоставить контекст команды и матча в игре — показывать моих товарищей по команде и противников во время загрузки,

  • ограничить особые случаи — например, разрешать только 1 группу на игрока в любой момент времени,

  • добавить кэширование или ограничение частоты API — уменьшить количество запросов и нагрузку на матчмейкер,

  • настроить интеграцию лобби-группы — создавать асимметричные/ролевые лобби перед матчмейкингом.

circle-check
circle-info

Игровые клиенты могут использовать ipify.orgarrow-up-right бесплатный сервис для определения своего публичного IP. VPN могут скрывать публичный IP-адрес.

Диаграмма активности матчмейкинга сервер-сервер

Cross-Origin Resource Sharing (CORS)

Для webGL-игр, размещенных на сторонних платформах распространения (например, itch.ioarrow-up-right), отправка любых запросов к Matchmaker из игрового клиента может привести к Cross-Origin Resource Sharingarrow-up-right нарушениям политики. Большинство современных веб-браузеров отправляют pre-flight requestarrow-up-right чтобы проверить, что серверный сервис (Matchmaker) понимает и принимает связь от вашего игрового клиента.

Неудачная pre-flight проверка (по умолчанию по соображениям безопасности) может привести к одной из нескольких возможных ошибок, связанных с CORSarrow-up-right, чаще всего заголовок CORS 'Access-Control-Allow-Origin' отсутствует .

Чтобы устранить эту ошибку, добавьте allowed_cors_origin параметр в вашу конфигурацию, чтобы либо:

  • внести в белый список точные домены хостинга вашего клиента:

chevron-right🍀 Простой пример (пример с конкретными доменами)hashtag
  • или внести в белый список домен с подстановочным знаком (включая все поддомены):

chevron-right🍀 Простой пример (пример с доменом-подстановкой)hashtag
circle-info

Для pre-flight запросов Matchmaker учетные данные не требуются, если домены настроены правильно.

🚨 Устранение неполадок

Ваш успех — наш приоритет. Если вы хотите отправить пользовательские запросы, попросить о недостающих критически важных функциях или поделиться любыми мыслями, пожалуйста, свяжитесь с нами в нашем Community Discordarrow-up-right.

chevron-rightПочему при попытке создать новый матчмейкер я получаю ошибки?hashtag
  • Пожалуйста, прочитайте сообщение об ошибке: возможно, вы неправильно написали идентификатор, правило или оператор. — Используйте JSONLintarrow-up-right чтобы проверить форматирование JSON, возможно, вы пропустили запятую или скобку. — Обратитесь через наш Community Discordarrow-up-right за помощью, мы будем рады помочь. 🙏

chevron-rightПочему мой матчмейкер автоматически выключился через 3 часа?hashtag
  • Матчмейкеры в Free Tier предназначены для первоначальных тестов и автоматически выключаются через 3 часа. Чтобы продолжить тестирование, вы можете перезапустить ваш матчмейкерarrow-up-right.

  • Рассмотрите возможность перехода на платный тариф для неограниченного времени работы.

chevron-rightПочему я не могу запустить второе развертывание в своей учетной записи?hashtag
  • В Free Tier вы можете запускать только 1 одновременное развертывание.

  • Пожалуйста, рассмотрите возможность перехода на платный тариф для неограниченного числа развертываний.

chevron-rightПочему я получаю назначение/развертывание в случайные моменты, игнорируя player_count?hashtag
chevron-rightМой тикет застрял в SEARCHING .hashtag
  • Пожалуйста, проверьте, что вы создали достаточное количество совпадающих тикетов, соответствующих вашей конфигурации.

chevron-rightМой тикет застрял, переключаясь между MATCH_FOUND и TEAM_FOUND повторно.hashtag
  • Учетные записи Free Tier ограничены 1 развертыванием одновременно.

  • Пожалуйста, рассмотрите возможность обновления тарифа или остановите текущее развертывание, чтобы начать новое.

chevron-rightМой тикет сразу переходит в CANCELLED.hashtag
  • Срок действия вашего тикета истек. Создайте новый тикет или увеличьте период истечения в вашей конфигурации для тестирования.

chevron-rightЯ получаю HTTP 404 Not Found при проверке моего тикета.hashtag
  • Ваш тикет был удален либо запросом DELETE, либо по достижении периода удаления (начинается после истечения срока действия тикета, определен в вашей конфигурации). Создайте новый тикет повторно или увеличьте периоды истечения/удаления в вашей конфигурации для тестирования.

chevron-rightМой матчмейкер показывает ошибку, что мне делать?hashtag

🔖 Журнал изменений

Ваш файл конфигурации будет проверяться в зависимости от используемой версии матчмейкера, убедитесь, что ваши правила соответствуют возможностям версии матчмейкера.

circle-info

Последняя версия матчмейкера — 3.2.2. Все примеры на этой странице актуальны. Следите за уведомлениями о прекращении поддержки вашей версии матчмейкера. См. также ⏩ Пошаговые обновления.

3.2.2 (18 мар. 2025)

🩹 Исправления ошибок:

  • Небольшое исправление ошибки, из-за которой команды распускались, если назначенный игрок удалял свой тикет до нахождения матча.

circle-check
circle-exclamation

3.2.1 (24 нояб. 2025)

🩹 Исправления ошибок:

  • Небольшие исправления ошибок развертывания, устранено несколько ошибок при запуске вашего матчмейкера.

3.2.0 (31 окт. 2025)

🩹 Исправления ошибок:

  • Различные мелкие исправления спецификации и обновления для согласованности документации.

  • Различные исправления стабильности и самовосстановления в инфраструктуре матчмейкера.

✨ Улучшения и новые функции:

  • Представляем Подробный обзор функцию - управление группами теперь стало простым и не требует сторонних сервисов!

    • Больше не нужно делиться сложными атрибутами тикетов между участниками группы, вам нужен только Group ID.

    • Начинайте матчмейкинг как группа, когда все игроки отметят себя как готовые.

    • Проверяйте атрибуты участников группы относительно лидера группы при присоединении, предотвращая группы, которым невозможно подобрать матч (атрибуты игроков группы не будут соответствовать правилам профиля).

    • Проверяйте размер группы и отклоняйте новые участия, когда достигнут максимальный размер команды.

    • Читайте нашу обновленную документацию с новым пользовательским потоком, скоро появятся обновления SDK!

  • Тикеты (членства) теперь включают ID вашего матча — отслеживайте игроков и добавляйте элементы интерфейса, чтобы показывать названия вашей команды или команд соперников, рейтинг навыка или другие свойства, хранящиеся у третьих сторон.

  • Масштабное Подробный обзор переработано на основе внутреннего стресс-тестирования, лучшее управление короткими всплесками.

  • Улучшена скорость заполнения матчей за счет отложенного формирования частичных матчей до конца расширения.

    • Если достигнут максимальный размер команды, матч создается немедленно.

    • Иначе матч создается в конце текущего расширения, если достигнут минимальный размер команды.

  • Задавайте периоды истечения и удаления для каждого профиля и оптимизируйте для лучшего опыта игроков.

circle-exclamation

3.1.0 (10 июня 2025)

🩹 Исправления ошибок:

  • Матчмейкеры теперь корректно проверяют тикеты с несколькими профилями, включая разные правила.

✨ Улучшения и новые функции:

  • Еще больше оптимизаций для максимизации заполнения матчей с помощью правила player_count. Тикеты теперь будут ждать до конца расширения (или истечения срока действия), если возможен только частичный матч (>min и <max размер команды).

    • Полные матчи (достигнут максимальный размер команды) создаются немедленно (без изменений).

  • Обновитесь до Enterprise Подробный обзор чтобы разблокировать матчмейкинг Подробный обзор! Получайте сведения о нагрузке и производительности матчмейкера без необходимости писать код или выполнять настройку. Метрики при запуске включают:

    • общее количество тикетов, backfills, назначений и развертываний за пользовательский период времени,

    • поминутные значения вышеуказанных метрик за пользовательский период времени,

    • итоги и временные ряды по просроченным тикетам, расширенным матчам, скорости заполнения матчей,

    • метрики использования API и многое другое.

  • Улучшена Правила документация с лучшими примерами и визуализациями.

3.0.0 (20 мая 2025)

⚠️ Ломающие изменения:

  • Используйте мин./макс. размер команды для эффективного заполнения команд (заменяет расширения по количеству игроков):

    • в вашей конфигурации player_count правило, замените team_size на min_team_size и max_team_size чтобы добиться матчмейкинга с «максимальными усилиями», стремящегося максимизировать скорость заполнения матчей,

    • чтобы требовать определенное количество игроков в команде, установите одинаковые значения min и max,

    • обратные заполнения обходят player_count правило и всегда сопоставляются с 1 тикетом (без изменений).

  • Тикеты, групповые тикеты и backfills, у которых все задержки выше максимального max_latency в заданном профиле, будут немедленно отклонены с ответом 400 Bad Request на запрос создания тикета вместо истечения срока действия:

    • применяется только если правило latency настроено,

    • чтобы обойти это поведение, создайте расширение с max_latency: 99999 (любое значение выше таймаута измерения задержки вашего клиента).

  • Внедренные переменные среды содержащие данные тикета, теперь включают поле id (ID тикета), чтобы их было легче повторно использовать при создании Подробный обзор.

🩹 Исправления ошибок:

✨ Улучшения и новые функции:

  • Теперь рассматривается до 3 раз больше потенциальных совпадений, что приводит к более оптимальным группам и максимизирует скорость заполнения матчей.

  • До 200% более высокая скорость матчмейкинга благодаря оптимизации параллелизма.

  • До 40% более высокая скорость заполнения матчей благодаря оптимизации алгоритма расширений.

  • Улучшена стабильность сервиса и увеличена скорость быстрого перезапуска.

circle-info

Бенчмарки были получены на хаотически сгенерированных данных с использованием конфигурации Advanced Example.

chevron-rightАрхив журнала изменений (v2.1.0 и ниже)hashtag

2.1.0 (24 февр. 2025)

⚠️ Ломающие изменения:

  • Разделена информация о профиле игры и стадии расширения в Подробный обзор:

    • MM_MATCH_PROFILE теперь будет содержать только имя профиля, как оно указано в конфигурации.

    • Добавлено MM_EXPANSION_STAGE который будет содержать стадию расширения в виде строки (например, "initial", "15", "30").

  • Назначения тикетов теперь включают ID группы, когда Подробный обзор. ID группы также включен как Подробный обзорв виде отображения ID группы на список ID игроков группы.

  • Назначения тикетов теперь включают ID команды, когда Подробный обзор. ID команды также включен в каждый объект данных тикета Подробный обзор.

  • Подробный обзор теперь возвращает 409 Conflict HTTP-код вместо 204 No Content чтобы указать, что тикет не может быть удален, поскольку развертывание начинается. Чтобы заменить вышедших игроков, используйте Подробный обзор выданный сервером после заранее указанного периода ожидания.

  • Подробный обзор параметр тела запроса attributes.deployment_request_id был перемещен в attributes.assignment.request_id.

  • Подробный обзор тело запроса теперь требует полных сведений о назначении в составе attributes параметра в дополнение к request_id.

🩹 Исправления ошибок:

  • Разрешенные значения правила пересечения теперь Подробный обзор в переменной среды MM_INTERSECTION .

  • Функция быстрого перезапуска теперь надежно заново генерирует конечные точки API и спецификацию openAPI при изменении конфигурации.

  • Исправлено несколько ошибок во время запуска/перезапуска матчмейкера, приводивших к длительному времени запуска или зависанию матчмейкера.

✨ Улучшения и новые функции:

  • Повышены ограничения скорости и масштабируемость всех конечных точек API во всех тарифах матчмейкера.

  • При назначении игрока на Подробный обзор, ID нового тикета игрока будет добавлен как тег к Развертывания.

  • Добавлена функция аутентификации Swagger UI для тестирования API напрямую в веб-интерфейсе без необходимости использовать Postman.

  • Улучшены примеры openAPI, чтобы они точнее отражали реалистичные запросы и ответы.

  • Добавлена новая Подробный обзор предназначенная для целей разработки и отладки.

    • Позволяет выводить список всех текущих тикетов игроков в виде пагинированного списка.

    • Позволяет выводить список всех текущих матчей в виде пагинированного списка.

1.0.0 (9 дек. 2024)

  • Подробный обзор: По (популярному) запросу мы добавляем backfill с автоматическим назначением тикетов, что позволяет повторно использовать серверные места, когда игроки покидают сессию.

    • Идеально подходит для заполнения пустых мест игроков после начала матча или для замены игроков, покинувших матч.

  • Подробный обзор: Мы добавляем возможность присоединяться группой к уже доступной возможности заполнять несколько команд игроками.

    • Идеально подходит для совместного входа в очередь матчмейкинга с группой друзей или из общего лобби.

  • Инструменты разработчика и Инструменты разработчика SDK для матчмейкинга:

    • Чтобы упростить интеграцию, мы теперь предлагаем Software Development Kits для самых популярных игровых движков.

  • Исправлена ошибка, из-за которой Подробный обзор не применялось корректно.

  • Тикеты теперь будут автоматически отменяться после Подробный обзор если они не были назначены на развертывание.

  • Теперь вы можете Подробный обзор чтобы улучшить поток вашего процесса матчмейкинга.

  • Развертывания, создаваемые матчмейкером, теперь помечаются ID тикетов.

  • Теперь вы можете редактировать конфигурацию во время работы матчмейкера. Это запускает быстрое перезагружение вашей конфигурации без необходимости полного цикла выключения/включения матчмейкера. Примечание: эта функция не рекомендуется для production-сред, поскольку она удаляет все текущие тикеты и временно делает API недоступным.

  • Исправлено Подробный обзор чтобы использовать правильные примитивные типы вместо массивов.

  • Исправлено Подробный обзор значения JSON, которые ранее содержали экранированные символы.

0.2.3 (8 окт. 2024)

  • Исправлена ошибка, из-за которой некоторые заголовки не принимались матчмейкером, когда запросы отправлялись из WebGL-приложения (политики CORS).

0.2.2 (3 окт. 2024)

  • Исправлена проблема с проверкой TLS/SSL-сертификата, из-за которой матчмейкер не запускался.

0.2.1 (30 сент. 2024)

  • Исправлена ошибка, из-за которой конечная точка beacons возвращала ошибку 500.

0.2.0 (25 сент. 2024)

  • Базовая аутентификация теперь обязательна для всех конечных точек.

  • Добавлена возможность настраивать количество повторных попыток при сбое назначения на сервер.

  • Командный матчмейкинг теперь является вариантом по умолчанию для всех конфигураций матчмейкинга.

  • И application, и version теперь являются обязательными полями во всех профилях.

  • Представлена новая конечная точка для мониторинга состояния матчмейкера.

  • Обновлен формат переменной среды tickets в развертывании.

  • Добавлена опция конфигурации, позволяющая хостам взаимодействовать с матчмейкером.

  • Debug API теперь доступен только при явном включении в конфигурации (в настоящее время он отключен для переработки).

  • The game_profile ключ в ответе GET ticket был заменен на profile.

Последнее обновление

Это было полезно?