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

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

✔️ Введение

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

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

circle-info

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

Каждому Matchmaker соответствуют три основные концепции:

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

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

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

circle-check

▶️ Запустить матчмейкинг

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

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

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

  3. Сформировать группу - зарегистрируйте своё Лобби как Группу матчмейкинга,

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

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

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

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

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

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

Аутентифицировать

circle-check

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

Сформировать группу

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

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

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

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

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

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

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

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

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

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

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

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

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

Наш кроссплатформенный матчмейкер поддерживает все коммерческие и кастомные сервисы Лобби:

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

Steamworks Lobbyarrow-up-right (Valve Corporation)

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

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

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

circle-exclamation

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

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

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

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

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

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 , что означает, что ваше развёртывание запускается.

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

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

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

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

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

circle-info

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

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

circle-check
circle-info

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

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

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

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

Дополнение матча (Backfill Match)

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

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

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

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

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

    3. Обновляйте истёкшие Backfill, которые удаляются после ticket_expiration_period.

  • Очищайте (удаляйте) любые оставшиеся Backfill как только Развертывания:

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

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

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

circle-check
circle-exclamation

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

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

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

circle-check

Правила

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

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

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

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

circle-info

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

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

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

circle-exclamation

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

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

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

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

circle-check

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

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

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

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

только если в команде есть достаточная вместимость для целой группы.
circle-info

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

Пример правила: selected_game_mode

chevron-rightправило будет сопоставлять игроков с учётом регистра: Alice + Bob + Dave могут совпасть,hashtag

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

"Capture The Flag"

"capture the flag"

Frank
"Free For All"
Erin

Bob

Alice

Charlie

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

Dave

elo_rating

number_difference правило выше с

chevron-rightправило будет сопоставлять игроков с учётом регистра: "max_difference": 50hashtag

"max_difference": 50 первоначально: Alice + Bob могут совпасть, или Bob + Charlie могут совпасть, Alice + Bob + Charlie никогда не совпадут.

intersection

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

selected_map "overlap": 1

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

будет сопоставлять: первоначально: Alice + Bob + Charlie могут совпасть, или Alice + Bob + Dave могут совпасть, Alice + Bob + Charlie + Dave никогда не совпадут.

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

По желанию,

expansions

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

chevron-rightс:hashtag

максимальной задержкой 125 мс к одному (любому) маяку, разницей задержек 125 мс или меньше между наименьшим и наибольшим значением для того же маяка,

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

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

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

  • по крайней мере одним совпадающим

  • значением размера группы для backfill

  • среди игроков. В примере выше мы расширяем поиск, изменяя атрибуты

после: 4 игрока диапазон рейтинга навыков 150

максимум 250 мс задержки

  • максимум 250 мс задержки

  • 30 секунд:

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

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

  • максимум 250 мс задержки

  • 60 секунд:

  • 1-4 игрока

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

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

  • 60 секунд:

  • Тонкая настройка расширений

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

Какова длительность моей игровой сессии? Подробный обзор.

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

  • Каков мой

    • пиковый CCU

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

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

  • настроен правильно (это привело бы к высокому пингу).

    • Каково распределение рейтинга навыков у игроков (по регионам)? Подробный обзор Распределение навыков обычно следует

  • Колоколообразной кривой

    • (естественное распределение), поэтому с каждым стандартным отклонением от среднего вы находите меньше игроков дальше от среднего. Игроки со средними значениями будут подобраны быстро, в первом расширении, а крайности представляют проблему. Мы рекомендуем увеличивать величину расширенного различия с каждым расширением, например 25 -> 50 -> 100, чтобы учесть меньшее число игроков на краях кривой.arrow-up-right Если у вас есть какой-либо элитный уровень (профессиональные игроки), мы рекомендуем отдельный профиль с кастомной настройкой навыков, так как образец меньше и часто не следует общей тенденции по всей базе игроков. (склоняется к крайностям, инвертированная колоколообразная кривая)

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

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

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

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

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

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

    • Расширения любого атрибута правила будут

    • перезаписывать предыдущие значения

circle-info

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

Предварительный просмотр неотформатированного

🏁 Примеры расширенных переменных: Приложения и версии.

MM_MATCH_PROFILE=advanced-example MM_EXPANSION=initial

circle-info

, распарсьте их с помощью нашего SDK или пользовательским методом. Сервера могут сопоставлять соединения игроков с группами и атрибутамипосле того, как игрок отправит свой ID билета на сервер.

circle-check

будет помечено назначенными ID билетов игроков

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

circle-check
circle-info

Обновите матчмейкер до корпоративного уровня

чтобы открыть метрики и инсайты матчмейкинга:

☁️ Хостинг-кластер Матчмейкер удобно размещается и управляется Edgegap круглосуточно.arrow-up-right Выберите вариант хостинга, наиболее подходящий для вашей цели:

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

Обновитесь до приватного кластера в один клик. Изменение тарифов приватного кластера после запуска без простоя игроков также возможно с помощью

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

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

количество игроков ⏩ Пошаговые обновления- больше игроков означает больше билетов и API-запросов,

количество запросов на игрока

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

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

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

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

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

  • Используйте реализуйте экспоненциальный джиттерный бэкофф

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

triangle-exclamation

⚠️ Перед запуском в реальной эксплуатации

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

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

Пример DevOps окружения Blue/Green

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

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

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

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

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

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

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

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

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

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

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

  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 чтобы освободить место в реестре контейнеров,

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

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

circle-check

⚡ Срочный хотфикс сервера

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

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

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

    1. запушить новый тег образа в ваш реестр контейнеров 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 не достигнет 🟢 зелёного,

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

    1. новые матчи автоматически инициируют назначение с обновлённым тегом t1.2.0,

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

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

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

📗 API

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

Сервер-сервер

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

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

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

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

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

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

circle-check
circle-info

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

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

Политика совместного использования ресурсов между источниками (CORS)

Для WebGL-игр, размещённых на сторонних платформах распространения (например, itch.ioarrow-up-right), отправка любых запросов к матчмейкеру из игрового клиента может привести к нарушениям политики Cross-Origin Resource Sharingarrow-up-right Большинство современных веб-браузеров отправляют предзапросarrow-up-right чтобы проверить, понимает ли и принимает ли бэкенд-сервис (Матчмейкер) коммуникацию с вашим игровым клиентом.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

chevron-rightМой тикет застрял, постоянно переключаясь между MATCH_FOUND и КОМАНДА_НАЙДЕНА повторно.hashtag
  • Аккаунты Бесплатного уровня ограничены 1 развертыванием одновременно.

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

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

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

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

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

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

circle-info

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

3.2.1 (24 нояб. 2025)

circle-check
circle-exclamation

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

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

3.2.0 (31 окт. 2025)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

circle-exclamation

3.1.0 (10 июня 2025)

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

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

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

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

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

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

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

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

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

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

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

3.0.0 (20 мая 2025)

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

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

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

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

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

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

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

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

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

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

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

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

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

  • До 40% увеличенный коэффициент заполнения матчей за счёт оптимизации алгоритма расширений.

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

circle-info

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

0.2.3 (8 окт. 2024)

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

0.2.2 (3 окт. 2024)

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

0.2.1 (30 сен. 2024)

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

0.2.0 (25 сен. 2024)

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

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

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

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

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

  • Обновлён формат переменной окружения tickets в развертывании.

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

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

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

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

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