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

При подборе игроков есть четыре (4) важных потока данных:
API подбора игроков используется игровыми клиентами для взаимодействия с Matchmaker:
для управления группами, назначения серверов и мониторинга,
для измерения пинга с помощью Пинг-маяки.
Развертывания API используется для развертывания, масштабирования и управления вашими выделенными серверами через Matchmaker.
Сетевые транспорты Netcode используются для связи между игровыми клиентами и выделенными серверами.
Подробный обзор чтобы заменить или добавить игроков на работающем сервере.
После релиза, ваш matchmaker должен работать 24/7 чтобы игроки со всего мира могли подключаться к серверам.
🍀 Простой пример
Начните с простого примера и проверьте базовый поток подбора игроков:
создание экземпляра matchmaker в общем Подробный обзор,
определение правил и настроек в вашем matchmaker Подробный обзор,
тестирование потока игроков и управление тикетами с помощью 📗 API.
1. Настройка на бесплатном тарифе
☑️ Зарегистрируйте бесплатную учетную запись Edgegap и откройте страницу панели управления Matchmaker.
☑️ Нажмите на Create Matchmaker сначала, затем введите:
имя matchmaker — для вашего удобства, например
quickstart-dev,загрузите нашу JSON-конфигурацию Simple Example.
🍀 Простой пример (минимальная рекомендуемая конфигурация):
Обязательно измените имя и версию чтобы они соответствовали вашему Приложения и версии.
Устранение неполадок и FAQ:
☑️ Если ошибок проверки не появляется, нажмите Create and Start и дождитесь завершения процесса. Это приведет к запуску нового бесплатного кластера с вашим matchmaker Simple Example.
✅ Теперь вы можете перейти к следующему шагу.
2. Изучение конфигурации
По мере выпуска обновлений Matchmaker каждая новая версия использует семантическое версионирование чтобы наглядно сообщать о влиянии изменений через формат major.minor.patch:
🔥
majorверсии включают несовместимые изменения и требуют проверки интеграции,🌟
minorверсии включают существенные обратнос совместимые улучшения,🩹
patchверсии включают исправления ошибок и небольшие улучшения.
Просмотр тикетов чтобы лучше понимать и отлаживать возможные потоки подбора игроков в процессе разработки. Мы рекомендуем отключить inspect API для вашего live 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 команда может использоваться для кооперативных режимов или режимов free-for-all,min_team_sizeотносится к минимальному числу игроков в команде.max_team_sizeотносится к максимальному числу игроков в команде.
Наш простой пример демонстрирует кооперативную игру на 2 игроков.
Правило количества игроков обязательно и может быть определено только один раз в ваших правилах начальной конфигурации.
Правило задержек
✅ Теперь вы можете перейти к следующему шагу.
3. Просмотр сведений об экземпляре
☑️ Просмотрите сведения о вашем новом matchmaker в нашей панели управления после его инициализации:

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

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

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

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

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

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

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

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

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

