Dieser Artikel wurde maschinell übersetzt.

Windows Azure-Insider

Erfüllen der Anforderungen moderner Spiele mit Windows Azure

Bruno Terkaly
Ricardo Villalobos

Bruno Terkaly, Ricardo VillalobosDieser Artikel beschreibt die Windows Azure Cache-Dienst, der in der Vorschau ist.Informationen sind vorbehalten.Online, mobile und social Games wurden die Welt im Sturm, mit gigantischen Zahlen, die im Zusammenhang mit gleichzeitigen Spielern Zeit verbrachte, spielen und Anwendungen heruntergeladen.Gerade vor kurzem, Facebook geteilt, dass ein Drittel des weltweiten Benutzer (260 Millionen) aktiv spielen auf ihren desktop und mobilen Standorten.Dies ist nur ein Indikator der besonderen Herausforderungen Spielentwickler und Verlage müssen Gesicht — Herausforderungen, die Benutzern das gleiche Spiel auf mehreren Plattformen und Geräten, Spieler erwartet sofortige Benachrichtigungen, wenn der Status ihres Spiels zeitbasierte geändert hat, Spiele von Systemstart, um virale in wenigen Tagen, und versuchen, das Publikum an mehreren Orten auf der ganzen Welt zu erreichen.

Zum Glück bietet die öffentliche Cloud eine Reihe von alternativen Umgang mit diesen Situationen, damit Sie sich auf Ihre game-Anwendungen zu entwickeln und nicht auf Bereitstellung die Infrastruktur zur Unterstützung der Authentifizierung, computing, Daten oder Medien-Anforderungen zu konzentrieren.In diesem Artikel erfahren Sie, wie diese und andere Szenarien sind mit dem neuesten Windows-Azure-Services und Komponenten zu lösen.

Abbildung 1 zeigt eine typische Architektur für multiplayer-Spiele für mobile Clients in der Wolke, entweder rundenbasiert oder in Echtzeit-Szenarien zu unterstützen.Die verschiedenen Komponenten sind die häufigsten Aufgaben, die zur Erstellung einer Gaming-Back-End, Einführung des Konzepts eines Orchestrator oder Proxy, fungiert als Gateway oder Traffic Controller für alle Clientinteraktionen mit mehreren Diensten zugeordnet.

Software Architecture for Real-Time, Multiplayer Games for Mobile Clients
Abbildung 1-Software-Architektur für Echtzeit, Multiplayer-Spiele für Mobile Clients

In den folgenden Absätzen nehmen wir einen genaueren Blick auf jede dieser Komponenten.

Multiplayer Game-Servern (Infrastruktur als ein Service virtuelle Maschinen)

Multiplayer game-Server sind in der Regel auf der Grundlage von open-Source oder lizenziert Rahmenbedingungen, als die maßgebliche Quelle der Ereignisse für die Clients, die mit ihnen verbunden und Bereitstellung von Informationen über andere Spieler, die den gleichen Server über Latenzzeiten Anrufe zusammengeschlossen haben.Diese Rahmenbedingungen erfordern zustandsbehaftete Interaktionen mit Kunden, sowie Zugang zu lokalen Speicher, dass virtuelle Maschinen (VMs) in Windows Azure die perfekte Wahl für diese Komponente.Einige Beispiele dieser Spielserver-Frameworks sind Pampelmuse (bit.ly/1i9heBe), Marauroa (bit.ly/am9MOi) und Photon-Server (exitgames.com).

Um eines dieser Frameworks für VMs bereitzustellen, können Sie Instanzen erstellen, aus der Windows-Azure-Bildergalerie im Verwaltungsportal (bit.ly/197eXED), oder direkt erstellen benutzerdefinierten VM-Images als virtuelle Festplatte (Hyper-V)-Dateien (bit.ly/PQso1a).

Denken Sie daran, die Implementierung eines game-Servers in ein komplexer Prozess, dass Sie kommen mit Lösungen für Netzwerk-Verzögerung Entschädigung und richtig mit Kommunikationsprotokolle (z. B. TCP oder UDP) zur Optimierung der Kommunikation mit den Clients verwandeln kann.

Gaming Orchestrator oder Proxy (Plattform als Service-Cloud-Services)

Der Kern der Lösung ist die Gaming-Orchestrator Proxy, wonach mehrere Dienste, einschließlich der folgenden:

  1. Authentifizierung: Überprüfen die Anmeldeinformationen, die von den Clients gesendet, bevor Spieler mit der game-Servern verbinden können.
  2. Matchmaking: Spieler mit ähnlichen Präferenzen mit dem gleichen Spiel-Server zuweisen.Die Entscheidung könnte auch nach Ort, angetrieben werden, um die Wartezeit zu minimieren.
  3. Daten-Proxy: Ingame-Anfragen bedienen von game-Servern oder Clients; Interaktion mit externen Speicher; und das Senden von Daten wie z. B. historische Resultate, Profilinformationen, Vorlieben oder Guthaben.
  4. Bereitstellung: Erhöhen oder verringern die Anzahl der VMs, mit einem Scale-Out-Ansatz basiert auf der Anzahl der angeschlossenen Spieler.
  5. Mitteilungen: Interaktion mit den Benachrichtigungsdienst Spieler über den Status des Spiels zu informieren wenn sie sind nicht online.Dies sollte mehrere Plattformen (Windows, Android, iOS) und Gerätetypen unterstützen.
  6. Delegation: Die Interaktion mit externen Diensten, einschließlich aber nicht beschränkt auf E-mail-Nachrichten senden, Zahlungsabwicklung und zur Protokollierung Spielinformationen zu orchestrieren.

Windows Azure-Cloud-Services ist der perfekte Kandidat für die Gaming-Orchestrator die Handle Staatenlosen Anforderungen sowie leicht skalieren muss anhand der Anzahl von Client und Spiel Serveranforderungen.Darüber hinaus können dank der Vorteile von virtuellen Netzwerken in Windows Azure, Cloud Services direkt mit der game-Servern gehostet in VMs, die Architektur nicht mehr externe Endpunkte verwenden eine zusätzliche Sicherheitsebene hinzugefügt kommunizieren.Cloud-Dienste können erstellt und aus verschiedenen IDEs, einschließlich Visual Studio für .NET Entwicklung oder Eclipse für Javabereitgestellt werden.Weitere Informationen zum Erstellen von Cloud-Diensten finden Sie unter bit.ly/19MYq5A.Wenn Sie VMs verbinden möchten und Cloud-Services mit virtuellen Netzwerke, das Tutorial auf bit.ly/GYcG5t kann helfen.

Die Verantwortung gerade diskutiert können von einem einzigen Cluster von Web- oder Arbeitnehmer Rollen oder Split in vielen Cloud-Diensten, abhängig von der Anzahl der gleichzeitigen Benutzer und Komplexität des Onlinespiels behandelt werden.Die Vorteile, die Windows Azure bietet zählt mehrere Bereitstellungsmodelle, einschließlich der Infrastruktur als Service (IaaS) oder Plattform als Service (PaaS).Der wichtige Entscheidung-Faktor ist die Anzahl der delegiert, um die Cloud-Anbieter Software-Schichten – in diesem Fall Microsoft.Weitere Informationen zur Auswahl des richtigen Cloud-Bereitstellung und Ausführung-Modells finden Sie unter bit.ly/153kRXM.

Jetzt werden wir untersuchen, wie der Orchestrator diese Aufgaben mit anderen Komponenten in der Windows-Azure-Plattform durchführen kann.

Authentifizierung (Windows Azure Active Directory Access Control Service)

Der erste Schritt, ein mobiler Client braucht, um ein multiplayer-Plattform zuzugreifen versucht, zur Authentifizierung gegenüber dem Server über einen Satz von Anmeldeinformationen.In modernen spielen ist es wichtig, Validierung von mehreren Identitätsprovider, unter Berücksichtigung der Tatsache, dass Benutzer unterschiedliche Vorlieben haben, wenn es darum geht, online-Sicherheit zu unterstützen.Einige vielleicht fühlen sich wohler mit sozialen Netzwerk-Anmeldeinformationen, wie Facebook, Yahoo!oder Twitter.Andere möglicherweise Authentifizierung bereitgestellt durch das Spiel selbst, auf der Grundlage eines Rahmens wie Active Directory bevorzugen.

Das Windows Azure Access Control Service (ACS) bietet eine einfache Möglichkeit, diese Authentifizierung durchzuführen.Es unterstützt die Integration mit Windows Identity Foundation; bietet Out-of-the-Box-Kompatibilität mit Windows Live ID (ein Microsoft-Konto), Google, Yahoo!und Facebook; ermöglicht Szenarien basierend auf OAuth 2.0, WS-Trust und WS-Federation-Protokolle; und erkennt JSON Web Token (JWT), SAML 1.1, SAML 2.0 und einfache Web Token (SWT) token Formate.

In diesem Fall erhält der Spiele-Client ein Sicherheitstoken ausgestellte ACS um sich dem Spiele-Server über die Gaming-Proxy-Server anzumelden.Dieses Token enthält eine Reihe von Behauptungen über die Identität des Benutzers.ACS stellt ein Token nicht aus, es sei denn, der Benutzer zuerst einen gültigen Identitätsausweis beweist durch die Vorlage eines Wertpapiers token von einem anderen vertrauenswürdigen Anbieter für Emittenten oder Identität, die der Benutzer angemeldet hat.Dieser Prozess wird dargestellt Abbildung 2.

The Authentication Process Using Windows Azure Access Control Service
Abbildung 2 des Authentifizierungsprozess mit Windows Azure Access Control Service

Matchmaking

Bei multiplayer-spielen nennt der Vorgang des Zuweisens der Spieler an den entsprechenden Spiel Server anhand ihrer Präferenzen oder Position Matchmaking.Nach der Spiele-Client authentifiziert wurde, kehrt der Gaming-Proxy eine Liste von game-Servern Abgleich des Spielers "Einstellungen", basierend auf seiner IP-Adresse zusammen mit zusätzliche Sicherheitsanmeldeinformationen für den Fall, dass sie von dem Spiele-Server selbst benötigt werden.Die Logik hinter der Zuordnung ist normalerweise eine Liste der empfohlenen Server in jedem Rechenzentrum abhängig, die in irgendeine Art von caching-Mechanismus gespeichert ist.Die Grund-Zwischenspeicherung wird empfohlen, für diese Leistung ist: Roundtrips in Primärspeicher zu vermeiden wird die Spieler Erfahrung deutlich verbessert.Windows Azure bietet einen neuen Cache-Service (derzeit in der Vorschau), der über mehrere Dienste und Clients zugegriffen werden kann.Dieser neue Service ist eine verteilte, im Speicher und skalierbare Lösung, die Sie sehr reaktionsfähiger Anwendungen erstellen superschnellen Zugriff auf Daten ermöglicht.Es ist extrem einfach zu .NET Anwendungen mit dem entsprechenden SDK zugreifen.Ausführliche Anweisungen finden Sie unter bit.ly/15IltBt.Matchmaking-Prozess kehren die entsprechende IP-Adresse des Spiele-Servers, zu denen der Spiele-Client eine Verbindung herstellen sollte.

Wenn eine Spielsitzung (in Form eines Spieles bekämpfen, oder einfach die gamer Protokollierung aus dem Spiel) abgeschlossen hat, Spieler können auf dem gleichen Server bleiben oder zurück an den Matchmaking-Prozess weitergeleitet werden, um einen anderen Server zu finden, für den Fall, dass ihre Einstellungen geändert haben.

Daten-Proxy (Windows Azure Storage)

Für Spieler, die bereits mit den entsprechenden Spiel-Server basierend auf ihre Vorlieben verbunden Anfragen über Spielkonfiguration, speichern Gleichgewicht oder anderen personenbezogen Daten werden durch das Spiel Orchestrator/Proxy, der in der Regel eine API mit den häufigsten Operationen gegen ein Daten-Repository stellt geleitet.Es gibt zwei wichtigste Entscheidungen dafür treffen: der Speichermechanismus für die Benutzer und Spiel-Informationen und den Rahmen für die Bereitstellung von Dienstleistungen, die von den game-Server zugegriffen werden können.

Windows Azure bietet verschiedene Optionen zum Speichern von Informationen, die wir in früheren Artikeln beschrieben habe.Je nach Anzahl und Komplexität der Abfragen, die Struktur der Daten und die Höhe der Anpassung erforderlich, wählen Sie aus traditionellen relationalen Repositorys wie z. B. Windows Azure SQL-Datenbank oder NoSQL Ansätze wie Windows Azure Table Storage (bit.ly/YrYcQP).

Ungeachtet der Repository-Auswahl sollten Dienstleistungen vor diese Informationen in eine erholsame Weise, mit Frameworks wie Windows Communication Foundation (WCF) oder die kürzlich veröffentlichten ASP.NET Web API verfügbar gemacht werden (asp.net/Web-api).Diese Frameworks können Cloud-Services oder VMs bereitgestellt werden.

Windows Azure bietet auch einen schlüsselfertigen Dienst, der die Macht einer relationalen Datenbank in der Cloud mit einer robusten und flexiblen REST-API vereint.Das nennt man Windows Azure Mobile Services, und es ist eine einfache Möglichkeit zur Beschleunigung der Entwicklung dieses Stück der Gaming-Architektur, mit leicht verständlichen Assistenten sowie automatische Skalierung Funktionen.Weitere Informationen zu diesem Dienst finden Sie in unserer Rubrik November 2012 "Windows Azure Mobile Dienste: Eine robuste Back-End für Ihre Geräteanwendungen"(msdn.microsoft.com/magazine/jj721590), oder auf der offiziellen Windows-Azure-Seite (bit.ly/188Llcg).

Bereitstellung

Der Spiele Orchestrator/Proxy kann auch dienen, als die Bereitstellung oder automatische Skalierung-Engine für hinzufügen oder Entfernen von game-Servern, wie sie benötigt werden.Beachten Sie jedoch, dass Windows Azure jetzt automatische Skalierung Funktionen für all die unterschiedlichen Bereitstellungsmodelle bietet, VMs, Cloud-Diensten und Websites.

Benachrichtigungen

Spieler, die mit mobilen Geräten basieren auf Benachrichtigungen empfangen, wenn sie offline, besonders für rundenbasierte oder zeitbasierte Spiele sind, die erfordern halten virtuelle Eigenschaften oder Gegenstände auf dem neuesten Stand (ein Konzept, das sehr häufig durch Spiele wie FarmVille gemacht wurde).Sie haben zwei Hauptprobleme beim Senden von Benachrichtigungen an mobile Gamer: müssend, Spieler mithilfe von verschiedenen Plattformen auf ihren mobilen Geräten und erstellen und Verwalten einer Infrastruktur erreicht Millionen von Nutzern zu erreichen.Gott sei Dank, Windows Azure bietet einen Service namens Notification-Hubs, die eine gemeinsame API zum Senden von Push-Benachrichtigungen an eine Vielzahl von mobilen Plattformen, einschließlich Windows Store, Windows Phone, iOS und Android liefert.Zur gleichen Zeit werden die Push-Benachrichtigungen an Millionen von Nutzern innerhalb von Minuten, nicht Stunden gesendet.Abbildung 3 zeigt einen Codeausschnitt in c#, die eine einfache Meldung an Windows Store und iOS-Anwendungen mit mehreren Kategorien sendet.

Abbildung 3 senden Benachrichtigungen an Windows Store und iOS-Anwendungen mithilfe von Windows Azure Benachrichtigung 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);
  }
}

Delegation von Aufgaben an andere Dienste (SMTP, Handel)

Der Spiele Orchestrator/Proxy sollten auch als Gateway für den Zugriff auf andere Dienste wie Motoren für massive E-mail-Nachrichten über SMTP senden oder Verarbeitung Spielbilder in Echtzeit handeln.Der Windows-Azure-Speicher können Sie schnell entdecken, kaufen und Bereitstellung von Anwendungen von anderen Microsoft-Partnern.Diese Dienste können kombiniert werden, mit Windows Azure-Komponenten für komplexe Spiele zu erstellen oder Hinzufügen von Features, die von der Cloud-Plattform nicht nativ unterstützt werden.Weitere Informationen zu den Windows-Azure-Speicher und einen Katalog von Developer Services finden Sie unter bit.ly/1carBrd.

Spiel-Analysen und große Datenmengen

Erhebung, Analyse und reporting von game-Servern gesammelten Daten müssen unbedingt zu Engpässen, Leistungssteigerung im Spiel finden und Monetarisierung und Werbezwecken, Bestimmung der Bereiche, in denen Spieler ihre Zeit verbringen.Windows Azure erlaubt die Verwendung einen MapReduce-Ansatz, namens HDInsight, als eine Dienstleistung, die die einfache, unkomplizierte Installation von Hadoop-Cluster ermöglicht.Über Hive oder sogar vertraute Tools wie Microsoft Office, können Sie komplexe Berichte und Diagramme erstellen.Weitere Informationen zu dieser Komponente finden Sie in unserer Rubrik September 2013 "Hadoop und HDInsight: Große Daten in Windows Azure"(msdn.microsoft.com/magazine/dn385705).

Zusammenfassung

Wir haben nur zerkratzt die Oberfläche zum Erstellen von reicher und skalierbarer Lösungen für die mobile-Spiele-Industrie durch die Kombination mehrerer Komponenten der Windows Azure Platform, erfüllen die Anforderungen und Wünsche erstellt von sozialen Netzwerken und die massive Anzahl an Spielern, die für diese Anwendungen angezogen werden.Die öffentliche Cloud bietet eine flexible Umlageverfahren, die Unternehmen aller Größen in diesem Raum konkurrieren kann.

Bruno Terkaly arbeitet als Entwicklungsexperte für Microsoft. Seine fundierten Kenntnisse sind das Ergebnis langjähriger Programmierungserfahrung mit einer Vielzahl von Plattformen, Sprachen, Frameworks, SDKs, Bibliotheken und APIs. Lesen Sie seinen Blog unter blogs.msdn.com/b/brunoterkaly.

Ricardo Villalobos ist ein erfahrener Softwarearchitekt mit mehr als 15 Jahren Erfahrung im Entwerfen und Erstellen von Anwendungen für Unternehmen in verschiedenen Branchen. Halten verschiedene technische Zertifizierungen, sowie einen Master-Abschluss in Betriebswirtschaft von der Universität Dallas, arbeitet er als Architekt Wolke in der DPE weltweit engagierten Partner-Team für Microsoft, hilft Unternehmen weltweit, in Windows Azure Lösungen zu implementieren. Sie können lesen Sie seinen Blog unter blog.ricardovillalobos.com.

Terkaly und Villalobos präsentieren gemeinsam bei großen Konferenzen.Sie ermutigen die Leser des Windows Azure-Insider zu ihnen Verfügbarkeit erhalten.Terkaly kann erreicht werden unter bterkaly@microsoft.com und Villalobos kann erreicht werden unter Ricardo.Villalobos@microsoft.com.

Unser Dank gilt dem folgenden technischen Experten für die Durchsicht dieses Artikels: Kevin Ashley (Microsoft)
Kevin Ashley arbeitet bei Microsoft als Architekt und Technologieförderung.Er ist Autor von Professional Windows 8-Programmierung: Anwendungsentwicklung mit c# und XAML Buch und Top-apps für Windows und Windows Phone.Kevin arbeitet mit Start-ups und Partner, Beratung bei Software-Design, Business und Technologie-Strategie.Vor Microsoft war er Mitbegründer einer Frühphasen-Wolke und Business Intelligence Software starten.In seiner Funktion als senior Softwareentwickler und Architekten Kevin Raster, Data warehousing und Echtzeit trading Lösungen für Fortune 500-Unternehmen und Hedge-Fonds weltweit entwickelt: USA, Großbritannien, Europa und Asien.Kevin hat Abschlüsse in Mathematik, Informatik und MBA in Finance.KevinBlog: http://kevinashley.com und Twitter: @kashleytwit