Partager via


Cet article a fait l'objet d'une traduction automatique.

Au cœur de Windows Azure

Répondez aux besoins du monde des jeux actuel grâce à Windows Azure

Bruno Terkaly
Ricardo Villalobos

Bruno Terkaly, Ricardo VillalobosCet article décrit le Service de Cache Windows Azure, qui est dans l'aperçu. Information peut être modifiée.Jeux en ligne, mobiles et sociales ont pris le monde par la tempête, avec échelonnement des chiffres concernant les joueurs simultanés, temps passé à jouer et d'applications téléchargées. Tout récemment, Facebook a partagé qu'un tiers de ses global (260 millions) d'utilisateurs jouent activement jeux sur ses sites de bureau et mobiles. Il s'agit d'un seul indicateur des développeurs de jeux de défis particuliers et de sociétés d'édition doivent visage — défis qui incluent les utilisateurs jouent le même jeu sur plusieurs plates-formes et de périphériques, les joueurs s'attendent à recevoir des notifications instantanées lorsque l'état de leur jeu basé sur le temps a passé, jeux allant de démarrage pour virale en quelques jours et en essayant de toucher le public dans de multiples endroits dans le monde entier.

Heureusement, le nuage public offre un certain nombre de solutions de rechange pour faire face à ces situations, ce qui permet de vous concentrer sur le développement de vos applications de jeu et pas sur la façon de configurer l'infrastructure pour prendre en charge d'authentification, de calcul, les exigences en matière de données ou les médias. Dans cet article, nous allons explorer comment résoudre ces et autres scénarios courants avec les services Windows Azure plus récents et des composants.

Figure 1 présente une architecture typique pour supporter des jeux multijoueurs pour des clients mobiles dans le nuage, soit pour les scénarios de tour par tour ou en temps réel. Les différents composants sont affectées aux tâches plus courantes nécessaires pour construire un jeu back-end, introduisant le concept d'un orchestrator ou proxy, qui agit comme contrôleur de trafic ou de la passerelle pour toutes les interactions client avec plusieurs services.

Software Architecture for Real-Time, Multiplayer Games for Mobile Clients
Figure 1 Architecture de logiciel pour les jeux multijoueurs, en temps réel pour les Clients mobiles

Dans les paragraphes qui suivent, nous allons jeter regarder de plus près chacun de ces composants.

Serveurs de jeu multijoueur (Infrastructure as a Service des Machines virtuelles)

Les serveurs de jeu multijoueurs sont habituellement basées sur l'open source ou sous licence de cadres, agissant comme la source d'événements pour les clients connectés à eux et fournissant des informations sur les autres joueurs qui ont rejoint le même serveur via des appels de faible latence. Ces cadres exigent des interactions avec les clients, ainsi que l'accès au stockage local, faisant des machines virtuelles (VM) dans Windows Azure le choix parfait pour ce composant. Quelques exemples de ces cadres de serveur de jeu sont pomelo (bit.ly/1i9heBe), Marauroa (bit.ly/am9MOi) et le serveur de Photon (exitgames.com).

Pour déployer un de ces cadres aux machines virtuelles, vous pouvez créer des instances de la Galerie d'images de Windows Azure dans le portail de gestion (bit.ly/197eXED), ou directement créer des images personnalisées de VM sous forme de fichiers VHD (Hyper-V) (bit.ly/PQso1a).

N'oubliez pas que la mise en œuvre d'un serveur de jeu peut se transformer en un processus complexe, vous obligeant à trouver des solutions de réseau-gal dédommagement et de correctement à l'aide de protocoles de communication (par exemple, TCP ou UDP) pour optimiser la communication avec les clients.

Jeux Orchestrator ou Proxy (plate-forme de services Cloud Service)

Au cœur de la solution est l'orchestrator gaming ou proxy, qui fournit plusieurs services, y compris ce qui suit :

  1. Authentification : Validation des informations d'identification envoyées par les clients avant que les joueurs peuvent se connecter aux serveurs de jeu.
  2. Jumelage : Attribution des joueurs avec des préférences similaires au même serveur de jeu. La décision pourrait également être commandée par emplacement, afin de minimiser les temps de latence.
  3. Proxy de données : Desservant les requêtes dans le jeu depuis les serveurs de jeu ou les clients ; interagir avec le stockage externe ; et en envoyant des données rétrospectives comme scores historiques, informations de profil, préférences ou solde créditeur.
  4. Attribution de privilèges d'accès : Augmentant ou en diminuant le nombre de machines virtuelles, en utilisant une approche évolutif basée sur le nombre de joueurs connectés.
  5. Notifications : Interaction avec le service de notification pour l'informer de l'état du jeu, les joueurs quand ils ne sont pas en ligne. Cela devrait soutenir de multiples plateformes (Windows, Android, iOS) et les types d'appareils.
  6. Délégation : Orchestration de l'interaction avec des services externes, y compris mais non limité à l'envoi de messages électroniques, le traitement des paiements et jeu d'informations de journalisation.

Services de Cloud Windows Azure est le candidat idéal pour l'orchestrateur de jeux, qui doit être capable de poignée requêtes apatrides, ainsi que facilement échelle basée sur le nombre de demandes de serveur de client et de jeu. De plus, grâce aux avantages offerts par les réseaux virtuels dans Windows Azure, Cloud Services peuvent communiquer directement avec les serveurs de jeu hébergés dans des machines virtuelles, en ajoutant une couche supplémentaire de sécurité à l'architecture de ne pas avoir à utiliser des points de terminaison externes. Services Cloud peuvent être créés et déployés à partir des IDEs différents, y compris Visual Studio pour le développement .NET ou Eclipse pour Java. Plus d'informations sur la création de Services Cloud peuvent être trouvés à bit.ly/19MYq5A. Si vous souhaitez vous connecter les ordinateurs virtuels et de Cloud Services à l'aide de virtual networks, le didacticiel à bit.ly/GYcG5t peut aider.

Les responsabilités de parler peuvent être traitées par un seul groupe de rôles Web ou travailleur ou fractionné en plusieurs Services en nuage, selon le nombre d'utilisateurs simultanés et de la complexité du jeu en ligne. L'un des avantages que Windows Azure offre est plusieurs modèles de déploiement, y compris l'Infrastructure as a Service (IaaS) ou de la plate-forme en tant que Service (PaaS). Le facteur de décision clé est le nombre de couches logicielles déléguées au vendeur nuage — dans ce cas, Microsoft. Plus d'informations sur le choix du modèle de déploiement et l'exécution de nuage de droite se trouvent à bit.ly/153kRXM.

Maintenant, nous allons explorer comment l'orchestrateur peut effectuer ces responsabilités en utilisant d'autres composants dans la plateforme Windows Azure.

Authentification (Service contrôle d'accès Windows Azure Active Directory)

La première étape, qu'un client mobile prend pour accéder à une plateforme multijoueur tente de s'authentifier sur le serveur à l'aide d'un ensemble d'informations d'identification. Dans le jeu modern, il est important de soutenir la validation de plusieurs fournisseurs d'identité, gardant à l'esprit que les utilisateurs ont des préférences différentes quand il s'agit de la sécurité en ligne. Certains pourraient se sentir plus à l'aise à l'aide des informations d'identification de réseau social, comme Facebook, Yahoo! ou Twitter. D'autres pourraient préférer d'authentification fournie par le jeu lui-même, basé sur un framework telles qu'Active Directory.

Le service de contrôle d'accès Windows Azure (ACS) offre un moyen simple d'effectuer cette authentification. Il prend en charge l'intégration avec Windows Identity Foundation ; assure la compatibilité d'out-of-the-box avec Windows Live ID (un compte Microsoft), Google, Yahoo! et Facebook ; permet des scénarios basés sur OAuth 2.0, WS-Trust et WS-Federation protocoles ; et reconnaît les formats de jeton SAML 2.0, JSON Web Token (JWT), SAML 1.1 et Simple Web Token (SWT).

Dans ce cas, le client du jeu obtient un jeton de sécurité émis par l'ACS afin d'ouvrir une session sur le serveur de jeu via le proxy gaming. Ce jeton contient un ensemble de revendications sur l'identité de l'utilisateur. ACS ne délivre pas un jeton, sauf si l'utilisateur d'abord prouve une pièce d'identité valable en présentant une sécurité symbolique d'un autre émetteur ou identité fournisseur de confiance qui a authentifié l'utilisateur. Ce processus est illustré dans Figure 2.

The Authentication Process Using Windows Azure Access Control Service
Figure 2 le processus d'authentification à l'aide de Windows Service de contrôle d'accès d'Azur

Jumelage

Dans les jeux vidéo multijoueurs, le processus d'affectation les joueurs sur le serveur de jeu approprié basé sur leurs préférences ou l'emplacement s'appelle jumelage. Une fois que le client du jeu a été authentifié, le proxy gaming renverra une liste de serveurs de jeu correspondant des préférences du joueur, basés sur son adresse IP, ainsi que des informations d'identification de sécurité supplémentaire au cas où ils sont nécessaires par le serveur de jeu lui-même. La logique qui sous-tend l'attribution repose généralement sur une liste de serveurs recommandés dans chaque centre de données qui est stocké dans un certain type de mécanisme de mise en cache. La raison mise en cache est recommandé car il s'agit de performance : en évitant les allers-retours vers le stockage primaire améliore significativement l'expérience gamer. Windows Azure offre un nouveau service de cache (en avant-première) qui sont accessibles à travers de multiples services et clients. Ce nouveau service est une solution évolutive distribuée, en mémoire qui vous permet de créer des applications très réactifs en fournissant un accès ultra rapide aux données. Il est extrêmement facile d'accéder à partir d'applications .NET en utilisant le SDK correspondant. Instructions détaillées peuvent être trouvées à bit.ly/15IltBt. Le processus de jumelage retournera l'adresse IP appropriée du serveur de jeu qui doit se connecter le client du jeu.

Quand une session de jeu a été finalisée (sous la forme d'un match, combat, ou simplement par la journalisation gamer hors du jeu), les joueurs peuvent rester sur le même serveur ou être redirigés vers le processus de jumelage, afin de localiser un serveur différent dans le cas où leurs préférences ont changé.

Proxy de données (Windows Azure Storage)

Pour les joueurs déjà connectés au serveur de jeu approprié selon leurs préférences, stocker les requêtes sur la configuration du jeu, équilibre ou toutes autres données relatives à l'utilisateur sont routées via le jeu orchestrator/proxy qui habituellement expose une API avec les opérations les plus courantes sur un référentiel de données. Il existe deux principales décisions à effectuer pour cela : le mécanisme de stockage pour les informations utilisateur et jeu et le cadre permettant d'exposer des services qui sont accessibles par les serveurs de jeu.

Windows Azure offre plusieurs options pour stocker des informations, dont nous avons décrit dans les articles précédents. Selon le nombre et la complexité des requêtes, la structure des données et le niveau de personnalisation nécessaire, vous pouvez choisir parmi des référentiels relationnelles traditionnelles comme les approches de base de données SQL de Windows Azure ou NoSQL comme stockage de table Windows Azure (bit.ly/YrYcQP).

Quel que soit le choix du référentiel, services devant ces informations doivent être exposées de façon reposante, en utilisant des frameworks tels que Windows Communication Foundation (WCF) ou le récent ASP.NET Web API (api/web-asp.net). Ces cadres peuvent être déployés aux services cloud ou VMs.

Windows Azure offre également un service clé en main qui combine la puissance d'une base de données relationnelle dans le nuage avec une API REST robuste et flexible. Il a appelé les Services mobiles de Windows Azure, et c'est un moyen facile pour accélérer le développement de cette pièce de l'architecture du jeu, avec les assistants faciles à suivre et les capacités de mise à l'échelle automatique. On trouvera plus d'informations sur ce service dans notre colonne de novembre 2012, "Windows Azure Services mobiles : Un solide retour fin pour vos Applications de périphérique"(msdn.microsoft.com/magazine/jj721590), ou sur la page officielle de Windows Azure (bit.ly/188Llcg).

Approvisionnement

Le jeu orchestrator/proxy peut aussi servir à la mise en service ou de mise à l'échelle automatique moteur pour ajouter ou supprimer des serveurs de jeu comme ils sont nécessaires. Toutefois, notez que Windows Azure offre maintenant des capacités de mise à l'échelle automatique pour tous les modèles de déploiement différentes, y compris les ordinateurs virtuels, Cloud Services et sites Web.

Notifications

Les joueurs utilisant des appareils mobiles se fient à la réception des notifications quand ils sont hors ligne, particulièrement pour des jeux tour par tour ou basés sur le temps qui exigent le maintien des propriétés virtuelles ou éléments à jour (un concept qui a fait extrêmement fréquente des jeux comme FarmVille). Vous faites face à deux problèmes principaux lors de l'envoi des notifications pour les joueurs mobiles : avoir à tendre la main aux joueurs à l'aide de différentes plateformes sur leurs appareils mobiles et la construction et la maintenance d'une infrastructure capable d'atteindre des millions d'utilisateurs. Heureusement, Windows Azure offre un service appelé Notification Hubs, qui fournit une API commune pour envoyer des notifications push à une variété de plates-formes mobiles, y compris le magasin de Windows, Windows Phone, iOS et Android. Dans le même temps, les notifications push sont envoyées à des millions d'utilisateurs dans les minutes, et non en heures. Figure 3 montre un extrait de code en c# qui envoie une notification simple aux applications Windows Store et iOS à l'aide de plusieurs catégories.

Figure 3 envoi de Notifications au magasin de Windows et iOS les Applications à l'aide de 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);
  }
}

Délégation de responsabilités à d'autres Services (SMTP, Commerce)

Le jeu orchestrator/proxy doit également agir comme passerelle pour accéder à d'autres services, tels que les moteurs pour l'envoi massif de courriels via SMTP, ou le traitement d'images de jeu en temps réel.Le magasin de Windows Azure vous permet de rapidement découvrir, acheter et configurer des applications d'autres partenaires Microsoft.Ces services peuvent être combinés avec des composants de construire des jeux complexes ou ajouter des fonctionnalités qui ne sont pas nativement pris en charge par la plate-forme cloud Windows Azure.Plus d'informations sur le magasin de Windows Azure et un catalogue de services de développeur peuvent être trouvés à bit.ly/1carBrd.

Jeu Google Analytics et données volumineuses

Recueillir, analyser et communiquer les données recueillies à partir des serveurs de jeu sont crucial pour trouver des goulots d'étranglement, amélioration des performances dans le jeu et, pour la monétisation et, déterminer les zones où les joueurs passent leur temps à des fins de publicité.Windows Azure vous permet d'utiliser une approche de MapReduce, appelée HDInsight, comme un service, qui permet l'installation simple et directe de Hadoop clusters.À l'aide de ruche, ou connaissent même des outils tels que Microsoft Office, vous pouvez créer des graphiques et des rapports riches.On trouvera plus d'informations sur ce composant dans notre colonne de septembre 2013, "Hadoop et HDInsight : Les données volumineuses dans Windows Azure » (msdn.microsoft.com/magazine/dn385705).

Pour résumer

Nous avons fait qu'effleurer la surface sur la façon de créer des solutions riches et évolutives pour l'industrie du jeu mobile en combinant plusieurs composants de la plateforme Windows Azure, à répondre aux exigences et besoins créés par les réseaux sociaux et le nombre considérable de joueurs qui sont attirés par ces applications.Le cloud public propose un modèle par répartition souple, qui permet aux entreprises de toutes tailles à participer à cet espace.

Bruno Terkaly est développeur pour Microsoft. Ses connaissances approfondies sont issues d'années d'expérience sur le terrain, au cours desquelles il a écrit du code à l'aide d'une multitude de plateformes, de langages, d'infrastructures, de SDK, de bibliothèques et d'API. 他不辞辛苦,就有关构建基于云的应用程序(特别是使用 Windows Azure 平台)编写代码、发布博客并给予现场演示。 Vous pouvez consulter son blog à l'adresse blogs.msdn.com/b/brunoterkaly.

Ricardo Villalobos est un architecte chevronné avec plus de 15 ans d'expérience en conception et création d'applications pour les entreprises dans plusieurs industries. Maintenant les différentes certifications techniques, mais aussi une maîtrise en administration des affaires de l'Université de Dallas, il travaille comme architecte de nuage dans l'équipe de la DPE des partenaires engagés dans le monde pour Microsoft, qui aide les entreprises dans le monde entier pour mettre en œuvre des solutions dans Windows Azure. Vous pouvez consulter son blog à blog.ricardovillalobos.com.

Terkaly et Villalobos présentent conjointement des conférences de l'industrie dans son ensemble.Ils encouragent les lecteurs de Windows Azure initié à communiquer avec eux pour voir la disponibilité.Terkaly peut être contacté à bterkaly@microsoft.com et Villalobos est joignable au Ricardo.Villalobos@microsoft.com.

Merci à l'expert technique suivant d'avoir relu cet article : Kevin Ashley (Microsoft)
Kevin Ashley travaille chez Microsoft comme architecte et spécialiste technique.Il est l'auteur de Professional Windows 8 programmation : Développement d'applications avec c# et XAML livre et top des applications pour Windows et Windows Phone.Kevin accompagne les startups et partenaires, conseiller sur la stratégie de conception, business et technologie logicielle.Avant Microsoft, il était des fondateurs d'un nuage de stade précoce et le démarrage d'entreprise intelligence logicielle.Dans son rôle en tant qu'architecte et développeur logiciel sénior, Kevin a développé grille, entrepôts de données et solutions de trading en temps réel pour les entreprises Fortune 500 et les hedge funds dans le monde entier : États-Unis, Royaume-Uni, Europe et Asie.Kevin est diplômé en mathématiques, informatique et MBA en Finance.Blog de Kevin: http://kevinashley.com et Twitter : @kashleytwit