Поиск по сайту:

Как начать работу с AWS GameLift


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

Что такое GameLift?

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

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

GameLift имеет SDK и плагины для Unity и Unreal. Вы можете использовать это для прямого общения с GameLift, ставить игроков в очереди или запрашивать новые сеансы прямо из игры.

GameLift имеет два типа серверов: «серверы реального времени» и «пользовательские» игровые серверы. Серверы реального времени предназначены для игр, которым не нужны сложные настраиваемые серверы с безголовой копией игрового движка. Подумайте о мобильных играх, которым действительно нужна только база данных и некоторая базовая логика. Вы программируете их с помощью сценария реального времени, основанного на C#.

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

Альтернативы GameLift

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

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

Тем не менее, EC2 Auto-Scaling, вероятно, является вашей лучшей альтернативой GameLift на платформе AWS. Если вы знаете базовое количество игроков, которых вам нужно поддерживать, вы можете купить зарезервированные инстансы намного дешевле, чем инстансы по запросу, а затем использовать инстансы по запросу для масштабирования в часы пик.

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

Создание и загрузка сборки

Первым шагом использования GameLift является сборка. Вы должны упаковать свой сервер в единую сборку, которую можно загрузить в AWS и запустить на нескольких серверах. Сборка включает ваши двоичные файлы, зависимости и сценарий установки. Он может работать в Windows или Linux; как правило, Linux будет дешевле, так как меньше накладных расходов на память и нет затрат на лицензирование. Однако многие игры не созданы для Linux, поэтому вы можете застрять на Windows. Сценарий установки представляет собой файл в корневом каталоге сборки вашего игрового сервера с именем install.bat или install.sh, в зависимости от платформы. Сам сервер будет установлен в C:game или /local/game/.

Загружать сборки можно только из интерфейса командной строки AWS. Для этого используйте команду gamelift upload-build:

aws gamelift upload-build --name <your build name> --build-version <your build number> --build-root <local build path> --operating-system WINDOWS_2012 --region us-east-1

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

Дайте вашему образцу имя сборки и нажмите «Загрузить». Чтобы использовать его, вам нужно будет создать «Флот», который использует эту сборку. Флоты похожи на группы автоматического масштабирования — они настроены для запуска вашего игрового сервера и проведения сеансов на отдельных экземплярах. Вы можете создать новый парк, нажав на сборку и выбрав «Создать парк из сборки», или вы можете создать образец флота из пошагового руководства, нажав «Создать флот». И флот, и сборка теперь появятся в вашей консоли, хотя создание и проверка флота, скорее всего, займет около получаса.

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

Вы также можете изменить настройки флота. Вы найдете варианты использования спотовых инстансов, изменения типа инстанса и указания запускаемого исполняемого файла (и параметров, с которыми он запускается).

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

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

Что касается фактического использования вашего флота, вам нужно создать «Очередь», которая будет сортировать игроков по матчам в зависимости от задержки. Вы можете указать правила, чтобы попытаться найти совпадения с низкой задержкой, прежде чем пытаться найти совпадения с более высокой задержкой, и выбрать группу, к которой вы хотите направить пользователей.

Чтобы обеспечить хороший поиск партнеров для всех, вам понадобятся серверы по всему миру. Цены на AWS в других регионах могут быть высокими, но если вы выберете несколько дешевых, вы сможете сократить свои расходы.