Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Microsoft Разработка приложений Облако/Azure Используйте Windows Azure в современных играх RSS

Используйте Windows Azure в современных играх

Текущий рейтинг: 1 (проголосовало 1)
 Посетителей: 681 | Просмотров: 762 (сегодня 0)  Шрифт: - +

Онлайновые и мобильные игры, а также игры в социальных сетях быстро завоевали популярность во всем мире; цифры, относящиеся к числу одновременно играющих, количеству проведенного за такими играми времени и числу скачиваний соответствующий приложений просто поражают. Совсем недавно Facebook сообщил, что треть его глобальных пользователей (260 миллионов из 750) активно играют в игры на сайтах как с ПК, так и с мобильных устройств. Это лишь один из индикаторов тех задач, которые появились перед разработчиками игр и их издателями: пользователи играют на множестве платформ и устройств, игроки ожидают получения мгновенных уведомлений об изменении своего статуса в игре, игры быстро набирают популярность за счет видеороликов, снимаемых игроками, и находят свои аудитории в самых разных частях мира.

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

На рис. 1 показана типичная архитектура поддержки многопользовательских игр для мобильных клиентов в облаке либо для игр в реальном времени, либо для игр с поочередными ходами. Наиболее распространенным задачам, решение которых необходимо для создания игровой серверной инфраструктуры, назначаются разные компоненты, что вводит концепцию координатора (orchestrator) или прокси, который действует как шлюз или контроллер трафика для всех взаимодействий клиентов с несколькими сервисами.

*
Рис. 1. Программная архитектура, поддерживающая многопользовательские игры реального времени для мобильных клиентов

Authentication (Access Control Service)Аутентификация (Access Control Service)
Notification (Notification Hubs)Уведомление (Notification Hubs)
Other Services (Commerce, SMTP)Другие сервисы (Commerce, SMTP)
Mobile DevicesМобильные устройства
Gaming Orchestrator/Proxy (PaaS Cloud Services)Игровой координатор/прокси (PaaS Cloud Services)
Game Data (Windows Azure Storage)Игровые данные (Windows Azure Storage)
Multiplayer Game Servers (IaaS Virtual Machines)Серверы многопользовательских игр (IaaS Virtual Machines)
Logs/Analytics (HDInsight)Журналы/аналитика (HDInsight)


В следующих разделах мы подробнее рассмотрим каждый из этих компонентов.

Серверы многопользовательских игр (Infrastructure as a Service Virtual Machines)

Серверы многопользовательских игр обычно основаны на инфраструктурах с открытым исходным кодом или лицензируемым кодом, действуя в качестве авторитетного источника событий для подключенных к ним клиентов и предоставляя информацию о других игроках, которые подключились к тому же серверу через вызовы с малыми задержками. Эти инфраструктуры требуют сохранения состояний при взаимодействии с клиентами, а также доступа к локальному хранилищу, что делает виртуальные машины (VM) в Windows Azure идеальным выбором для этого компонента. Вот некоторые примеры таких инфраструктур игровых серверов: pomelo (bit.ly/1i9heBe), Marauroa (bit.ly/am9MOi) и Photon Server (exitgames.com).

Чтобы развернуть какую-либо из этих инфраструктур в VM, вы можете создать экземпляры из галереи образов Windows Azure на портале управления (bit.ly/197eXED) или напрямую создать собственные VM-образы как файлы VHD (Hyper-V) (bit.ly/PQso1a).

Учтите, что реализация игрового сервера может превратиться в сложный процесс, где от вас потребуется искать решения для компенсации сетевых задержек и для должного применения коммуникационных протоколов (например, TCP или UDP), чтобы оптимизировать взаимодействие с клиентами.

Игровой координатор или прокси (Platform as a Service Cloud Services)

Центральное место в решении занимает игровой координатор (gaming orchestrator) или прокси, который предоставляет множество сервисов, в том числе следующие.

  1. Аутентификация Проверка удостоверений, посылаемых клиентами до того, как игроки смогут подключиться к игровым серверам.
  2. Подбор контактов (matchmaking) Назначение игроков со схожими предпочтениями одному игровому серверу. Решение также может зависеть от местонахождения для минимизации сетевых задержек.
  3. Прокси данных Обслуживание внутриигровых запросов от игровых серверов или клиентов, взаимодействие с внешним хранилищем и возврат таких данных, как история выигрышей и проигрышей, информация о профиле, предпочтения или кредитовый баланс.
  4. Подготовка Увеличение или уменьшение количества VM с применением горизонтального масштабирования на основе числа подключенных игроков.
  5. Уведомления Взаимодействие с сервисом уведомлений для информирования игроков о статусе игры, когда они находятся в автономном режиме. Этот сервис должен поддерживать несколько платформ (Windows, Android, iOS) и типов устройств.
  6. Делегирование Координация взаимодействия с внешними сервисами, в том числе отправка сообщений по электронной почте, обработка платежей, протоколирование информации по играм и многое другое.

Windows Azure Cloud Services — отличный кандидат на роль игрового координатора, который должен уметь обрабатывать запросы без состояния, а также легко масштабироваться по горизонтали в зависимости от количества клиентских запросов и запросов игровых серверов. Более того, Cloud Services благодаря преимуществам частных сетей, предлагаемым Windows Azure, может напрямую взаимодействовать с игровыми серверами, размещенными в VM, добавляя дополнительный уровень безопасности в архитектуру; Cloud Services не требуется использовать внешние конечные точки. Cloud Services можно создавать и развертывать из разных IDE, в том числе из Visual Studio при .NET-разработке или Eclipse при разработке для Java. Подробнее о создании Cloud Services см. по ссылке bit.ly/19MYq5A. Если вы хотите соединить VM и Cloud Services с помощью частных сетей, вам поможет учебное пособие по ссылке bit.ly/GYcG5t.

Только что рассмотренные обязанности могут обрабатываться одним кластером веб- или рабочих ролей либо распределяться среди множества Cloud Services в зависимости от количества одновременно обращающихся пользователей и сложности онлайновой игры. Одно из преимуществ Windows Azure — несколько моделей развертывания, включая Infrastructure as a Service (IaaS) и Platform as a Service (PaaS). Основным фактором, влияющим на выбор, является количество программных уровней, делегируемых провайдеру облака, в данном случае — Microsoft. Подробнее о выборе нужной модели развертывания и выполнения см. по ссылке bit.ly/153kRXM.

Теперь мы посмотрим, как координатор может выполнять эти обязанности, используя другие компоненты платформы Windows Azure.

Аутентификация (Windows Azure Active Directory Access Control Service)

Первый шаг, предпринимаемый мобильным клиентом для доступа к многопользовательской платформе, — попытка аутентификации на сервере по набору удостоверений. В мире современных игр важно поддерживать проверки от нескольких провайдеров идентификации, учитывая, что у пользователей разные предпочтения в отношении онлайновой защиты. Некоторым комфортнее использовать удостоверения социальных сетей, таких как Facebook, Yahoo! или Twitter. Другие могут предпочесть аутентификацию, предоставляемую самой игрой на основе какой-либо инфраструктуры вроде Active Directory.

Windows Azure Access Control Service (ACS) предлагает простой способ выполнения этой аутентификации. Он поддерживает интеграцию с Windows Identity Foundation, обеспечивает изначальную совместимость с Windows Live ID (учетная запись Microsoft), Google, Yahoo! и Facebook, поддерживает сценарии на основе протоколов OAuth 2.0, WS-Trust и WS-Federation, а также распознает форматы маркеров JSON Web Token (JWT), SAML 1.1, SAML 2.0 и Simple Web Token (SWT).

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

*
Увеличить

Рис. 2. Процесс аутентификации с применением Windows Azure Access Control Service

ClientКлиент
Identity ProviderПровайдер идентификации
ACSACS
Relying PartyДоверяющая сторона
1. Request Resource1. Запрос ресурса
2. Redirect to Identity Provider2. Перенаправление провайдеру идентификации
3. Log In3. Вход
4. Authenticate and Issue Token4. Аутентификация и выдача маркера
5. Redirect to ACS5. Перенаправление в ACS
6. Send Token to ACS6. Передача маркера в ACS
7. Validate Token, Run Rules Engine and Issue Token7. Проверка маркера, запуск механизма правил и выдача маркера
8. Redirect to Relying Party with ACS Token8. Перенаправление доверяющей стороне с ACS-маркером
9. Send ACS Token to Relying Party9. Передача ACS-маркера доверяющей стороне
10. Validate ACS Token10. Проверка ACS-маркера
11. Return Resource Representation11. Возврат представления ресурса

Подбор контактов

В многопользовательских видеоиграх процесс назначения игроков подходящему игровому серверу, основанный на их предпочтениях или местоположении, называют подбором контактов (matchmaking). Как только игровой клиент аутентифицирован, игровой прокси возвращает на основе его IP-адреса список игровых серверов, подходящих под предпочтения игрока, а также дополнительные удостоверения защиты в том случае, если они требуются самому игровому серверу. Логика этого назначения обычно базируется на списке рекомендованных серверов в каждом информационном центре, который хранится в той или иной форме кеша. Причина, по которой для этого рекомендуется кеширование, — производительность: предотвращение полных циклов обмена данными с основным хранилищем значительно повышает степень комфорта для игрока. Windows Azure предлагает новый сервис кеширования (в настоящее время он находится в стадии предварительной версии), к которому могут обращаться множество сервисов и клиентов. Этот новый сервис является распределенным масштабируемым кешем в памяти, который позволяет создавать приложения с высокой скоростью отклика, обеспечивая сверхскоростной доступ к данным. С помощью соответствующего SDK к нему крайне легко обращаться из .NET-приложений. Подробные инструкции см. по ссылке bit.ly/15IltBt. Процесс подбора контактов вернет IP-адрес подходящего игрового сервера, к которому должен подключиться игровой клиент.

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

Прокси данных (Windows Azure Storage)

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

Windows Azure предлагает несколько вариантов хранения информации, которые мы подробно описывали в предыдущих статьях. В зависимости от количества и сложности запросов, структуры данных и необходимого уровня адаптивности вы можете выбрать какой-либо традиционный реляционный репозитарий, например Windows Azure SQL Database, или подходы в стиле NoSQL, скажем, Windows Azure Table Storage (bit.ly/YrYcQP).

Независимо от выбранного репозитария сервисы, обслуживающие эту информацию, должны предоставляться в стиле RESTful, используя такие инфраструктуры, как Windows Communication Foundation (WCF) или недавно выпущенную ASP.NET Web API (asp.net/web-api). Эти инфраструктуры можно развернуть в облачных сервисах или в VM.

Windows Azure также предлагает готовый сервис, который сочетает в себе мощь реляционной базы данных в облаке с надежным и гибким REST API. Это Windows Azure Mobile Services, ускоряющий разработку данной части игровой архитектуры с наглядными мастерами и средствами автоматического масштабирования. Подробнее об этом сервисе см. в нашей статье за ноябрь 2012 г. «Windows Azure Mobile Services: A Robust Back End for Your Device Applications» (msdn.microsoft.com/magazine/jj721590) или на официальной странице Windows Azure (bit.ly/188Llcg).

Подготовка

Игровой координатор/прокси также может выступать в роли механизма подготовки или автоматического масштабирования для добавления или удаления игровых серверов по мере необходимости. Однако заметьте, что Windows Azure теперь предлагает средства автоматического масштабирования для всех моделей развертывания, включая VM, Cloud Services и Web Sites.

Уведомления

Игроки, использующие мобильные устройства и находясь в автономном режиме, полагаются на прием уведомлений, особенно в случае игр с поочередными ходами или контролируемых по времени (time-based games), которые требуют поддерживать актуальность виртуальных свойств или предметов (items) (эта концепция стала чрезвычайно популярна благодаря таким играм, как FarmVille). При отправке уведомлений мобильным игрокам вы сталкиваетесь с двумя основными проблемами: установление связи с игроками, использующими разные платформы мобильных устройств, и создание и поддержание инфраструктуры, способной достигать миллионы пользователей. К счастью, Windows Azure предлагает сервис Notification Hubs, который обеспечивает общий API для отправки уведомляющих оповещений (push notifications) на самые разнообразные мобильные платформы, в том числе Windows Store, Windows Phone, iOS и Android. В то же время уведомляющие оповещения посылаются миллионам игроков за минуты, а не часы. На рис. 3 показан фрагмент кода на C#, который отправляет простое уведомление приложениям как Windows Store, так и iOS, используя несколько категорий.

Рис. 3. Отправка уведомлений приложениям Windows Store и iOS с помощью Windows Azure Notification Hubs

private static async void SendNotificationAsync()
{
  NotificationHubClient hub =
    NotificationHubClient.CreateClientFromConnectionString(
      "<connection string with full access>", "<hub name>");
  var categories = new string[] { "World", "Politics", "Business",
     "Technology", "Science", "Sports"};
  foreach (var category in categories) {
    var toast = @"&lt;toast&gt;&lt;visual&gt;&lt;binding template ="
      "ToastText02""&gt;&lt;text id=""1""&gt;" + "Breaking " +
      category + " News!" +
      "&lt;/text&gt;&lt;/binding&gt;&lt;/visual&gt;&lt;/toast&gt;";
    await hub.SendWindowsNativeNotificationAsync(toast, category);
    var alert = "{\"aps\":{\"alert\":\"Breaking "+
      category +" News!\"}}";
    await hub.SendAppleNativeNotificationAsync(alert, category);
  }
}

Делегирование обязанностей другим сервисам (SMTP, Commerce)

Игровой координатор/прокси также должен действовать как шлюз для доступа к другим сервисам, например к механизмам массовой рассылки сообщений электронной почты по SMTP или обработке изображений в реальном времени. Windows Azure Store позволяет быстро обнаруживать, приобретать и подготавливать приложения от других партнеров Microsoft. Эти сервисы можно комбинировать с компонентами Windows Azure для создания сложных игр или для добавления средств, изначально не поддерживаемых облачной платформой. Подробнее о Windows Azure Store и каталоге сервисов для разработчиков см. по ссылке bit.ly/1carBrd.

Игровая статистика и большие данные

Сбор, анализ и отчеты по данным, принимаемым от игровых серверов, крайне важны для выявления узких мест, повышения скорости работы игр и — в целях монетизации и рекламы — определения областей, которым игроки отдают свое время. Windows Azure позволяет применять подход с MapReduce, называемый HDInsight, как сервис, который обеспечивает простую установку кластеров Hadoop. С помощью Hive или даже таких привычных инструментов, как Microsoft Office, можно создавать полноценные отчеты и диаграммы. Подробнее об этом компоненте см. в нашей статье за сентябрь 2013 г. «Hadoop and HDInsight: Big Data in Windows Azure» (msdn.microsoft.com/magazine/dn385705).

Заключение

Мы лишь поверхностно рассказали о том, как создавать полнофункциональные масштабируемые решения для индустрии мобильных игр, комбинируя различные компоненты платформы Windows Azure. В общедоступном облаке предлагается гибкая модель оплаты по факту оказания услуги (pay-as-you-go model), которая позволяет любым компаниям эффективно конкурировать в этой области.

Автор: Бруно Теркали  •  Иcточник: MSDN Magazine  •  Опубликована: 16.05.2014
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:   Azure.


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.