plugИнтеграция игры

Зачем мне нужен подборщик матчей (Matchmaker) и/или Лобби?

Служба лобби (Управляемые кластеры) играет решающую роль в онлайн-многопользовательских играх по различным техническим причинам.

Управление игроками

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

Бэкенд

Вы не хотите, чтобы ваш игрок напрямую связывался с вашим бэкендом, и вы хотите предоставить централизованную точку доступа. Представьте, что у вас есть API-токен, который запускает виртуальную машину у определённого провайдера — вы не хотите, чтобы токен был захардкожен в клиенте игры и доступен любому игроку!

Безопасность

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

Управление игровыми сессиями

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

Вам не нужно это прямо сейчас! (Режим разработки)

На этапе разработки вам может не понадобиться полнофункциональная система лобби или подборщика матчей по нескольким техническим причинам:

Упрощённая тестовая среда

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

Быстрая итерация

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

Распределение ресурсов

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

Проблемы масштабируемости

На ранних этапах разработки у вас, вероятно, не будет большого числа игроков для управления. В результате может быть достаточно базовой системы для подключения игроков или даже ручных подключений для целей тестирования. Однако по мере роста вашей игры и привлечения большего числа игроков система лобби или подборщик матчей станет всё более необходимой для управления подключениями игроков и обеспечения плавного игрового процесса.

Крайне важно спроектировать архитектуру игры с учётом возможности интеграции системы лобби или подборщика матчей в будущем. Такой дальновидный подход облегчит интеграцию этих компонентов, когда вы будете готовы тестировать игру с более крупной группой игроков, обеспечив более плавный переход и более отполированный конечный продукт.

Взаимодействие с API Edgegap

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

Для взаимодействия с API вам потребуется указать токен в заголовке авторизации в ваших запросах.

circle-info

Вы можете получить токен, зарегистрировав аккаунт и создав профиль реле. Зарегистрируйтесь здесьarrow-up-right

Обратите внимание, что вам нужен токен, предназначенный исключительно для реле. Если у вас уже есть стандартный API-токен, он не подойдёт.

Этот параметр доступен в боковой панели на панели управления.

После получения токена включите его в заголовки запросов для всех вызовов API. Не забудьте добавить префикс к вашему API-ключу token.

circle-check

Создание сессии реле

Чтобы использовать распределённое реле, вам нужно создать сессию реле. Это делается путём отправки POST запроса на /v1/relays/sessions эндпоинт с JSON-пayload. Сессии могут создаваться вручную, с помощью подборщика матчей, через лобби или через вашу собственную пользовательскую службу.

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

circle-info

Этот шаг не подключит ваших игроков непосредственно к реле; это нужно будет сделать на более позднем этапе процесса. Этот шаг только предоставляет вам реле, с которым следует установить соединение.

Пример запроса:

В теле должен содержаться массив объектов пользователей, где каждый объект содержит IP-адрес пользователя. Вы также можете включить webhook_url, который представляет собой URL, который будет получать уведомления, связанные с сессией.

Пример полезной нагрузки:

circle-info

Где "users" — массив объектов пользователей, содержащих "ip" каждого пользователя в сессии, и "webhook_url" — это необязательный URL для получения обновлений о сессии.

После отправки POST запроса вы получите JSON-ответ, содержащий session_id, который потребуется для последующего получения информации о сессии.

Пример ответа:

Получение информации о сессии реле

Для получения информации о сессии отправьте GET запроса на /v1/relays/sessions/{session_id} эндпоинт с session_id полученным из POST запроса.

Пример запроса:

Ответ будет содержать информацию о сессии, включая статус сессии, информацию о пользователях и сведения о реле.

Ожидаемый ответ будет содержать информацию о сессии, примерно такой:

Получение авторизации к ближайшему реле может занять небольшое время, поэтому когда поле ready будет true вы можете извлечь JSON-данные для использования.

Подробнее здесь

circle-check

Завершение сессии реле

Когда вы решите прекратить подключение к реле, вы можете легко завершить сессию реле. Вам нужно отправить DELETE запрос на следующий эндпоинт:

circle-info

Замените {session_id} на фактический идентификатор сессии, которую вы хотите завершить.

Ответ со статусом 204 No Content означает, что сессия успешно удалена. Игроки потеряют доступ к реле, и вам больше не будут начисляться расходы за эту сессию.

circle-exclamation

Пример на C#

Это пример на C#, который ваше Лобби или Подборщик матчей мог бы выполнить для создания сессии реле и извлечения данных, которые вам нужно вернуть клиенту игры.

circle-info

Этот пример использует C# версии > 7.0

Вам нужно будет вернуть эту информацию соответствующему игроку.

Игрок, выступающий в роли сервера, будет нуждаться в RelayServerPort а все остальные будут нуждаться в RelayClientPort

Взаимодействие с API (cURL или POSTMAN)

Во время разработки вашей игры вам потребуется взаимодействовать с API для создания, управления и удаления сессий реле. Вы можете использовать инструменты, такие как cURL или POSTMAN, чтобы отправлять HTTP-запросы к API.

cURL — это инструмент командной строки, который позволяет выполнять HTTP-запросы и взаимодействовать с API прямо из терминала. POSTMAN — популярное GUI-приложение, которое упрощает тестирование API, предоставляя удобный интерфейс для создания, отправки и анализа HTTP-запросов.

Вот пример того, как создать сессию реле с помощью cURL:

circle-info

Не забудьте заменить API_TOKEN на ваш реальный relay API-токен.

API вернёт вам ответ, содержащий данные. Вам потребуется распарсить этот ответ и извлечь необходимые данные.

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

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