Подробный обзор
Узнайте подробнее о концепциях no-code matchmaker от Edgegap и настройте их под свои нужды.
✔️ Введение
Начните за 5 минут и бесплатно протестируйте все функции, кредитная карта не требуется.
Переходите на более мощный, приватный (выделенный) кластер, когда будете готовы. Нативная интеграция с Edgegap Развертывания обеспечивает лучший в классе пинг независимо от того, где находятся ваши игроки.
Бесплатный тариф позволяет 3 часа работы после каждого перезапуска. Ваш matchmaker будет работать на общей инфраструктуре с ограниченными ресурсами, подходящей для тестирования. После публичного релиза ваш matchmaker должен работать 24/7.
У каждого Matchmaker есть три основных концепции:
Подробный обзор - базовая серверная инфраструктура, полностью управляемая и обслуживаемая Edgegap.
Подробный обзор - набор правил и настроек, определяющих, как работает matchmaker.
🌐 Экземпляр сервиса - живой сервис подбора игроков, работающий 24/7 на Cluster, использующий Configuration для подбора игроков и создания назначений развертывания (сервера).
Часто обновляйте версию вашего matchmaker чтобы получать преимущества новых функций и исправлений ошибок.
▶️ Начать подбор игроков
Узнайте о процессе подбора игроков, чтобы настраивать, устранять неполадки и оптимизировать интеграцию с вашей игрой.

Аутентифицировать игрока - предотвращает игру в сети с пиратских копий,
Создать лобби - объединиться с друзьями и поделиться предпочтениями игрока/матча,
Объединиться в группу - зарегистрировать ваше лобби как группу подбора игроков,
Найти матч - подготовиться и начать поиск матча (нового или существующего),
Назначить сервер и внедрить тикеты - сервер назначается автоматически через несколько секунд,
Подключиться и аутентифицироваться - попытаться установить защищённое соединение с игровым сервером,
Подтвердить личность - сервер проверяет личность игрового клиента с помощью токенов сторонних сервисов,
Принять игрока или исключить игрока - сервер решает, разрешено ли игроку присоединиться.
Быстро начните работу — добавьте в свою игру наш стартовый пример подбора игроков:
Аутентификация
Этот токен можно безопасно включить в игровой клиент, так как он не предоставляет доступ к API Edgegap.
Отдельных игроков можно идентифицировать по ID их тикета, доступному на клиентах и сервере. При желании добавьте собственную аутентификацию или ограничения с помощью собственного прокси через Сервер к серверу API.
Объединиться в группу
Создание группы (party) гарантирует, что игроки попадут в одну и ту же команду и на один и тот же сервер со своими друзьями.
Создайте группу, помеченную как готовая, чтобы Подробный обзор быстро как одиночный игрок без участников группы.

Лобби и группа
Используйте сервис Lobby, если дизайн вашей игры требует задания настраиваемых игроком предпочтений подбора (например, выбор персонажа, сложность, карта и т. д.). По мере того как игроки входят в Lobby и выходят из него, они также обновляют группу подбора, чтобы подготовиться к поиску матча позже.
Нет времени на сервис Lobby? Предложите игрокам обмениваться ID группы через Discord или личные сообщения.
приглашать друзей играть со мной
✅
✅
изменять мои предпочтения игрока/матча
✅
❌
просматривать предпочтения других участников лобби
✅
❌
хранить и управлять пользовательскими данными в формате ключ-значение
✅
❌
уведомлять участников группы, что я готов играть
❌
✅
показывать ход подбора игроков и находить матч
❌
✅
получать назначение команды для игрока/группы
❌
✅
получать данные подключения к игровому серверу
❌
✅
Наш кроссплатформенный matchmaker поддерживает все коммерческие и пользовательские сервисы Lobby:
Лобби Epic Online Services (Epic Games)
Лобби Steamworks (Valve Corporation)
Группа Nakama (Heroic Labs)
Лобби Playfab (Microsoft)
Лобби brainCloud (bitHeads)
Друзья Gamekit (Apple)
Пользовательское лобби (ваша компания)
Владелец лобби (игрок, отправляющий приглашения) также должен создать группу подбора игроков.
Сохраните ID вашей группы в общих данных лобби, чтобы другие участники лобби могли легко найти и присоединиться к группе подбора, связанной со сторонним лобби. Игроки, приглашённые в группу, используют ID группы, чтобы создавать свои членства (присоединяться), а также чтобы безопасно хранить свои атрибуты подбора.
После того как группа начинает подбор, к ней уже нельзя присоединиться. Подробный обзор и создайте новую.
Оптимизация пинга
Если Подробный обзор включает задержки правило все участники группы отправляют свои Ping Beacons измерения в предотвращать подбор игроков из удалённых регионов или с гораздо более высоким/низким пингом (задержкой).
Покинуть очередь
Владелец группы может удалить группу, автоматически удалив все членства в группе. Удаление группы после начала подбора отменит все членства и удалит их вскоре после этого.
Участники группы (кроме владельца) могут удалить свои членства (покинуть группу) в любое время до Подробный обзор. Удаление членства после этого отменит подбор для всей группы.
После отмены подбора участники автоматически удаляются из подбора и получают уведомление через членство status:CANCELLED в своём следующем ответе опроса статуса.
После отмены, если группа хочет перезапустить подбор, владелец группы должен заново создать группу, передать новый ID группы участникам, а затем заставить их заново создать свои членства.
После того как матч найден, группу нельзя удалить (409 Conflict), и она будет удалена автоматически. Ваш сервер должен дать игрокам некоторое время (например, 60 с) на подключение, прежде чем считать игрока покинувшим очередь. В таком случае ваш сервер может:
заменить вышедшего игрока ИИ-персонажем, чтобы немедленно начать матч,
или создать backfill чтобы найти нового игрока на замену ушедшему,
или продолжить без замены ушедшего игрока, если дизайн вашей игры допускает переменное число игроков.
Найти матч
Чтобы начать поиск матча, все участники и владелец должны отметить себя готовыми.
Чтобы позволить владельцу группы немедленно начать подбор игроков, пометьте членства как готовые при создании. Как только владелец отметит себя готовым, подбор игроков начнётся, так как все готовы.
Для наилучшего опыта предоставляйте игрокам обновления статуса через внутриигровой интерфейс.
Все игроки должны регулярно опрашивать своё членство (рекомендуется каждые 3-5 с), чтобы определить, когда начинается подбор игроков, и сообщать о ходе подбора через внутриигровой интерфейс.
Игрокам следует сохранять ID своего членства и группы постоянно, чтобы в случае сбоя клиента они могли перезапустить игру и продолжить без потери прогресса подбора.
Как только мы найдём достаточно игроков, чтобы собрать их в одну команду в соответствии с вашим Правила, игроки получат уведомление в ответе по своему членству с status:TEAM_FOUND.
Удаление членства на этом этапе приведёт к отмене всех членств группы, а все другие группы, назначенные в ту же команду, вернутся к status:SEARCHING .
Команды продолжают подбор с другими командами, используя совпадающие значения между своими группами (или среднее значение в случае number_difference ), пока не будут собраны достаточные команды. Членства указывают это ответом status:MATCH_FOUND , что означает, что ваше развертывание запускается.
Matchmaker стремится максимизировать заполнение матча и не перейдёт к MATCH_FOUND пока не выполнится одно из условий:
достаточное количество команд подобрано с настроенным максимальным размером команды,
или если Подробный обзор определено И достигнуто время расширения, И достаточное количество команд подобрано с настроенным минимальным размером команды,
или истёк настроенный срок жизни тикета И достаточное количество команд подобрано с настроенным минимальным размером команды.
Если ни один сценарий не удаётся до истечения настроенного срока жизни тикета, группа и тикеты отменяются.
Столкнулись с долгим ожиданием в очереди во время тестирования или с игроками из менее популярных регионов? Установите более короткий срок жизни тикета (например, 30 с) и заново создавайте группу (или тикеты) на стороне клиента по истечении срока.
Срок жизни тикета автоматически сбрасывается всякий раз, когда группа (или игрок) назначается в команду.
Сохраните team_id и match_id в вашем игровом бэкенде, чтобы отображать информацию об участниках команды в игре.
Каждый игрок получает уникальный ID тикета, который можно использовать для Подробный обзор с игровыми серверами.
Если игрок был подобран и назначен на игровой сервер, его тикет удаляется автоматически. Игроки, покинувшие очередь после status:HOST_ASSIGNED могут быть заменены backfill.
Как только игроки получают status:HOST_ASSIGNED они переходят к Подробный обзор.
Подключиться к серверу
Подбор при заполнении
После завершения инициализации игрового сервера ваш сервер должен:
Запустить таймер покидания для каждого нового игрока. Мы рекомендуем показывать подключённым игрокам ход загрузки с помощью сцены/уровня загрузки — полноценной 3D-сцены, социального интерфейса в стиле лобби или экрана загрузки с полосой прогресса.
Отслеживайте новые подключения игроков или уходящих со временем существующих игроков:
Новые игроки должны сообщить серверу ID тикета для аутентификации и чтобы сопоставить своё соединение с matchmaker Подробный обзор или
assigned_ticket(если выполнен backfill).Создавайте новые backfill для неиспользуемой ёмкости игроков (ушедших) на протяжении всего времени жизни сервера.
Обновляйте просроченные backfill, которые удаляются после
ticket_expiration_period.
Очистите (удалите) все оставшиеся backfill когда Развертывания:
Unity -
OnApplicationQuitколбэк или пользовательский колбэк завершения игры,Unreal Engine -
OnWorldDestroyed,PreExit, или пользовательский колбэк завершения игры.
Для backfill можно использовать любой профиль, если указано корректное назначение сервера и предоставлен хотя бы один тикет. См. Подбор матчей для минимального примера.
⚙️ Конфигурация
API Matchmaker генерируется из JSON-конфигурации, указанной при создании нового (или при быстром перезапуске) Matchmaker. Вы можете указать любое количество профилей с разными правилами и расширениями:
См. Подбор матчей наши SDK и подробные примеры сценариев.
Изменение работающего matchmaker вызовет быстрый перезапуск, удалив все тикеты и вызвав кратковременный простой.
Профили (очереди)
Профили представляют собой полностью отдельные очереди подбора игроков, использующие одну и ту же версию matchmaker. Вы можете настроить любое количество профилей для каждого matchmaker. Разделение базы игроков на несколько профилей может привести к более длительному ожиданию в очереди для ваших игроков.
Каждый профиль matchmaker использует Версию приложения как шаблон для запуска новых развертываний (серверов).
Некоторые игровые режимы могут требовать больше vCPU / RAM, особенно если они поддерживают большее количество игроков. Каждый matchmaker может включать несколько профилей, каждый из которых связан с версией приложения с настроенными ресурсами.
Правила
Каждый игрок и группа присоединяются к очереди подбора и находят матчи, используя начальные правила сначала.
Каждая запись в профиле по пути .rules.initial представляет собой правило, где:
key — это строковое значение, задающее имя правила так, как вам удобно; например,
match_size, аvalue — это объект, определяющий тип и атрибуты правила в соответствии с нашим стандартным набором правил.
Все правила должны выполняться одновременно, чтобы инициировать назначение хоста и начать или найти развертывание.
Операторы (тип правила)
player_count — это специальное правило, определяющее, сколько игроков нужно сопоставить для начала назначения.
Правило player_count обязательно и может быть определено только один раз в ваших начальных правилах конфигурации.
Matchmaker всегда стремится максимизировать заполнение матча, вплоть до указанного max_team_size :
если достигнут максимальный размер команды, матч создаётся немедленно,
иначе игроки ждут в очереди, чтобы заполнить матч, пока расширение (или истечение срока) не наступит,
незадолго до расширения (или истечения срока), если возможен частичный матч (≥ min и < max team size), этот матч будет создан со всеми игроками на одной и той же стадии расширения (при условии прохождения других правил).
Для кооперативных, free-for-all или асимметричных режимов с размером команды установите "team_count": 1 .
Количество команд можно настроить, чтобы формировать несколько сбалансированных команд для соревновательных игр:
атрибуты группы вычисляются как среднее/перекрытие атрибутов игроков группы,
атрибуты команды вычисляются как среднее/перекрытие атрибутов групп команды.
Предполагая фиксированный размер команды в 4 игрока:

Группы сопоставляются в команды без переполнения, только если в команде достаточно места для всей группы.
string_equality сопоставляет игроков с точно таким же строковым значением.
Пример правила: selected_game_mode
selected_game_mode правило будет сопоставлять игроков с учётом регистра:
✅ Alice + Bob + Dave могут совпасть,
❌ Alice + Erin или Charlie + Frank никогда не совпадут.
Alice
Erin
Frank
Bob
Charlie
Dave
number_difference сопоставляет игроков в пределах абсолютной числовой разницы между ними.
Пример правила: elo_rating
elo_rating правило выше с "max_difference": 50 изначально:
✅ Alice + Bob могут совпасть, или Bob + Charlie могут совпасть,
❌ Alice + Bob + Charlie никогда не совпадут.

intersection сопоставляет игроков с одним или несколькими перекрывающимися строковыми значениями, с учётом регистра.
Пример правила: selected_map
selected_map правило выше с "overlap": 1 будет сопоставляться:
✅ Alice + Bob + Charlie могут совпасть, или Alice + Bob + Dave могут совпасть,
❌ Alice + Bob + Charlie + Dave никогда не совпадут.

Расширение правил
При желании расширения изменяют атрибуты правила по прошествии времени в очереди, чтобы ослабить ограничения и расширить пул игроков, которых можно сопоставить, что приводит к более быстрым матчам.
Пример сценария: расширения
Изначально требуется 1 команда, состоящая ровно из 4 игроков (возможно, разделённых по группам) с:
максимум 125 мс задержки относительно одного и того же (любого одного) beacon,
разницей задержки 125 мс или меньше между минимальным и максимальным значением для одного и того же beacon,
разницей рейтинга навыка 50 очков или меньше между игроком с самым низким и самым высоким рейтингом,
точно таким же (с учётом регистра) выбранным игровым режимом,
как минимум одним совпадающим выбором карты (с учётом регистра) среди игроков,
как минимум одним совпадающим размером backfill группы значением среди игроков.
В приведённом выше примере мы расширяем поиск, изменяя атрибуты после:
30 секунд:
4 игроков
диапазон рейтинга навыка 150
макс. задержка 250 мс
60 секунд:
4 игроков
диапазон рейтинга навыка 200
макс. задержка 250 мс
3 минуты (180 с):
1-4 игрока
диапазон рейтинга навыка 200
любая задержка
Точная настройка расширений
Предсказание предпочтений игроков похоже на стрельбу по движущейся мишени. Начните с менее строгого набора правил при релизе, а затем оптимизируйте его поэтапно с Подробный обзор.
Эти вопросы могут помочь структурировать ваш мыслительный процесс:
Какова длительность моей игровой сессии?
5-минутная игровая сессия означает, что каждый игрок снова попадает в очередь каждые 5 минут, что косвенно уменьшит время ожидания, поскольку в любой момент в очереди будет больше игроков.
Каков мой пиковый CCU и мой низкий CCU?
Если между низким и высоким значением высокая разница (более 60%), вам может понадобиться отдельный профиль для периода спада, чтобы дольше ждать на каждом расширении и накапливать больше игроков.
Каково географическое распределение моих игроков?
Равномерное распределение по нескольким часовым поясам означает, что у пика и спада меньшая вариативность, но не ускоряет подбор, поскольку игроки из разных регионов не должны совпадать, если ваш Подробный обзор настроен правильно (иначе получится высокий пинг).
Каково распределение рейтинга навыка моих игроков (по регионам)?
Распределение навыка обычно следует кривой Гаусса (нормальному распределению), поэтому на каждом стандартном отклонении от среднего вы находите всё меньше игроков, удалённых от среднего. Игроки со средними значениями будут подобраны быстро, на первом расширении, но крайние значения — проблема.
Мы рекомендуем увеличивать величину допустимой разницы с каждым расширением, например 25 -> 50 -> 100, чтобы учитывать меньшее число игроков на краях кривой.
Если у вас есть игроки любого challenger-tier (профессионалы), мы рекомендуем отдельный профиль с собственной настройкой навыка, поскольку выборка меньше и часто не следует общему тренду по всей базе игроков. (смещение к экстремумам, перевёрнутая кривая Гаусса)
Как улучшить скорость подбора и заполнение матча при небольшой базе игроков?
Узнайте как можно больше о своих игроках и их предпочтениях!
Рассмотрите возможность убрать некоторые правила или изначально ослабить ограничения.
Со временем ослабляйте размер команды или количество команд — частичный матч лучше, чем отсутствие матча.
Увеличьте интервал между расширениями, чтобы накапливать больше игроков.
Свяжитесь с нами за дополнительными советами и приёмами, специально для дизайна вашей игры.
Расширения любого атрибута правила перезапишут предыдущие значения этого атрибута.
📌 Внедрённые переменные
Вашему серверу могут понадобиться сведения о своих игроках. Атрибуты игроков, рассчитанные значения матча и другие значения внедряются в ваше развертывание вместе с обычными Приложения и версии.
Предпросмотр без форматирования 🏁 Дополнительные примерные переменные:
Переменные окружения хранятся в виде JSON-строк, парсите их с помощью нашего SDK или собственного метода.
Серверы могут сопоставлять подключения игроков с группами и атрибутами после того как игрок отправит свой ID тикета на сервер.
🧵 Трассировка игроков
Если у ваших игроков возникают проблемы, полезно отслеживать их путь до серверных логов. Каждый Matchmaker развертывание будет помечено назначенными ID тикетов игроков чтобы вы могли легко Развертывания и находить Развертывания для помощи в устранении неполадок.
Отображайте ID тикетов и ID развертываний в интерфейсе истории матчей клиента чтобы отслеживать игроков при устранении неполадок.
См. Развертывания чтобы узнать об устранении неполадок с развертыванием.
👀 Аналитика
Получайте сведения о нагрузке и производительности вашего matchmaker — без кода и без необходимости настройки.
🌟 Обновите Matchmaker до Enterprise Tier чтобы открыть метрики и аналитические сведения о подборе игроков:


☁️ Хостинговый кластер
Matchmaker удобно размещается и управляется Edgegap 24/7 без перерывов.
Выберите вариант хостинга, который лучше всего подходит для вашей цели:
Тарифы приватного кластера
Обновите до приватного кластера в один клик. Также возможно изменить тарифы приватного кластера после запуска без простоя для игроков с ⏩ Пошаговые обновления. Управляемые кластеры предоставляют высокодоступный хостинг сервисов, поддерживаемый Edgegap, с круглосуточной живой поддержкой для публично выпущенных игр.
Требования к ресурсам для вашего экземпляра будут зависеть от факторов:
количество игроков - больше игроков приводит к большему числу тикетов и API-запросов,
количество запросов на игрока - более частые повторные попытки увеличивают нагрузку на сервис и потребляют ресурсы,
сложность конфигурации - правила пересечения и расширения особенно требовательны,
средняя длительность матча - более короткие сессии заставляют игроков чаще возвращаться в подбор,
сроки истечения и удаления - устаревшие тикеты накапливаются со временем и потребляют ресурсы,
логика повторных попыток клиента с fallback - повторные попытки с jittered backoff помогают распределять пики всплесков трафика.
Подготовьтесь к успеху и оптимизируйте после запуска, чтобы не блокировать игроков в день релиза. Используйте Инструменты разработчика или реализуйте экспоненциальный jittered backoff для восстановления после высокой нагрузки.
Ограничения скорости
Чтобы защитить ваш кластер от превышения его пиковых возможностей и сбоев, мы ограничиваем число запросов в секунду на основе наших внутренних нагрузочных тестов, используя Подбор матчей конфигурацию.
Общий лимит
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 и памяти, что влечет за собой стоимость хостинга для каждого частного матчмейкера. См. ресурсы и цены, связанные с каждым тарифом, на нашей странице цен.
Всегда используйте частные кластеры для стресс-тестирования. Бесплатные матчмейкеры строго ограничены и предназначены только для dev-тестирования.
При проектировании нагрузочного теста пожалуйста, учитывайте реалистичные модели поведения игроков:
✅ Игроки постепенно подключаются к матчмейкингу, увеличивая req/s в течение нескольких часов.
❌ Все игроки координируются и создают свои тикеты в одну и ту же секунду.
✅ Игроки ждут все больше времени между повторными попытками (например, 1 с - 5 с - 10 с - 10 с).
❌ Все игроки повторяют попытку сразу после получения 429 Слишком много запросов ответа.
✅ Большинство игроков получат свои назначения в течение короткого времени (10–60 с) и перестанут опрашивать сервер.
❌ Все игроки продолжают опрашивать сервер в течение заданного времени даже после получения назначения.
✅ Большинство игроков заканчивают свою игру (это занимает время), прежде чем снова начать матчмейкинг.
❌ Все игроки сразу же заново запускают матчмейкинг после получения назначения.
✅ Пиковый трафик сохраняется 6–8 часов в день, после чего в некоторых часовых поясах он снижается.
❌ Пиковый трафик сохраняется 24 часа в сутки, все игроки играют днем и ночью.
Если матчмейкер испытывает высокую нагрузку:
если CPU ограничивается, матчмейкинг может замедлиться,
если у матчмейкера заканчивается память, он перезапустится без потери информации о тикетах, в надежде, что клиенты реализуют экспоненциальный backoff и всплеск распределится на более длительный период времени.
⏩ Пошаговые обновления
Отслеживание совместимости между версиями сервера и клиента может быть сложным. Следуйте нашим советам для надежных релизов, обновлений и предотвращения простоя или проблем совместимости.
URL вашего матчмейкера и токен аутентификации всегда останутся прежними после перезапуска.
Создавайте отдельные матчмейкеры для dev и production сред, чтобы безопасно экспериментировать.
⚠️ Перед выходом в продакшен
Мы рекомендуем заранее создать несколько копий вашего матчмейкера: green, blue и orange. Вы можете переключать, какой матчмейкер используется, по мере выпуска обновлений (blue/green-стратегия).
Выбирайте разные регионы для каждого экземпляра, чтобы предотвратить простой во время локальных сбоев.

🔃 Обновление клиента + сервера
Предварительные требования: В этом разделе предполагается, что вы завершили Подробный обзор.
Чтобы выпускать обновления игрового клиента + сервера, вы можете:
Подготовить новую версию серверного приложения
v1.2.0-rcв Edgegap:отправить новый тег образа в ваш container registry
t1.2.0,создать новую версию приложения
v1.2.0-rc,
Выполнить любые dev-тесты, развернув новую версию приложения
v1.2.0-rc:подключив редактор вашего игрового движка к предоставленному URL + внешнему порту,
Обновить неиспользуемый матчмейкер
blueчтобы привязать его к новому тегу образаt1.2.0,включить кэширование для новой версии приложения
v1.2.0-rc, включение кэша для этой версии обеспечит также кэширование образа для версииv-blueпоскольку они ссылаются на один и тот же тег,дождаться, пока индикатор кэширования в версии
v1.2.0-rcдостигнет 🟢 green,
Обновить новый игровой клиент
c2чтобы использовать новую версиюv-blueпри создании тикетов:обновите базовый URL и токен авторизации в игровом клиенте,
Выполнить QA-тесты и финальные проверки нового игрового клиента
c2:если вы обнаружите и устраните какие-либо проблемы, повторите процесс с начала,
подождите 3–7 дней, чтобы изменения DNS матчмейкера распространились на провайдеров по всему миру, после того как матчмейкер был остановлен (быстрый перезапуск не требует обновления DNS или периода ожидания),
Выпустите обновление нового игрового клиента
c2на платформах распространения игр,Дайте время новому игровому клиенту
c2распространиться на устройства игроков (обычно до 3–7 дней):следите за устаревшими игровыми клиентами
c1используя развертывание Развертывания,
Очистите неиспользуемые ресурсы в вашей учетной записи Edgegap:
удалите тег образа
t1.0.0чтобы освободить место в Container Registry,удалите тег образа
t1.1.0чтобы освободить место в Container Registry,отключите свой
greenматчмейкер, чтобы приостановить биллинг до следующего обновления.
Для вашего следующего обновления, увеличьте номера версий и замените green и blue ключевые слова в руководстве.
⚡ Срочный серверный патч
Предварительные требования: В этом разделе предполагается, что вы завершили Подробный обзор.
Чтобы выпустить патч сервера без необходимости обновления игрового клиента, вы можете:
Подготовить новую версию серверного приложения
v1.2.0-rcв Edgegap:отправить новый тег образа в ваш container registry
t1.2.0,создать новую версию приложения
v1.2.0-rc,
Выполните тесты и проверки, развернув новую версию приложения
v1.2.0-rc:подключив редактор вашего игрового движка к предоставленному URL + внешнему порту,
если вы обнаружите и устраните какие-либо проблемы, повторите процесс с начала,
включить кэширование для новой версии приложения
v1.2.0-rc, включение кэша для этой версии обеспечит также кэширование образа для версииv-greenпозже, поскольку они будут ссылаться на тот же тег,дождаться, пока индикатор кэширования в версии
v1.2.0-rcдостигнет 🟢 green,
Обновить версию
v-greenчтобы привязать его к новому тегу образаt1.2.0,новые матчи будут автоматически запускать назначение с обновленным тегом
t1.2.0,следите за устаревшими игровыми клиентами
c1используя развертывание Развертывания,
Очистка неиспользуемых ресурсов в вашей учетной записи Edgegap:
удалите тег образа
t1.1.0чтобы освободить место в Container Registry.
📗 API
Клиенты и серверы могут вызывать API напрямую или с помощью SDK игрового движка, см. также Подбор матчей.
Сервер к серверу
Добавьте расширенные или настраиваемые элементы управления потоком матчмейкинга — реализуйте собственный прокси с помощью нашего Управляемые кластеры или любой облачной FaaS вычислительной платформы, чтобы добиться любого из следующего:
прикрепить чувствительные атрибуты игрока — такие как флаги читера, рейтинги навыка или подобные,
предоставить контекст команды и матча в игре — показывать моих товарищей по команде и противников во время загрузки,
ограничить особые случаи — например, разрешать только 1 группу на игрока в любой момент времени,
добавить кэширование или ограничение частоты API — уменьшить количество запросов и нагрузку на матчмейкер,
настроить интеграцию лобби-группы — создавать асимметричные/ролевые лобби перед матчмейкингом.
Включите параметр player_ip с публичным IP-адресом участника чтобы обеспечить максимально возможную задержку для игрока и воспользоваться преимуществами Развертывания.
Игровые клиенты могут использовать ipify.org бесплатный сервис для определения своего публичного IP. VPN могут скрывать публичный IP-адрес.

Cross-Origin Resource Sharing (CORS)
Для webGL-игр, размещенных на сторонних платформах распространения (например, itch.io), отправка любых запросов к Matchmaker из игрового клиента может привести к Cross-Origin Resource Sharing нарушениям политики. Большинство современных веб-браузеров отправляют pre-flight request чтобы проверить, что серверный сервис (Matchmaker) понимает и принимает связь от вашего игрового клиента.
Неудачная pre-flight проверка (по умолчанию по соображениям безопасности) может привести к одной из нескольких возможных ошибок, связанных с CORS, чаще всего заголовок CORS 'Access-Control-Allow-Origin' отсутствует .
Чтобы устранить эту ошибку, добавьте allowed_cors_origin параметр в вашу конфигурацию, чтобы либо:
внести в белый список точные домены хостинга вашего клиента:
или внести в белый список домен с подстановочным знаком (включая все поддомены):
Для pre-flight запросов Matchmaker учетные данные не требуются, если домены настроены правильно.
🚨 Устранение неполадок
Ваш успех — наш приоритет. Если вы хотите отправить пользовательские запросы, попросить о недостающих критически важных функциях или поделиться любыми мыслями, пожалуйста, свяжитесь с нами в нашем Community Discord.
Почему при попытке создать новый матчмейкер я получаю ошибки?
Пожалуйста, прочитайте сообщение об ошибке: возможно, вы неправильно написали идентификатор, правило или оператор. — Используйте JSONLint чтобы проверить форматирование JSON, возможно, вы пропустили запятую или скобку. — Обратитесь через наш Community Discord за помощью, мы будем рады помочь. 🙏
Почему мой матчмейкер автоматически выключился через 3 часа?
Матчмейкеры в Free Tier предназначены для первоначальных тестов и автоматически выключаются через 3 часа. Чтобы продолжить тестирование, вы можете перезапустить ваш матчмейкер.
Рассмотрите возможность перехода на платный тариф для неограниченного времени работы.
Почему я не могу запустить второе развертывание в своей учетной записи?
В Free Tier вы можете запускать только 1 одновременное развертывание.
Пожалуйста, рассмотрите возможность перехода на платный тариф для неограниченного числа развертываний.
Почему я получаю назначение/развертывание в случайные моменты, игнорируя player_count?
Вы или другой участник команды могли создать тикеты во время предыдущей тестовой сессии, которые не были назначены. Пожалуйста, перезапустить ваш матчмейкер.
Мой тикет застрял в SEARCHING .
Пожалуйста, проверьте, что вы создали достаточное количество совпадающих тикетов, соответствующих вашей конфигурации.
Мой тикет застрял, переключаясь между MATCH_FOUND и TEAM_FOUND повторно.
Учетные записи Free Tier ограничены 1 развертыванием одновременно.
Пожалуйста, рассмотрите возможность обновления тарифа или остановите текущее развертывание, чтобы начать новое.
Мой тикет сразу переходит в CANCELLED.
Срок действия вашего тикета истек. Создайте новый тикет или увеличьте период истечения в вашей конфигурации для тестирования.
Я получаю HTTP 404 Not Found при проверке моего тикета.
Ваш тикет был удален либо запросом DELETE, либо по достижении периода удаления (начинается после истечения срока действия тикета, определен в вашей конфигурации). Создайте новый тикет повторно или увеличьте периоды истечения/удаления в вашей конфигурации для тестирования.
Мой матчмейкер показывает ошибку, что мне делать?
Если это экземпляр для разработки или тестирования, сначала попробуйте перезапустить ваш матчмейкер. — Пожалуйста, сообщайте о любых проблемах через наш Community Discord.
Если эта проблема влияет на живую игру, создайте срочный запрос в поддержку.
🔖 Журнал изменений
Ваш файл конфигурации будет проверяться в зависимости от используемой версии матчмейкера, убедитесь, что ваши правила соответствуют возможностям версии матчмейкера.
Последняя версия матчмейкера — 3.2.2. Все примеры на этой странице актуальны. Следите за уведомлениями о прекращении поддержки вашей версии матчмейкера. См. также ⏩ Пошаговые обновления.
3.2.2 (18 мар. 2025)
🩹 Исправления ошибок:
Небольшое исправление ошибки, из-за которой команды распускались, если назначенный игрок удалял свой тикет до нахождения матча.
Это последняя версия сервиса матчмейкера, рекомендуемая для использования в production.
Чтобы обновить версию матчмейкера — Stop, Edit, Restart. Quick Restart не применит изменения версии.
3.2.1 (24 нояб. 2025)
🩹 Исправления ошибок:
Небольшие исправления ошибок развертывания, устранено несколько ошибок при запуске вашего матчмейкера.
3.2.0 (31 окт. 2025)
🩹 Исправления ошибок:
Различные мелкие исправления спецификации и обновления для согласованности документации.
Различные исправления стабильности и самовосстановления в инфраструктуре матчмейкера.
✨ Улучшения и новые функции:
Представляем Подробный обзор функцию - управление группами теперь стало простым и не требует сторонних сервисов!
Больше не нужно делиться сложными атрибутами тикетов между участниками группы, вам нужен только Group ID.
Начинайте матчмейкинг как группа, когда все игроки отметят себя как готовые.
Проверяйте атрибуты участников группы относительно лидера группы при присоединении, предотвращая группы, которым невозможно подобрать матч (атрибуты игроков группы не будут соответствовать правилам профиля).
Проверяйте размер группы и отклоняйте новые участия, когда достигнут максимальный размер команды.
Читайте нашу обновленную документацию с новым пользовательским потоком, скоро появятся обновления SDK!
Тикеты (членства) теперь включают ID вашего матча — отслеживайте игроков и добавляйте элементы интерфейса, чтобы показывать названия вашей команды или команд соперников, рейтинг навыка или другие свойства, хранящиеся у третьих сторон.
Масштабное Подробный обзор переработано на основе внутреннего стресс-тестирования, лучшее управление короткими всплесками.
Улучшена скорость заполнения матчей за счет отложенного формирования частичных матчей до конца расширения.
Если достигнут максимальный размер команды, матч создается немедленно.
Иначе матч создается в конце текущего расширения, если достигнут минимальный размер команды.
Задавайте периоды истечения и удаления для каждого профиля и оптимизируйте для лучшего опыта игроков.
Чтобы обновить вашу конфигурацию, увеличьте версию и скопируйте поля истечения и удаления в каждый профиль.
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 тикета), чтобы их было легче повторно использовать при создании Подробный обзор.
🩹 Исправления ошибок:
Подробный обзор теперь использует настроенный период удаления и истечения (как тикеты и групповые тикеты).
Подробный обзор теперь корректно сопоставляет, используя настроенные
intersectionправила.Исправлено спецификация openAPI для POST Подробный обзор запроса (требуется
public_ip) и ответа GET /tickets (team_idнеобязательно), включая примеры.
✨ Улучшения и новые функции:
Теперь рассматривается до 3 раз больше потенциальных совпадений, что приводит к более оптимальным группам и максимизирует скорость заполнения матчей.
До 200% более высокая скорость матчмейкинга благодаря оптимизации параллелизма.
До 40% более высокая скорость заполнения матчей благодаря оптимизации алгоритма расширений.
Улучшена стабильность сервиса и увеличена скорость быстрого перезапуска.
Бенчмарки были получены на хаотически сгенерированных данных с использованием конфигурации Advanced Example.
Архив журнала изменений (v2.1.0 и ниже)
2.1.0 (24 февр. 2025)
⚠️ Ломающие изменения:
Разделена информация о профиле игры и стадии расширения в Подробный обзор:
MM_MATCH_PROFILEтеперь будет содержать только имя профиля, как оно указано в конфигурации.Добавлено
MM_EXPANSION_STAGEкоторый будет содержать стадию расширения в виде строки (например, "initial", "15", "30").
Назначения тикетов теперь включают ID группы, когда Подробный обзор. ID группы также включен как Подробный обзорв виде отображения ID группы на список ID игроков группы.
Назначения тикетов теперь включают ID команды, когда Подробный обзор. ID команды также включен в каждый объект данных тикета Подробный обзор.
Подробный обзор теперь возвращает
409 ConflictHTTP-код вместо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.
Последнее обновление
Это было полезно?

