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

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

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

☑️ Нажмите Авторизоваться 🔒, вставьте ваш Токен аутентификациии подтвердите, нажав Авторизоваться.

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

☑️ Предпросмотрите ваш запрос:
обратите внимание на
player_ipустановленное вnull- это заставит Matchmaker использовать IP-адрес, автоматически добавленный к вашему запросу (см. Сервер-сервер для альтернатив),profileотносится к вашему Профили (очереди),attributesвключите значения для правил вашего matchmaker, в данном случае дляправила задержек (latencies)правило,— это единственное правило, которое не требует атрибутов в билетах игроков.
player_count☑️ Нажмите
Выполнить и просмотрите ответ на запрос вашего билета игрока: id
— это уникальный идентификатор билета матчмейкинга, сохраните его, чтобы позже проверить ваш билет,подтверждая выборprofilegroup_id Профили (очереди),— это уникальныйидентификатор группы, выдаваемый каждому билету; одиночный игрок представлен как группа из 1 человека team_id,— это уникальный идентификатор команды, выдаваемый каждому игроку после того, какTEAM_FOUNDстатус достигнут,каждая команда может содержать несколько групп, не превышая сконфигурированный размер командыplayer_ipassignmentустановлен вчтобы указать, что билет не был сопоставлен или назначен на сервер,nullcreated_atдает информацию о том, когда билет игрока был создан для использования в игровом интерфейсе,statusуказывает текущий статус билета; все билеты начинаются вПОИСКЕSEARCHING.

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

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

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

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

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

