本文章是由機器翻譯。

Windows Azure 內行人

透過 Windows Azure 滿足新式遊戲的需求

Bruno Terkaly
Ricardo Villalobos

本文介紹 Windows Azure 高速快取服務,是在預覽。資訊如有更改。線上、 移動和社會遊戲有採取世界的風暴,以驚人的數位有關的併發的球員,時間花了播放和下載的應用程式。就在最近,Facebook 分享,有三分之一的其全球使用者 (2 億 6000 萬) 積極在其桌面和移動的網站上玩遊戲。這是特別的挑戰遊戲開發商的只是一個指標和發佈公司必須的臉 — — 包括使用者在多個平臺和設備,玩家期待接收即時通知狀態更改時,它們基於時間的遊戲的了,遊戲會從啟動到病毒在短短幾天,和想要達到在世界各地的多個位置的觀眾,同樣的遊戲的挑戰。

值得慶倖的是,公共雲計算提供了大量的替代辦法來處理這些情況下,使您可以集中發展你的遊戲應用程式,而不是如何提供基礎結構以支援身份驗證、 計算、 資料或媒體的要求。在本文中,我們會探討如何解決這些問題和其他常見的方案,使用最新的 Windows Azure 服務和元件。

圖 1 顯示了一個典型的體系結構的移動用戶端在雲中,無論是基於轉動或即時方案支援多人遊戲。不同的元件分配給生成遊戲的後端,引入概念的控制器或代理,作為閘道或交通控制器與多個服務的所有用戶端交互所需的最常見任務。


圖 1 軟體體系結構即時、 多玩家遊戲的移動用戶端

在下面的段落中,我們會仔細看看每個元件。

多人遊戲伺服器 (基礎設施作為服務虛擬機器)

多人遊戲伺服器通常基於開放原始碼或特許框架,作為事件的權威來源的用戶端連接到他們,並提供有關其他玩家加入了通過低延遲調用相同的伺服器的資訊。這些框架需要有狀態交互的用戶端,以及訪問到本機存放區,使虛擬機器 (Vm) 在 Windows Azure 為此元件的絕佳選擇。這些遊戲伺服器框架的一些例子是柚 (bit.ly/1i9heBe)、 Marauroa (bit.ly/am9MOi) 和光子伺服器 (exitgames.com)。

要將這些框架的任何部署到虛擬機器,您可以從 Windows Azure 圖像庫監管中心中創建實例 (bit.ly/197eXED),或直接創建自訂 VM 映射作為 VHD (HYPER-V) 檔 (bit.ly/PQso1a)。

請記住,實現遊戲伺服器可以變成一個複雜的過程,需要你來網路滯後補償和正確使用的通訊協定 (如 TCP 或 UDP) 來優化與用戶端通信的解決方案。

遊戲控制器或代理伺服器 (作為服務雲服務平臺)

該解決方案的核心是遊戲控制器或代理伺服器,提供多項服務,包括以下內容:

  1. 身份驗證:驗證用戶端發送的前球員可以連接到遊戲伺服器的憑據。
  2. 配對:分配玩家有類似首選項設置為相同的遊戲伺服器。決定可能也是由驅動的位置,儘量減少延遲時間。
  3. 代理伺服器的資料:在遊戲中請求提供服務,從遊戲伺服器或用戶端 ; 與外部存儲 ; 交互 併發送回資料歷史得分、 設定檔資訊、 首選項、 或貸方餘額等。
  4. 資源調配:增加或減少 Vm,使用一種基於連接的播放機數的擴充方法的數目。
  5. 通知:與要告知玩家的遊戲狀態的通知服務進行交互時他們不線上。這個要支援多個平臺 (Windows、 Android、 iOS) 和裝置類型。
  6. 代表團:策劃與外部服務包括但不是限於發送電子郵件消息、 處理付款,和日誌記錄遊戲資訊的互動。

Windows Azure 雲服務是完美的遊戲控制器,其中必須能到控制碼無國籍的要求,以及容易出規模基於用戶端和遊戲伺服器請求的數目。此外,由於 Windows Azure 中的虛擬網路所提供的福利,雲服務可以直接與遊戲伺服器通信承載于虛擬機器,無需使用外部終結點到體系結構添加了額外的安全層。可以創建並從不同的 Ide,包括Visual Studio為.NET 開發或 Eclipse 為JAVA部署雲服務。有關創建雲服務的詳細資訊可以在發現 bit.ly/19MYq5A。如果您想要連接的虛擬機器和雲服務使用虛擬網路,本教程在 bit.ly/GYcG5t 可以説明。

剛才討論的責任可以由單個群集 Web 或輔助的角色,或拆分成許多的雲服務,根據併發使用者的數量和複雜性的線上遊戲處理。Windows Azure 提供的好處之一是多個部署模型,包括基礎設施作為服務 (IaaS) 或平臺作為服務 (PaaS)。關鍵決定因素是委派給雲供應商的軟體圖層數量 — — 在此情況下,Microsoft。有關選擇合適的雲部署和執行模型的詳細資訊可以在發現 bit.ly/153kRXM

現在我們會探討如何同步控制器可以執行這些責任在 Windows Azure 平臺中使用的其他元件。

身份驗證 (Windows Azure Active Directory 存取控制服務)

移動用戶端需要訪問一個多人遊戲平臺的第一步嘗試對使用一組憑據的伺服器進行身份驗證。在現代遊戲中很重要的是要支援從多個身份提供程式,牢記使用者有不同的偏好,當它來到線上安全驗證。一些人可能感到更舒適使用社交網路憑據,例如 Facebook,yahoo!或 Twitter。其他人可能更願意提供遊戲本身,如活動目錄框架基礎的身份驗證。

Windows Azure 存取控制服務 (ACS) 提供一種簡單的方法來執行這種身份驗證。它支援 Windows 標識基礎 ; 與集成 提供了與 Windows Live ID (Microsoft 帳戶)、 谷歌、 雅虎的外框相容性和 Facebook ; 可以實現方案基於 OAuth 2.0,WS 信任和 WS 聯合議定書 ; 並認識到 JSON Web 權杖 (JWT)、 SAML 1.1、 SAML 2.0 和簡單 Web 權杖 (SWT) 權杖格式。

在這種情況下,遊戲用戶端獲取發出的 ACS,登錄到遊戲伺服器將通過遊戲代理伺服器上的安全權杖。此標記包含一組有關該使用者的標識聲明。ACS 不會發出一個權杖,除非使用者第一次有效通過提供證明身份的安全權杖從另一個受信任的頒發者或身份提供程式已通過身份驗證的使用者。這一過程所示圖 2


圖 2 使用 Windows Azure 存取控制服務的身份驗證過程

婚介

在多人遊戲視頻遊戲中,玩家分配到相應的遊戲伺服器基於他們的首選項或位置的過程稱為牽線搭橋。一旦遊戲用戶端已經過身份驗證,遊戲代理伺服器將返回匹配玩家的喜好,基於他的 IP 位址,以及額外的安全憑據,以防他們遊戲伺服器本身所需要的遊戲伺服器的清單。轉讓背後的邏輯通常基於推薦伺服器清單中每個資料存儲在某些類型的緩存機制的中心。原因緩存被建議,這是性能:避免來回訪問主存儲大大改善了玩家的體驗。Windows Azure 提供新的快取服務 (目前在預覽),可以跨多個服務和用戶端存取。這項新服務是一個分散式的、 記憶體中的、 可擴展的解決方案,使您能夠生成高度回應的應用程式通過提供超級快速訪問資料。它是非常容易地從使用相應的 SDK 的.NET 應用程式中訪問。詳細的說明可在 bit.ly/15IltBt。婚介過程將返回遊戲用戶端應該連接到遊戲伺服器的相應 IP 位址。

當遊戲會話已定稿 (在表單的一個匹配,打擊,或簡單地通過退出遊戲的玩家日誌記錄) 時,玩家可以留在同一伺服器上或重定向回配對過程,以便找到一個不同的伺服器,在他們的首選項已更改的情況下。

資料代理伺服器 (Windows Azure 存儲空間)

球員已經連接到基於他們的首選項相應的遊戲伺服器,請求有關遊戲配置、 存儲餘額或通過遊戲控制器/代理,其中通常公開 API 對資料存儲庫中最常見的操作與路由的任何其他使用者相關的資料。有兩個主要決定要為此:使用者和遊戲的資訊和框架 》 公開遊戲伺服器可以訪問的服務的存儲機制。

Windows Azure 提供用於存儲資訊,我們已經在前面的文章中所述的多個選項。根據數量和複雜性的查詢、 資料的結構和所需的自訂級別,您可以選擇從 Windows Azure SQL 資料庫或 NoSQL 方法如 Windows Azure 表存儲等傳統關係資料庫 (bit.ly/YrYcQP)。

無論存儲庫中選擇,在此資訊服務應在 rest 風格的方式,使用框架,例如 Windows 通信基礎 (WCF) 或最近發佈的ASP.NETWeb API 公開 (asp.net/web-api)。這些框架可以部署到雲服務或虛擬機器。

Windows Azure 還提供交鑰匙工程服務,與一個強大和靈活的其餘 API 結合在雲計算的關係資料庫的力量。這被稱為 Windows Azure 移動服務,和它是加快發展的這片遊戲體系結構,具有容易跟隨嚮導和自動縮放功能的簡單方法。有關此服務的詳細資訊可以在我們 2012 年 11 月列中,找到"Windows Azure 移動服務:魯棒回來結束您的設備應用程式"(msdn.microsoft.com/magazine/jj721590),或官方的 Windows Azure 頁面上 (bit.ly/188Llcg)。

提供

每個代理的控制器遊戲也可以作為添加或刪除遊戲伺服器,需要他們的資源調配或自動縮放引擎。但是,注意 Windows Azure 現在提供不同的部署模式,包括虛擬機器、 雲服務和 Web 網站的所有自動縮放功能。

告知

遊戲玩家使用行動裝置依賴于接收通知,當他們是離線狀態,特別是對於基於轉動或基於時間的遊戲需要保持的虛擬屬性或項最新 (這一概念由等 FarmVille 遊戲非常常見)。將通知發送到手機遊戲玩家時,你面對兩個主要問題:不必伸手給玩家在他們的行動裝置上使用不同的平臺和構建和維護基礎設施能夠達到數以百萬計的使用者。值得慶倖的是,Windows Azure 提供一項稱為通知集線器,提供了一個通用的 API,將推送通知發送給移動平臺,包括 Windows 存儲區、 Windows Phone、 iOS 和 Android 的各種服務。同時,推式通知被發送到數以百萬計的使用者在幾分鐘,不是數小時內。圖 3 顯示程式碼片段在 C# 中,將一個簡單的通知發送到 Windows 存儲區和 iOS 的應用程式使用多個類別。

圖 3 發送通知到 Windows 存儲區和 iOS 的應用程式使用 Windows Azure 通知集線器

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、 商務)

每個代理的控制器遊戲還應充當閘道的訪問其他服務如發送大量電子郵件消息 (通過 SMTP,或處理即時遊戲圖像引擎。Windows Azure 存儲將允許您快速發現、 購買和提供應用程式從其他 Microsoft 合作夥伴。這些服務可以與 Windows Azure 元件來構建複雜的遊戲或添加不受雲平臺本機支援的功能組合。有關 Windows Azure 存儲和開發商服務的目錄的詳細資訊可以在發現 bit.ly/1carBrd

遊戲分析和大資料

收集、 分析和報告從遊戲伺服器收集的資料是對查找瓶頸,提高遊戲的性能及貨幣化和廣告目的,確定的地區玩家在那裡花他們的時間至關重要。Windows Azure 允許您使用 MapReduce 方法,稱為 HDInsight,作為一種服務,它允許 Hadoop 集群的簡單、 直接地安裝。使用配置單元或如Microsoft Office甚至熟悉的工具,可以創建豐富的報告和圖表。有關此元件的詳細資訊可以在 2013 年 9 月的專欄,發現"Hadoop 和 HDInsight:在 Windows Azure 的大資料"(msdn.microsoft.com/magazine/dn385705)。

總結

我們只抓傷了如何創建豐富的、 可擴展的解決方案,為移動遊戲業相結合的 Windows Azure 平臺,滿足的需求和要求通過社會網路和大量的玩家,被吸引到這些應用程式創建的多個元件的表面。公共雲計算提供了一個靈活的現收現付模式,使各種規模的公司能夠在這一空間中競爭。

Bruno Terkaly* 是 Microsoft 的开发推广人员。他的知识深度来源于多年来相关领域以及使用大量平台、语言、框架、SDK、库和 API 编写代码的经验。他不辞辛苦,就有关构建基于云的应用程序(特别是使用 Windows Azure 平台)编写代码、发布博客并给予现场演示。您可以阅读他的博客 blogs.msdn.com/b/brunoterkaly。*

Ricardo Villalobos 是具有超過 15 年的經驗設計和創建應用程式的公司在多個行業的經驗豐富的軟體設計師。他從達拉斯大學工商管理持有不同的技術認證,以及碩士學位,為微軟,説明世界各地的公司要在 Windows Azure 實施解決方案作為一個雲建築師在 DPE 全球範圍內參與合作夥伴團隊工作。您可以閱讀他的博客在 blog.ricardovillalobos.com

Terkaly 和比利亞洛沃斯共同提出大行業會議。他們鼓勵讀者的 Windows Azure 內幕交易與他們聯繫的可用性。也可以撥打 Terkaly bterkaly@microsoft.com 和比利亞洛沃斯也可以撥打 Ricardo.Villalobos@microsoft.com

衷心感谢以下技术专家对本文的审阅:Kevin阿什莉 (Microsoft)
Kevin阿什莉在 Microsoft 工作作為建築師和技術福音傳教士。他是一個作者的專業 Windows 8 程式設計:與 C# 和 XAML 的書和最受歡迎的應用程式的視窗和 Windows Phone 應用程式開發。Kevin工作與創業公司和合作夥伴、 軟體設計、 商業和技術戰略提供諮詢意見。之前微軟,他是早期階段雲及商務智慧軟體啟動時的建立者。在他作為高級軟體發展人員和架構師的角色,Kevin為財富 500 強公司和對沖基金全球開發網格、 資料倉儲和即時交易解決方案:美國、 英國、 歐洲和亞洲。Kevin在金融數學、 電腦科學和工商管理碩士學位。Kevin的博客:HTTP://kevinashley.com 和 twitter 使用者: @kashleytwit