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

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

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

пересечение сопоставляет игроков с одним или несколькими совпадающими строковыми значениями с учётом регистра.
Пример правила: 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 (профессиональные игроки), мы рекомендуем отдельный профиль с пользовательской настройкой навыков, поскольку выборка меньше и часто не следует общей макротенденции по всей базе игроков. (смещение к крайностям, перевёрнутый колокол)
Как я могу повысить скорость подбора матчей и заполненность матчей при небольшой базе игроков?
Узнайте как можно больше о своих игроках и их предпочтениях!
Рассмотрите возможность убрать некоторые правила или изначально ослабить ограничения.
Со временем ослабляйте размер команды или количество команд — частичный матч лучше, чем отсутствие матча.
Увеличьте интервал между расширениями, чтобы накапливать больше игроков.
Свяжитесь с нами за дополнительными советами и приёмами, специально для вашего дизайна игры.
Расширения любого атрибута правила перезапишут предыдущие значения этого атрибута.
📌 Внедрённые переменные
Вашему серверу может понадобиться знать данные о своих игроках. Атрибуты игроков, вычисленные значения матча и другие значения внедряются в ваше развёртывание вместе с обычными Приложения и версии.
Предпросмотр без форматирования 🏁 Дополнительные примеры переменных:
Переменные окружения хранятся как JSON-строки, анализируйте их с помощью нашего SDK или пользовательского метода.
Серверы могут сопоставлять подключения игроков с группами и атрибутами после того как игрок отправит свой ID билета на сервер.
🧵 Отслеживание игроков
Если ваши игроки сталкиваются с какими-либо проблемами, может быть полезно отследить их путь до логов сервера. Каждый Matchmaker развёртывание будет помечено назначенными ID билетов игроков чтобы вы могли легко Развертывания и находить Развертывания чтобы помочь вам устранить неполадки.
Отображайте ID билетов и ID развёртываний в UI истории матчей клиента чтобы отслеживать игроков при устранении неполадок.
См. Развертывания чтобы узнать об устранении неполадок развёртывания.
👀 Аналитика
Получайте сведения о нагрузке и производительности вашего матчмейкера без необходимости в коде или конфигурации.
🌟 Обновите Matchmaker до тарифа Enterprise чтобы открыть метрики и аналитику подбора матчей:


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

🔃 Обновление клиента + сервера
Предварительные требования: В этом разделе предполагается, что вы завершили Подробный обзор.
Для того чтобы выпускать обновления игрового клиента + сервера, вы можете:
Подготовить новую версию серверного приложения
v1.2.0-rcна Edgegap:запушить новый тег образа в ваш контейнерный реестр
t1.2.0,создать новую версию приложения
v1.2.0-rc,
Проводить любые dev-тесты, развертывая новую версию приложения
v1.2.0-rc:подключая Editor вашего игрового движка к предоставленному 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 матчмейкера распространились среди ISP по всему миру после остановки матчмейкера (быстрый перезапуск не требует обновления 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:запушить новый тег образа в ваш контейнерный реестр
t1.2.0,создать новую версию приложения
v1.2.0-rc,
Проводите тесты и проверки, развертывая новую версию приложения
v1.2.0-rc:подключая Editor вашего игрового движка к предоставленному 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-адрес.

Обмен ресурсами между источниками (CORS)
Для webGL-игр, размещенных на сторонних платформах распространения (например, itch.io), отправка любых запросов к Matchmaker из игрового клиента может привести к обмену ресурсами между источниками нарушениям политики. Большинство современных веб-браузеров отправляют pre-flight запрос чтобы проверить, что бэкенд-сервис (Matchmaker) понимает и принимает связь от вашего игрового клиента.
Неудачная pre-flight проверка (по умолчанию из соображений безопасности) может привести к одной из нескольких возможных ошибок, связанных с CORS, чаще всего отсутствует заголовок CORS 'Access-Control-Allow-Origin' .
Чтобы решить эту ошибку, добавьте allowed_cors_origin параметр в вашу конфигурацию, чтобы либо:
внести в белый список точные домены, на которых размещен ваш клиент:
или внести в белый список домен с wildcard (включая все поддомены):
Для 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, либо после достижения периода удаления (начинается после истечения срока действия тикета, определенного в вашей конфигурации). Создайте новый тикет заново или увеличьте периоды истечения/удаления в вашей конфигурации для тестирования.
Мой матчмейкер показывает ошибку, что мне делать?
Если это dev- или тестовый экземпляр, сначала попробуйте перезапустить ваш матчмейкер. - Пожалуйста, сообщайте о любых проблемах через наш 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 матча — отслеживайте игроков и добавляйте UI-элементы, чтобы делиться никнеймами вашей команды или команд соперников, рейтингом навыка или другими свойствами, хранящимися у сторонних сервисов.
Крупное Подробный обзор переработано на основе внутреннего стресс-тестирования, лучшее handling кратковременных всплесков.
Улучшена заполняемость матчей благодаря задержке размера частичных матчей до конца расширения.
Если достигнут максимальный размер команды, матч создается немедленно.
В противном случае матч создается в конце текущего расширения, если достигнут минимальный размер команды.
Задавайте периоды истечения и удаления для каждого профиля и оптимизируйте под наилучший опыт игроков.
Чтобы обновить вашу конфигурацию, увеличьте версию и скопируйте поля истечения и удаления в каждый профиль.
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чтобы добиться matching типа "best effort", стремясь максимизировать заполнение матча,чтобы требовать определенное число игроков в команде, установите и min, и max в одно и то же значение,
backfills обходят
player_countправило и всегда матчятся с 1 тикетом (без изменений).
Тикеты, групповые тикеты и backfills, у которых все задержки выше наибольшего
max_latencyв данном профиле, будут немедленно отклонены с400 Bad Requestответом на запрос создания тикета вместо истечения:применяется только если правило latency настроено,
чтобы обойти это поведение, создайте расширение с
max_latency: 99999(любое значение выше тайм-аута измерения задержки вашего клиента).
Внедренные переменные окружения содержащие данные тикета, теперь включают поле
id(ID тикета), чтобы их было проще повторно использовать при создании Подробный обзор.
🩹 Исправления ошибок:
Подробный обзор теперь использует настроенные периоды удаления и истечения (как и тикеты и групповые тикеты).
Подробный обзор теперь корректно матчится с использованием настроенных
пересечениеправил.Исправлено спецификацию openAPI для POST Подробный обзор запроса (требует
public_ip) и ответа GET /tickets (team_idявляется необязательным), включая примеры.
✨ Улучшения и новые функции:
Теперь рассматривается до 3 раз больше потенциальных матчей, что приводит к более оптимальным группам и максимизирует заполняемость матчей.
До 200% более высокая скорость матчмейкинга благодаря оптимизациям параллелизма.
До 40% более высокая заполняемость матчей благодаря оптимизации алгоритма расширений.
Улучшена стабильность сервиса и увеличена скорость быстрого перезапуска.
Бенчмарки были получены на данных, сгенерированных хаосом, с использованием расширенной конфигурации примера.
Архив журнала изменений (v2.1.0 и ранее)
2.1.0 (24 фев. 2025)
⚠️ Ломающие изменения:
Разделена информация о профиле игры и стадии расширения в Подробный обзор:
MM_MATCH_PROFILEтеперь будет включать только имя профиля так, как оно указано в конфигурации.Введен
MM_EXPANSION_STAGEкоторый будет содержать стадию расширения в виде строки (например, "initial", "15", "30").
Назначения тикетов теперь включают Group ID при Подробный обзор. Group ID также включается как Подробный обзор, в виде сопоставления Group ID со списком ID игроков группы.
Назначения тикетов теперь включают Team ID при Подробный обзор. Team ID также включается в каждое поле данных тикета Подробный обзор.
Подробный обзор теперь возвращает
409 ConflictHTTP-код вместо204 No Contentчтобы показать, что тикет нельзя удалить, поскольку развертывание уже начинается. Чтобы заменить вышедших игроков, используйте Подробный обзор выдаваемый сервером после заранее определенного тайм-аута.Подробный обзор параметр тела запроса
attributes.deployment_request_idбыл перемещен вattributes.assignment.request_id.Подробный обзор тело запроса теперь требует полных сведений о назначении в составе
attributesпараметра в дополнение кrequest_id.
🩹 Исправления ошибок:
Резолвенные значения правила intersection теперь Подробный обзор в переменной окружения
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.
Последнее обновление
Это было полезно?

