Подбор матчей
Быстро начните работу с подбором игроков и изучите примеры сценариев для различных жанров.
Следуйте вместе с этим видео, чтобы начать работу с нашим сервисом Matchmaker:
✔️ Подготовка
Архитектура подбора игроков
В этом руководстве мы сосредоточимся на Matchmaking API и Backfill API.

При подборе игроков существует четыре (4) важных потока данных:
Matchmaking API используется игровыми клиентами для связи с Matchmaker:
для управления группами, назначения серверов и мониторинга,
для измерения пинга с Ping Beacons.
Развертывания API используется для развертывания, масштабирования и управления вашими выделенными серверами с помощью Matchmaker.
Netcode Transports используются для связи между игровыми клиентами и выделенными серверами.
Подробный обзор для замены или добавления игроков на работающий сервер.
После релиза, ваш Matchmaker должен работать 24/7 чтобы игроки со всего мира могли подключаться к серверам.
🍀 Простой пример
Начните с простого примера и проверьте базовый поток подбора игроков:
создание экземпляра matchmaker на общем Подробный обзор,
определение правил и настроек в вашем matchmaker Подробный обзор,
тестирование потока игроков и управление билетами с помощью 📗 API.
1. Настройка на бесплатном тарифе
☑️ Зарегистрируйте бесплатную учетную запись Edgegap и откройте страницу панели Matchmaker.
☑️ Нажмите на Create Matchmaker сначала, затем введите:
имя matchmaker — для вашего удобства, например
quickstart-dev,загрузите нашу JSON-конфигурацию Simple Example.
🍀 Simple Example (Минимальная рекомендуемая конфигурация):
Обязательно измените приложение имя и версию в соответствии с вашим Приложения и версии.
Устранение неполадок и FAQ:
☑️ Если ошибок проверки не отображается, нажмите Create and Start и дождитесь завершения процесса. В результате будет запущен новый бесплатный кластер с вашим matchmaker Simple Example.
✅ Теперь вы можете перейти к следующему шагу.
2. Изучение конфигурации
По мере выпуска обновлений Matchmaker каждая новая версия использует семантическое версионирование чтобы наглядно сообщать о влиянии изменений через формат major.minor.patch:
🔥
majorверсии включают несовместимые изменения и требуют проверки интеграции,🌟
minorверсии включают значительные обратносуместимые улучшения,🩹
patchверсии включают исправления ошибок и небольшие улучшения.
Проверяйте билеты чтобы лучше понимать и отлаживать возможные потоки подбора игроков во время разработки. Мы рекомендуем отключить inspect API для вашего рабочего matchmaker.
Некоторые развертывания могут приводить к ошибкам. Мы пытаемся решить это, автоматически повторяя развертывание до max_deployment_retry_count раз(а) без подтверждения клиента).
Чтобы неожиданные сбои клиента или брошенные билеты не оставались надолго и не занимали ресурсы вашего matchmaker, неподобранные билеты будут отменены после ticket_expiration_period в результате их статус изменится на CANCELLED и затем будут окончательно удалены после ticket_removal_period .
Основа нашей логики подбора игроков настраивается в Профили (очереди). Каждый профиль — это полностью изолированная очередь подбора игроков, указывающая на Приложения и версии с заранее заданным количеством необходимых ресурсов CPU и памяти (RAM).
Правила в начальном наборе правил должны быть выполнены, чтобы игроки были сгруппированы вместе; каждое определяется тремя свойствами:
имя на ваш выбор, например -
размер матча,тип правила, также известный как оператор, например -
player_count,и наконец атрибуты оператора, например
team_countилиmax_team_size.
Правило количества игроков
Это специальное правило, определяющее, сколько игроков должно совпасть, чтобы инициировать назначение:
team_countотносится к числу команд; 1 команда может использоваться для кооперативных режимов или режима каждый сам за себя,min_team_sizeотносится к минимальному числу игроков в команде.max_team_sizeотносится к максимальному числу игроков в команде.
Наш простой пример демонстрирует кооперативную игру с 2 игроками.
Правило количества игроков обязательно и может быть определено только один раз в правилах вашей начальной конфигурации.
Правило задержек
✅ Теперь вы можете перейти к следующему шагу.
3. Просмотр сведений об экземпляре
☑️ Просмотрите сведения о вашем новом matchmaker в панели управления после его инициализации:

Статус указывает на состояние сервиса и может быть ONLINE, OFFLINE или ERROR.
Идентификатор помогает сотрудникам Edgegap быстро найти ваш matchmaker, если вам понадобится помощь в устранении неполадок.
Запущено в может быть полезно для определения времени последнего обновления.
Размер соответствует одному из наших тарифных планов.
API URL будет использоваться игровыми клиентами и игровыми серверами для связи с вашим matchmaker.
Swagger URL — это удобный GUI спецификации openAPI, который мы предоставляем для изучения схемы API.
Auth Token — это уникальный секретный токен, используемый игровыми клиентами и игровым сервером для аутентификации.
Сотрудники Edgegap никогда не будут запрашивать ваши токены. Перегенерируйте токен, если подозреваете нарушение безопасности.
Чтобы протестировать ваш новый matchmaker, вам понадобятся Swagger URL, API URL и Auth Token.
✅ Теперь вы можете перейти к следующему шагу.
Чтобы обновить правила вашего matchmaker в процессе разработки, измените конфигурацию и перезапустите его.
См. ⏩ Пошаговые обновления для живых игр и обновлений без простоя.
4. Тестирование Tickets API
Пожалуйста, подождите до 5 минут после запуска вашего matchmaker, чтобы завершилась DNS-пропагация.
☑️ Сначала откройте ваш Swagger URL чтобы просмотреть схему openAPI в GUI swagger:

☑️ Нажмите на Authorize 🔒, вставьте ваш Auth Tokenи подтвердите, нажав Authorize.

☑️ Прокрутите вниз до Ticket API - POST /tickets, разверните и нажмите Try it out.

☑️ Предварительно просмотрите ваш запрос:
обратите внимание
player_ipустановлен вnull— это заставит Matchmaker использовать IP-адрес, автоматически добавленный в ваш запрос (см. Сервер к серверу для альтернатив),profileотносится к вашему Профили (очереди),attributesвключают значения для правил вашего matchmaker, в данном случае для правилаlatencies,rule
player_count— это единственное правило, которое не требует никаких атрибутов в билетах игроков.
☑️ Нажмите Execute и просмотрите ответ на запрос билета игрока:
id— это ваш уникальный ID билета подбора игроков; сохраните его, чтобы позже проверить билет,profileподтверждая выбор Профили (очереди),group_id— это уникальный ID группы, выдаваемый каждому билету; одиночный игрок представлен как группа из 1,team_id— это уникальный ID команды, выдаваемый каждому игроку после того, какTEAM_FOUNDдостигается статус,player_ip— это определенный публичный IP-адрес игрока, независимо от метода идентификации,assignmentустановлен вnullчтобы указать, что билет не был подобран или назначен на сервер,created_atсодержит информацию о том, когда билет игрока был создан, для использования в игровом UI,statusуказывает текущий статус билета; все билеты начинают вSEARCHING.

☑️ Создайте второй билет, нажав Execute снова, чтобы наши два игрока совпали и был запущен сервер.
☑️ Сверните POST /tickets и откройте GET /tickets/{ticketId}, затем нажмите Try it out.
☑️ Введите ID билета из ответа на предыдущем шаге и нажмите Execute.

☑️ Просмотрите обновленное назначение для вашего билета игрока:
статус изменился на
MATCH_FOUNDсначала, при этом сохраняяassignmentустановлен вnullчтобы показать, что игроки совпали и сервер назначается,

☑️ Нажмите Execute снова, чтобы проверить ваш билет, и просмотрите обновленное назначение для вашего билета:
статус изменился на
HOST_ASSIGNEDсassignmentсодержащим сведения о назначенном сервере.

Устранение неполадок и FAQ
Мой билет застрял в SEARCHING .
Пожалуйста, проверьте, что вы создали достаточное количество билетов с пересекающимися критериями, соответствующими вашей конфигурации.
Мой билет застрял, переключаясь между MATCH_FOUND и TEAM_FOUND повторно.
Учетные записи Free Tier ограничены 1 развертыванием одновременно. Рассмотрите возможность обновления тарифа или остановите текущее развертывание, чтобы запустить новое.
Мой билет сразу переходит в CANCELLED.
Срок действия вашего билета истек. Создайте новый билет или увеличьте период истечения в вашей конфигурации для тестирования.
Я получаю HTTP 404 Not Found при проверке моего билета.
Ваш билет был удален либо запросом DELETE, либо по достижении периода удаления (начинается после истечения срока действия билета и определяется в вашей конфигурации). Создайте новый билет или увеличьте периоды истечения/удаления в вашей конфигурации для тестирования.
☑️ Просмотрите ваше новое развертывание в нашей панели управления:
обратите внимание, что каждое развертывание помечено всеми ID билетов и профилем для дополнительной отслеживаемости.

☑️ Попробуйте подключиться из вашего игрового клиента к назначенному серверу.
Если у вас высокая задержка, возможно, ваша интеграция netcode настроена на имитацию сетевой задержки. Отключите VPN во время тестирования для более реалистичных условий и получите развертывание с низкой задержкой.
☑️ Когда вы убедитесь, что можете без проблем подключиться к вашему развертыванию и закончите тестирование, Остановите ваше развертывание чтобы освободить ресурсы в вашей учетной записи для следующей сборки.
✅ Теперь вы можете перейти к следующему шагу.
Найдите спецификацию openAPI для тестирования по адресу {matchmaker-url}/swagger/v1/swagger.json.
5. Интеграция игры
Matchmaker интегрируется с:
Игровым клиентом, чтобы управлять группами, участием, назначениями и билетами,
Выделенным сервером, чтобы Подробный обзор после того, как игрок уходит.
☑️ В Игровым клиентом, мы рекомендуем предоставлять игрокам обновления статуса билета с помощью внутриигрового интерфейса для наилучшего игрового опыта. См.:
☑️ В Игровым клиентом, убедитесь, что вы обрабатываете повторяемые 429 Too Many Requests ошибки с экспоненциальной задержкой и повторной попыткой, давая matchmaker время восстановиться во время резких всплесков трафика.
☑️ В Игровым клиентом, убедитесь, что вы обрабатываете неповторяемые ошибки:
404 Not Found— билет был удален,500 Internal Server Error— временный сбой сервиса.
☑️ В Игровой сервер, считывать предпочтения игроков и начальный контекст сервера:
Injected Variables (Matchmaker) чтобы получить начальные данные подбора игроков для игроков.
Injected Variables (App Versions) для параметров версии, настроек и секретов.
Injected Variables (Deployment) для информации о развертывании, IP, местоположении и т. д...
☑️ После подключения игроков, Игровой сервер и игровые клиенты запускают сцену загрузки — 3D-сцену, социальный UI в стиле лобби или экран загрузки с индикатором прогресса, чтобы показать, что инициализация продолжается.
☑️ Убедитесь, что ваше развертывание будет остановлено корректно после завершения матча.
🙌 Поздравляем, вы завершили интеграцию Matchmaking! Чтобы узнать больше, продолжайте читать.
🏁 Продвинутый пример
Полноценная конфигурация, использующая все функции подбора игроков, включая Профили (очереди), Правилаи Подробный обзор может выглядеть так:
🎾 Пользовательский лобби
Пользовательские лобби (приватные лобби, sandbox-уровни) — очень популярный вариант для игры на одном устройстве и тестирования новых функций в играх до того, как они попадут в основные игровые режимы. Обычно требуют наименьшего количества ограничений, но при этом нужно обеспечить, чтобы игроки могли Подробный обзор.
Для приватных лобби без публичного доступа установите "team_size": 1 и пусть владелец группы запускает игру в одиночку. Владелец может передать сведения о группе и назначенном хосте любому числу участников, чтобы они могли присоединиться.
Добавьте custom-lobby-example profile в ваш существующий matchmaker чтобы поддерживать пользовательские лобби.
🥛 Демонстрация Backfill
Опираясь на Подбор матчейэта конфигурация демонстрирует Backfill с Группы.
⚔️ Соревновательные игры
Соревновательные игры сосредоточены на том, чтобы игроки состязались друг с другом за победу, будь то как отдельные игроки (free for all) или как команды. Обеспечьте честные и сбалансированные матчи, подбирая игроков или команды со схожим уровнем навыков, и поддерживайте темп игры, быстро находя честных соперников.
Вы можете определить несколько команд по 1 или более игроков в каждой, например:
5v5 FPS
2
5
10
5v5 MOBA
2
5
10
20x3 Battle Royale
20
3
60
10p Free For All
1
10
10
Определите несколько Профили (очереди) для правил и настроек, специфичных для игрового режима, и расширяйте по мере необходимости.
Для всех матчей:
ограничьте задержку подбора игроков чтобы не подбирать игроков слишком далеко друг от друга,
Подробный обзор для заранее собранных групп и чтобы не превышать размеры команд,
постепенно ослабляйте ограничения по задержке со временем, чтобы находить больше игроков,
выделяйте больше CPU или памяти с помощью разных Приложения и версии для конкретных профилей,
Для казуальных матчей:
уберите ограничения по рангу, чтобы максимизировать скорость подбора и коэффициент заполнения матчей,
позвольте игрокам указывать предпочтения по карте, чтобы найти карту, подходящую для всех,
укажите размер группы backfill, чтобы заменять вышедших игроков, не превышая размеры команд,
снимите ограничения по задержке, чтобы гарантировать матч через 3 минуты (180 с) ожидания в очереди.
Для соревновательных матчей:
ограничьте ранг, чтобы допускать только соперников со схожим уровнем навыков,
используйте ранги повышения или понижения, чтобы подбирать игроков на крайних уровнях лиги.
Для топ-1% матчей высокого уровня (челленджеры):
используйте числовые рейтинги навыка (ELO), чтобы получить точный контроль над распределением навыков в матчах,
ждите дольше, прежде чем ослаблять требования к задержке, из-за меньшего количества игроков.
Использование нескольких профилей для разделения казуальных игровых режимов, соревновательных игровых режимов и игроков высшего уровня — челленджеров позволяет настраивать правила и расширения отдельно для каждого типа игроков.
🤝 Кооперативные игры
Кооперативные игры требуют, чтобы игроки работали вместе как команда для достижения общей цели или против ИИ-соперника. Сопоставляйте игроков со схожими предпочтениями и игровыми привычками. Заменяйте ушедших игроков и улучшайте Ping Beacons чтобы обеспечить отзывчивый игровой опыт.
При количестве команд 1 и максимальном размере команды 4, требуется до 4 игроков на матч.
Определите несколько Профили (очереди) для правил и настроек, специфичных для игрового режима:
начинайте минимум с 4 игроков, чтобы удерживать игроков в очереди и максимизировать коэффициент заполнения матча,
ограничьте задержку подбора игроков чтобы не подбирать игроков слишком далеко друг от друга,
позвольте игрокам выбирать определенную сложность игры, подходящую для уровня навыков каждого,
позвольте игрокам указывать предпочтения по карте, чтобы найти карту, подходящую для всех,
ограничьте разницу в уровнях игроков, чтобы требовать схожий уровень прогресса в игре,
укажите размер группы backfill, чтобы заменять вышедших игроков, не превышая емкость сервера,
используйте флаги модерации, чтобы отделять игроков с низкой кармой и читеров от общей аудитории,
Подробный обзор для заранее собранных групп и чтобы заполнять команды, не превышая емкость сервера,
выделяйте больше CPU или памяти, используя разные Приложения и версии для других профилей.
Начните с идеальных условий и расширяйте ограничения чтобы обеспечить быстрые матчи:
ослабляйте ограничения по задержке со временем, чтобы находить больше игроков,
увеличивайте допустимую разницу в уровнях игроков, чтобы находить больше игроков,
уменьшайте минимальный размер команды, чтобы требовалось меньше игроков и игра начиналась раньше,
сервер может заполнять пустые слоты ИИ-напарниками,
или Подробный обзор чтобы добавить игроков позже,
установите минимальный размер команды 1, чтобы запускать игру в одиночку после 150 с ожидания в очереди
🎈 Социальные игры
Социальные игры сосредоточены на построении связей и отношений между игроками через сотрудничество, общение и общий опыт. Поддерживайте большое количество игроков, максимизируйте коэффициент заполнения матча и учитывайте предпочтения и игровые привычки игроков. Заменяйте ушедших игроков и обеспечьте высокое Ping Beacons чтобы обеспечить отзывчивый игровой опыт.
При количестве команд 1 (free for all) и максимальном размере команды 50, требуется до 50 игроков на матч.
Определите Профили (очереди) для правил и настроек, специфичных для игрового режима:
ограничьте задержку подбора игроков чтобы не подбирать игроков слишком далеко друг от друга,
позвольте игрокам указывать предпочтения по режиму игры и находить режим, подходящий для всех,
укажите размер группы backfill, чтобы заменять вышедших игроков, не превышая емкость сервера,
используйте флаги модерации, чтобы отделять игроков с низкой кармой и читеров от общей аудитории,
Подробный обзор для заранее собранных лобби или чтобы заполнять команды, не превышая емкость сервера,
выделяйте больше CPU или памяти, используя разные Приложения и версии для других профилей.
Начните с идеальных условий и расширяйте ограничения чтобы обеспечить быстрые матчи:
ослабляйте ограничения по задержке со временем, чтобы находить больше игроков,
постепенно уменьшайте минимальный размер команды, чтобы требовалось меньше игроков и игра начиналась раньше,
сервер может заполнять пустые слоты ИИ-игроками,
или Подробный обзор чтобы добавить игроков позже,
установите минимальный размер команды 1, чтобы запускать игру в одиночку после 150 с ожидания в очереди.
Последнее обновление
Это было полезно?

