mergeПодбор игроков

Быстро начните работу с подбором игроков и изучите примеры сценариев для разных жанров.

Следуйте этому видео, чтобы начать работу с нашим сервисом Matchmaker:

✔️ Подготовка

Архитектура подбора игроков

В этом руководстве мы сосредоточимся на API подбора игроков и API Backfill.

При подборе игроков есть четыре (4) важных потока данных:

  1. API подбора игроков используется игровыми клиентами для взаимодействия с Matchmaker:

    1. для управления группами, назначения серверов и мониторинга,

    2. для измерения пинга с помощью Пинг-маяки.

  2. Развертывания API используется для развертывания, масштабирования и управления вашими выделенными серверами через Matchmaker.

  3. Сетевые транспорты Netcode используются для связи между игровыми клиентами и выделенными серверами.

  4. Подробный обзор чтобы заменить или добавить игроков на работающем сервере.

circle-info

После релиза, ваш matchmaker должен работать 24/7 чтобы игроки со всего мира могли подключаться к серверам.

🍀 Простой пример

Начните с простого примера и проверьте базовый поток подбора игроков:

1. Настройка на бесплатном тарифе

☑️ Зарегистрируйте бесплатную учетную запись Edgegaparrow-up-right и откройте страницу панели управления Matchmakerarrow-up-right.

☑️ Нажмите на Create Matchmaker сначала, затем введите:

  • имя matchmaker — для вашего удобства, например quickstart-dev ,

  • загрузите нашу JSON-конфигурацию Simple Example.

🍀 Простой пример (минимальная рекомендуемая конфигурация):

triangle-exclamation

Устранение неполадок и 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 игроков.

circle-exclamation

Правило задержек

✅ Теперь вы можете перейти к следующему шагу.

3. Просмотр сведений об экземпляре

☑️ Просмотрите сведения о вашем новом matchmaker в нашей панели управления после его инициализации:

  • Статус указывает на состояние сервиса и может быть ONLINE, OFFLINE или ERROR.

  • Идентификатор помогает сотрудникам Edgegap быстро найти ваш matchmaker, если вам понадобится помощь с устранением неполадок.

  • Запущен в может быть полезно для отслеживания времени последнего обновления.

  • Размер соответствует одному из наших тарифных плановarrow-up-right.

  • URL API будет использоваться игровыми клиентами и игровыми серверами для связи с вашим matchmaker.

  • URL Swagger — это удобный GUI спецификации openAPI, который мы предоставляем для изучения схемы API.

  • Токен авторизации — это уникальный секретный токен, используемый игровыми клиентами и игровым сервером для аутентификации.

triangle-exclamation

Чтобы протестировать ваш новый matchmaker, вам понадобятся URL Swagger, URL API и токен авторизации.

✅ Теперь вы можете перейти к следующему шагу.

circle-info

Чтобы обновить правила вашего matchmaker в процессе разработки, отредактируйте конфигурацию и перезапустите его.

circle-check

4. Тестирование API тикетов

circle-info

Пожалуйста, подождите до 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 и просмотрите ответ на ваш запрос тикета игрока:

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

☑️ Сверните POST /tickets и откройте GET /tickets/{ticketId}, затем нажмите Try it out.

☑️ Введите ID тикета из ответа на предыдущем шаге и нажмите Execute.

☑️ Просмотрите обновленное назначение для вашего тикета игрока:

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

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

  • статус изменился на HOST_ASSIGNED на назначение содержащий сведения о назначенном сервере.

chevron-rightУстранение неполадок и FAQhashtag

Мой тикет застрял в SEARCHING .

  • Пожалуйста, проверьте, что вы создали достаточное количество тикетов с пересекающимися критериями, соответствующими вашей конфигурации.


Мой тикет застрял, переключаясь между MATCH_FOUND и TEAM_FOUND повторно.

  • Учетные записи бесплатного тарифа ограничены 1 развертыванием одновременно. Рассмотрите возможность обновления тарифа или остановите текущее развертывание, чтобы запустить новое.


Мой тикет сразу переходит в CANCELLED.

  • Срок действия вашего тикета истек. Создайте новый тикет или увеличьте период истечения в вашей конфигурации для тестирования.


При проверке моего тикета я получаю HTTP 404 Not Found.

  • Ваш тикет был удалён либо запросом DELETE, либо по достижении периода удаления (начинается после истечения тикета, определяется в вашей конфигурации). Создайте тикет заново или увеличьте периоды истечения/удаления в вашей конфигурации для тестирования.

☑️ Проверьте ваше новое развертывание в нашей панели управленияarrow-up-right:

  • обратите внимание, что каждое развертывание помечено всеми ID тикетов и профилем для лучшей трассируемости.

☑️ Попробуйте подключиться из вашего игрового клиента к назначенному серверу.

circle-exclamation

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

✅ Теперь вы можете перейти к следующему шагу.

circle-info

Найдите спецификацию openAPI для тестирования по адресу {matchmaker-url}/swagger/v1/swagger.json.

5. Интеграция игры

Matchmaker интегрируется с:

☑️ В Игровой клиент, мы рекомендуем предоставлять игрокам обновления статуса тикета через внутриигровой интерфейс для наилучшего опыта. См.:

☑️ В Игровой клиент, убедитесь, что вы обрабатываете повторяемые 429 Слишком много запросов ошибки с экспоненциальной задержкой и повторными попытками, давая matchmaker время на восстановление во время резких всплесков трафика.

☑️ В Игровой клиент, убедитесь, что вы обрабатываете неповторяемые ошибки:

  • 404 Not Found - тикет был удален,

  • 500 Internal Server Error - временный сбой сервиса.

☑️ В Игровой сервер, читайте предпочтения игроков и начальный контекст сервера:

  1. Внедренные переменные (Matchmaker) для получения начальных данных подбора игроков.

  2. Внедренные переменные (версии приложения) для параметров версии, настроек и секретов.

  3. Внедренные переменные (развертывание) для информации о развертывании, IP, местоположении и т. д...

☑️ После подключения игроков, игровой сервер и игровые клиенты запускают сцену загрузки — 3D-сцену, социальный UI в стиле лобби или экран загрузки с индикатором прогресса, чтобы показать, что инициализация продолжается.

☑️ Убедитесь, что ваше развертывание будет остановленоarrow-up-right корректно после завершения матча.

🙌 Поздравляем, вы завершили интеграцию подбора игроков! Чтобы узнать больше, продолжайте чтение.

🏁 Расширенный пример

Полноценная конфигурация, использующая все возможности подбора игроков, включая Профили (очереди), Правила, а Подробный обзор может выглядеть так:

🎾 Пользовательское лобби

Пользовательские лобби (частные лобби, sandbox-уровни) — очень популярный вариант для локального мультиплеера и тестирования новых функций в играх до их попадания в основные игровые режимы. Обычно требуют наименьшего числа ограничений, но при этом следует обеспечить, чтобы игроки могли Подробный обзор.

circle-info

Для частных лобби без публичного доступа установите "team_size": 1 и заставьте владельца группы начать игру в одиночку. Владелец может поделиться сведениями о группе и назначении хоста с любым числом участников, чтобы они присоединились.

circle-check

🥛 Демонстрация 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) для точного контроля распределения уровня игры в матчах,

    • ждите дольше перед ослаблением требований к задержке из-за меньшего числа игроков.

circle-check

🤝 Кооперативные игры

Кооперативные игры требуют, чтобы игроки работали вместе в команде ради общей цели или против ИИ-соперника. Подбирайте игроков с похожими предпочтениями и игровыми привычками. Заменяйте ушедших игроков и улучшайте Пинг-маяки чтобы обеспечить отзывчивый игровой опыт.

При количестве команд 1 и максимальном размере команды 4, требуется до 4 игроков на матч.

Определите несколько Профили (очереди) для правил и настроек, специфичных для игрового режима:

  • начинайте минимум с 4 игроков, чтобы удерживать их в очереди и максимизировать коэффициент заполнения матчей,

  • ограничьте задержку подбора игроков чтобы не подбирать игроков, находящихся далеко,

  • позвольте игрокам выбирать определенный уровень сложности игры, чтобы он подходил уровню навыков всех,

  • позвольте игрокам указывать предпочтения по карте, чтобы найти карту, подходящую всем,

  • ограничьте разницу в уровнях игроков, чтобы требовать схожий уровень прохождения игры,

  • укажите размер группы для backfill, чтобы заменять вышедших игроков без превышения вместимости сервера,

  • используйте флаги модерации, чтобы отделять игроков с низкой кармой и читеров от общей массы,

  • Подробный обзор для заранее собранных групп и чтобы заполнить команды без превышения вместимости сервера,

  • выделяйте больше CPU или памяти, используя разные Приложения и версии для других профилей.

Начните с идеальных условий и расширяйте ограничения чтобы обеспечить быстрый подбор:

  • постепенно ослабляйте ограничения по задержке, чтобы найти больше игроков,

  • увеличивайте допустимую разницу в уровне игроков, чтобы найти больше игроков,

  • уменьшайте минимальный размер команды, чтобы требовать меньше игроков и начинать игру раньше,

    • сервер может заполнять пустые места AI-товарищами по команде,

    • или Подробный обзор чтобы позже добавить игроков,

  • установите минимальный размер команды в 1, чтобы запустить игру в одиночку после 150 с ожидания в очереди

🎈 Социальные игры

Социальные игры сосредоточены на создании связей и отношений между игроками через сотрудничество, общение и совместный опыт. Поддерживайте большое количество игроков, максимизируйте коэффициент заполнения матчей и учитывайте предпочтения и игровые привычки игроков. Заменяйте ушедших игроков и обеспечивайте высокий Пинг-маяки чтобы обеспечить отзывчивый игровой опыт.

При количестве команд 1 (каждый сам за себя) и максимальном размере команды 50, требуется до 50 игроков на матч.

Определите Профили (очереди) для правил и настроек, специфичных для игрового режима:

  • ограничьте задержку подбора игроков чтобы не подбирать игроков, находящихся далеко,

  • позвольте игрокам указывать предпочтения по игровому режиму и находить режим, подходящий всем,

  • укажите размер группы для backfill, чтобы заменять вышедших игроков без превышения вместимости сервера,

  • используйте флаги модерации, чтобы отделять игроков с низкой кармой и читеров от общей массы,

  • Подробный обзор для заранее собранных лобби или чтобы заполнить команды без превышения вместимости сервера,

  • выделяйте больше CPU или памяти, используя разные Приложения и версии для других профилей.

Начните с идеальных условий и расширяйте ограничения чтобы обеспечить быстрый подбор:

  • постепенно ослабляйте ограничения по задержке, чтобы найти больше игроков,

  • медленно уменьшайте минимальный размер команды, чтобы требовать меньше игроков и начинать игру раньше,

    • сервер может заполнять пустые места AI-игроками,

    • или Подробный обзор чтобы позже добавить игроков,

  • установите минимальный размер команды в 1, чтобы запустить игру в одиночку после 150 с ожидания в очереди.

Последнее обновление

Это было полезно?