Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Definitionen
Das AWS Well-Architected Framework basiert auf sechs Säulen: betriebliche Exzellenz, Sicherheit, Zuverlässigkeit, Leistungseffizienz, Kostenoptimierung und Nachhaltigkeit. AWS bietet mehrere Kernkomponenten, mit denen Sie hochmoderne Architekturen für Ihre Spiele-Workloads entwerfen können. In diesem Abschnitt geben wir einen Überblick über die wichtigsten Definitionen.
Für die Zwecke dieses Artikels umfasst eine Spielarchitektur die technische Backend-Infrastruktur, die für die Entwicklung und den Betrieb eines Spiels erforderlich ist. Einige Spiele verfügen möglicherweise nicht über soziale Funktionen, Multiplayer- oder andere Online-Funktionen und erfordern möglicherweise nicht die Verwendung bestimmter Aspekte der technischen Backend-Infrastruktur, die in diesem Dokument beschrieben werden. Eine ausführliche Erläuterung der verschiedenen Arten von Workloads, die häufig zur Unterstützung einer Spielarchitektur eingesetzt werden, finden Sie unter Szenarien.
Die AWS Cloud Infrastruktur basiert auf Regionen und Availability Zones.
-
Eine Region ist ein physischer Standort auf der Welt, an dem wir mehrere Availability Zones haben.
-
Availability Zones bestehen aus einem oder mehreren separaten Rechenzentren, die jeweils über redundante Stromversorgung, Netzwerke und Konnektivität verfügen und in separaten Einrichtungen untergebracht sind.
Abhängig von den Eigenschaften Ihres Spiels möchten Sie möglicherweise bestimmte Komponenten Ihrer Spielarchitektur in mehreren Regionen einsetzen, z. B. um die Leistung der Spieler zu verbessern oder um Spielern je nach Standort ein maßgeschneidertes Spielerlebnis zu bieten.
Es gibt viele verschiedene Arten von Spielen, und die technische Backend-Infrastruktur, die zur Unterstützung eines Spiels erforderlich ist, unterscheidet sich je nach Art des Spiels, das entwickelt wird. Zu den beliebten Spieltypen gehören beispielsweise Ego-Shooter (FPS), Rollenspiele (RPG), Massive-Multiplayer-Onlinespiele (MMOG), Battle Royales (BR), Sportspiele, Puzzlespiele und mehr. Es gibt auch verschiedene Spielinteraktionsmodi, die die Architektur des Spiels beeinflussen, z. B. rundenbasiertes und gleichzeitiges Spielen mit unterschiedlichen Leistungsmerkmalen.
Spiele wurden so entwickelt, dass sie auf einem oder mehreren Spielesystemen wie Desktop, Web, Handy, Konsolen und neueren Interaktionsmodi wie Augmented Reality (AR), Virtual Reality (VR) und Game-Streaming-Lösungen gespielt werden können. Spiele unterstützen in der Regel systemübergreifendes Gameplay, was bedeutet, dass Spieler ihren Spielfortschritt speichern und das Spiel auf anderen Systemen fortsetzen sowie Spielsitzungen mit Spielern auf anderen Systemen starten können.
Die Monetarisierung von Videospielen ermöglicht es Spieleverlagen, mithilfe verschiedener Strategien wie Werbung, digitalen und im Einzelhandel getätigten Spielekäufen, Ingame-Käufen herunterladbarer Inhalte (DLC), sogenannten Mikrotransaktionen, Einnahmen zu generieren, und durch kostenpflichtige Abonnements, um das Spiel spielen zu können. Zu den gängigsten Leistungsindikatoren (KPIs) in der Spielebranche gehören:
-
Aktive Benutzer pro Tag (DAU)
-
Aktive Benutzer pro Monat (MAU)
-
Gleichzeitige Benutzer (CCU)
-
Sitzungsdauer
-
Kosten pro Installation (CPI)
-
Lebensdauerwert für Spieler (LTV)
-
Durchschnittlicher Umsatz pro Nutzer (ARPU)
Spielsystem
Videospiele wurden für das Spielen auf einem Spielesystem entwickelt, das vom Client Eingabesteuerungen, Grafiken, Client-Software (bekannt als Spielclient) und Hardware sowie in einigen Fällen systemexklusive Funktionen zur Unterstützung des Gameplays bietet.
Spielesysteme werden im Allgemeinen in die folgenden Kategorien unterteilt:
-
Konsolen: Purpose-built Unterhaltungssysteme, die zum Spielen von Spielen konzipiert sind, darunter beliebte Konsolen wie Sony PlayStation, Microsoft Xbox und Nintendo Switch. Konsolen bieten die Möglichkeit, Spiele zu spielen, indem sie physische oder digital verteilte Spielinhalte auf der Konsolenhardware installieren, die vom Anbieter des Spielesystems hergestellt wird. Gemäß dieser Definition kann es sich bei einer Konsole um ein tragbares oder stationäres Gerät handeln, das für den Einsatz in einem Home-Entertainment-Szenario vorgesehen ist.
-
Personalcomputer (PC): Spiele, die mit einer Computersoftware gespielt werden, die auf einem Client-Computer installiert ist und vom Spieler angepasst werden kann. Aus diesem Grund sind PC-Spiele aufgrund der Flexibilität und Kontrolle, die sie bieten, bei Spielern beliebt.
-
Web: Spiele, die so konzipiert sind, dass sie mit einem Webbrowser gespielt werden können und die in der Regel den Vorteil bieten, dass ein Spieler unabhängig von seinem Betriebssystem auf das Spiel zugreifen kann.
-
Mobil: Spiele, die für das Spielen auf einem Mobiltelefon entwickelt wurden, in der Regel mit einem Smartphone-Betriebssystem. Handyspiele werden normalerweise aus einem digitalen App Store heruntergeladen und auf dem Telefon installiert.
Zusätzlich zu den zuvor genannten Systemen gibt es auch im Entstehen begriffene Systeme, die noch relativ neu sind und im Wachstum begriffen sind und im Vergleich zu den vorherrschenden Systemen einen viel geringeren Marktanteil haben. Beispiele für Spielesysteme in dieser Kategorie sind AR, VR und Game-Streaming, manchmal auch als Cloud-Gaming bezeichnet.
Beim Spiele-Streaming wird das Gameplay in der Cloud gerendert und auf einen Thin Client, in der Regel ein Browser, gestreamt. Spiele-Streaming ermöglicht es einem Spieler, ein Spiel zu spielen, das vollständig remote gehostet wird, typischerweise in der Cloud von einem Game-Streaming-Dienstanbieter. Beim Game-Streaming stellt der Spieler über einen Browser oder einen Thin Client, der vom Cloud-Gaming-Dienstanbieter (Spielesystem) bereitgestellt wird, eine Verbindung zu einem Cloud-basierten Spiel her.
Spieleserver
Spieleserver stellen einen der wichtigsten Aspekte der Recheninfrastruktur für dein Spiel dar. Spieleserver, manchmal auch als dedizierte Spieleserver bezeichnet, werden bei der Entwicklung eines Multiplayer-Spiels verwendet oder wenn eine serverseitige Verarbeitung von Spielereignissen erforderlich ist. Der Spielserver ist das Zentrum der Spielarchitektur und dient als Ort, an dem die Kernlogik abläuft. Dazu gehören die Verwaltung des Spieler- und Spielstatus sowie die Verwaltung der Interaktionen zwischen den verbundenen Spielclients und dem Spielserver. Der Spieleserver ist normalerweise einer der leistungsempfindlichsten Aspekte einer Spielarchitektur, da er dafür verantwortlich ist, die Eingaben des Spielclients eines Spielers zu verarbeiten und sie in Echtzeit ordnungsgemäß an andere verbundene Spieler zu verteilen. Ein Spieleserver mit schlechter Leistung beeinträchtigt die Gesamtleistung des Spielerlebnisses. Daher sollten Sie die Leistung des Spielservers optimieren und ausreichend Kapazität bereitstellen, insbesondere bei Spielstarts oder zu Spitzenzeiten.
Für die Zwecke dieses Dokuments bezieht sich ein Spieleserver oder eine Spieleserverinstanz auf den Computer, z. B. eine virtuelle Maschine, auf der ein oder mehrere Spieleserverprozesse gehostet werden. Ein Spieleserverprozess stellt eine einzelne Instanz Ihres Spieleserver-Builds dar, die eine Spielsitzung hostet. Dabei handelt es sich um eine Instanz Ihres laufenden Spiels, zu der sich Spieler über eine Spielersitzung verbinden können. Aus diesem Grund bezeichnen wir den Spieleserverprozess oder die Spielesitzung oft synonym, da eine implizite Eins-zu-Eins-Beziehung zwischen einer Spielsitzung und dem Spieleserverprozess, der sie hostet, besteht. Es gibt mehrere Optionen für die Datenverarbeitung zum Hosten von Spieleservern, die durch eine elastische Bereitstellung von Ressourcen Zugriff auf skalierbare Cloud-basierte Kapazitäten ermöglichen. AWS
Amazon EC2 bietet cloudbasierte virtuelle Server, sogenannte Instances, mit Unterstützung für mehrere Versionen von Linux und Windows. Sie können Instanzen erstellen und sie direkt wie einen anderen Server oder eine virtuelle Maschine verwalten. In der Regel werden mehrere Spieleserverprozesse auf einer Instanz bereitgestellt, um die Effizienz zu verbessern und die Kosten zu senken. Amazon EC2 ist eine gute Wahl für Spieleserver, wenn Sie die größtmögliche Kontrolle über die Recheninfrastruktur wünschen.
Amazon GameLift bietet eine vollständig verwaltete Lösung für das Hosting von dedizierten Spieleservern in der Cloud sowie zusätzliche Funktionen wie Matchmaking mit. GameLift FlexMatch GameLiftbietet zusätzlich zu Amazon EC2 eine Abstraktionsebene, um die Verwaltung von Spieleservern zu vereinfachen, und ist in den meisten Fällen verfügbar, AWS-Regionen sodass Sie Spieleserver in der Nähe von Spielern hosten können, um die Latenz zu reduzieren, eine hohe Verfügbarkeit zu erreichen und die Kosten mithilfe von Spot-Instances erheblich zu senken. Es GameLift kann zwar in bestehende Spiel-Backends integriert werden, ist aber besonders nützlich für Spieleentwickler, die keine eigenen Lösungen für Gameserver-Management und Matchmaking entwickeln möchten und eine Lösung bevorzugen, die von ihnen verwaltet wird AWS und mit dem Wachstum ihres Spiels skaliert werden kann.
Amazon Elastic Container Service (Amazon ECS) ist ein vollständig verwalteter Container-Orchestrierungsservice, den Sie zum Ausführen von Containern verwenden können. Docker-based Sie können Amazon Elastic Kubernetes Service (Amazon EKS) auch verwenden, um Docker-based Container auszuführen, die mit Kubernetes erstellt wurden. Mithilfe von Container-Technologien, wie sie von Amazon ECS und Amazon EKS bereitgestellt werden, können Sie Ihre Rechenauslastung verbessern, indem Sie viele Spieleserverprozesse oder andere Spielanwendungsinstanzen effizient in eine EC2-Instance packen.
Die Verwendung von Containern kann auch die Produktivität von Entwicklern verbessern, indem Anwendungen mit derselben Docker-Image-Betriebslaufzeit gehostet werden, die Entwickler während der Entwicklung auf ihren lokalen Computern verwenden. Sie können den Betriebsaufwand weiter reduzieren AWS Fargate, indem Sie eine serverlose Rechenlösung zum Ausführen von Containern verwenden, die sowohl mit Amazon EKS als auch mit Amazon ECS kompatibel ist. Fargate eignet sich am besten für Anwendungsfälle, in denen Sie Spieleserver in Containern ausführen möchten, ohne für den Betrieb der zugrunde liegenden Instances verantwortlich zu sein, auf denen die Container ausgeführt werden.
Sie können AWS Outposts es verwenden, um AWS Infrastruktur und Dienste in einem Rechenzentrum oder einer lokalen Einrichtung auszuführen. Dadurch können Spiele in lokalen Umgebungen ausgeführt und dieselbe Infrastruktur AWS verwendet werden, um eine Strategie zur Einführung einer Hybrid-Cloud zu unterstützen. AWS Lokale Zonen dienen als Erweiterungen AWS-Regionen , sodass Ihre Spieleserver und andere latenzempfindliche Workloads enger mit Ihren Spielern oder Entwicklungsteams zusammenarbeiten können. Um die globale Netzwerklatenz für Ihre Spieleserver zu reduzieren, können Sie außerdem AWS Global Accelerator verwenden, um die Leistung des Spielerverkehrs zu Ihren Spieleservern zu verbessern.
AWS Lambda ist ein serverloser Rechendienst, der Code ausführt, ohne Server bereitzustellen oder zu verwalten. Daher eignet er sich für asynchrone Spieleserver-Anwendungsfälle wie rundenbasierte Spiele oder Spiele mit geringen Rechenanforderungen, einer kleinen Codebasis und bei denen Gameplay-Funktionen mithilfe einer zustandslosen Microservices-Architektur entworfen werden können. Es ist wichtig zu bedenken, dass Lambda-Funktionen ereignisgesteuert und pro Anfrage ausgeführt werden, anstatt einen lang andauernden Spieleserverprozess auszuführen. Lambda bietet im Vergleich zu den Optionen in diesem Dokument die meiste Laufzeitabstraktion, da die zugrunde liegende Anwendung Entwicklern zur Verfügung steht, aus der sie ihren Code hosten können.
Berücksichtigen Sie bei der Auswahl Ihres Ansatzes für das Hosting von Spieleservern verschiedene Anforderungen, darunter den Betriebsaufwand, ältere Codebasen, Leistungsanforderungen und Skalierbarkeit. EC2-Instances und Container sind gute Optionen für ältere Codebasen, da sie die geringste Änderung erfordern, um in die Cloud zu migrieren. Sie können EC2-Instances verwenden, um die Ressourcen einer Recheninstanz zu dedizieren, während Container die Verwaltung und eine hohe Auslastung vereinfachen können. Serverlose Funktionen bieten ein Höchstmaß an Abstraktion, mit dem Sie Code definieren können, der nur als Reaktion auf Ereignisse ausgeführt wird, was die Kosten senken kann.
Spiel-Client
Der Spielclient stellt das Software- und Hardwaregerät dar, das der Spieler zum Spielen eines Spiels verwendet. Der Spielclient stellt die Software bereit, mit der die Eingaben des Spielers in Nachrichten übersetzt werden, die zur Verarbeitung an einen Server gesendet werden. Er ist für die Verarbeitung der vom Server eingehenden Antworten und das Rendern von Ausgaben wie Grafiken für den Spieler verantwortlich. Bei Multiplayer-Spielen im Netzwerk in Echtzeit unterhält der Spielclient in der Regel für die Dauer einer Spielsitzung eine permanente Netzwerkverbindung zu einem Spielserver, um die Netzwerklatenz zu reduzieren und die Verarbeitungszeit zu minimieren. Der Spielclient kann jedoch auch mithilfe von REST mit einem Spieleserver oder Backend-Diensten interagieren.
Messaging
In Spielen gibt es in der Regel drei Hauptkategorien von Nachrichten:
-
Nachrichten zur Spielerbindung, die sich an einen bestimmten Nutzer oder eine bestimmte Nutzerkohorte richten, wie Spieleinladungen oder Push-Benachrichtigungen
-
Gruppennachrichten zwischen Spielern, z. B. im Spielchat
-
Service-to-serviceNachrichten, wie JSON-Nachrichten, die zur Integration von zwei oder mehr Anwendungen verwendet werden
Eine gängige Strategie für das Senden und Empfangen dieser Art von Nachrichten ist die Verwendung von Architekturmustern für Publisher-Subscriber und asynchrone Verarbeitung. AWS bietet verschiedene Dienste, die Sie bei der Implementierung von Nachrichten in Ihrem Spiel unterstützen können.
-
Amazon Simple Notification Service (SNS): Verwalteter Dienst für die Zustellung von Nachrichten zwischen Herausgebern und Abonnenten mithilfe eines pub/sub Architekturmusters. Herausgeber senden Nachrichten über eine API an Amazon SNS, das die Nachrichten asynchron an abonnierende Anwendungen übermittelt und Push-Benachrichtigungen direkt an mobile Clients oder Desktops senden kann. Dabei werden einige der am häufigsten verwendeten Push-Benachrichtigungsdienste unterstützt. Amazon SNS kann sowohl für Push-Benachrichtigungen an Kunden als auch für Service-to-Service-Messaging-Anwendungen verwendet werden.
-
Amazon Simple Queue Service (SQS): Ein vollständig verwalteter Warteschlangenservice, mit dem Sie Spieleserver und Ihr Spiel problemlos integrieren können, unabhängig von der jeweils verwendeten Programmiersprache. Viele Spielaufgaben können entkoppelt und im Hintergrund erledigt werden, z. B. das Aktualisieren einer Bestenliste oder der Spielzeitwerte in einer Datenbank. Dieser Ansatz ist eine effektive Methode, um verschiedene Teile Ihres Spiels zu entkoppeln und die spielerorientierten Funktionen unabhängig von der Backend-Verarbeitung zu skalieren.
-
Amazon Managed Streaming for Apache Kafka (MSK): Ein vollständig verwalteter Dienst, der die Erstellung von Datenstreaming- und Produzenten- oder Verbraucheranwendungen mithilfe von Apache Kafka, einer beliebten Open-Source-Lösung, vereinfacht. Kafka wird in der Regel für die Aufnahme und Verarbeitung von Echtzeit-Streaming-Daten verwendet und kann für Service-to-Service-Messaging verwendet werden.
-
Amazon ElastiCache (Redis OSS): Bietet einen vollständig verwalteten In-Memory-Datenspeicher, der die beliebte pub/sub Funktion von Redis unterstützt, die häufig für die Entwicklung von Chatroom-Anwendungen und leistungsstarkem Service-to-Service-Messaging verwendet wird. Redis unterstützt auch umfangreiche Datentypen wie Listen und Sets, sodass Entwickler Redis für leistungsstarke Warteschlangen verwenden können.
-
Amazon Pinpoint: Bietet Nachrichten zur Benutzerinteraktion per E-Mail, SMS, Sprach- und Push-Benachrichtigungen. Amazon Pinpoint kann beispielsweise verwendet werden, um Spielern Nachrichten zur Nutzerbindung zu senden, um sie zurück zum Spiel einzuladen, und kann für transaktionale Anwendungsfälle wie die Unterstützung von Multifaktor-Authentifizierungstoken, Auftragsbestätigungen und E-Mails zum Zurücksetzen des Passworts verwendet werden.
Live-Spielbetrieb (Live Ops)
Live-Spielbetrieb (Live Ops) ist ein Stil der Spielverwaltung und des Spielbetriebs, der ein Spiel als Live-Service behandelt und kontinuierlich neue Funktionen, Updates, Werbeaktionen, In-Game-Events und Verbesserungen für das veröffentlichte Spiel bereitstellt, um das Spielerlebnis für die Spielergemeinschaft zu verbessern.
Traditionell wurden Spiele als Produkte und nicht als Dienste bereitgestellt, und neue Inhalte und Funktionen wurden häufig in nachfolgende Veröffentlichungen oder Fortsetzungen integriert und nicht in das eingeführte Produkt. Bei einem Live-Ops-Ansatz für das Spielmanagement kann ein Spielbetriebsteam ein Spiel auf den Markt bringen und durch Experimente, Werbeaktionen, In-Game-Events und Innovationen eine engagierte Spielergemeinschaft aufrechterhalten, um die Spieler zu unterhalten.
Dieser Ansatz hat zwar den Vorteil, dass er Strategien zur Einbindung neuer Spieler erschließt und wiederkehrende Einnahmequellen erschließt, erfordert jedoch mehr operatives Fachwissen. Um beispielsweise eine erfolgreiche Live-Ops-Strategie umzusetzen, muss ein Entwickler möglicherweise Cloud-Dienste integrieren oder seine eigene technische Backend-Infrastruktur betreiben. Außerdem benötigen sie eine effektive Methode, um Probleme zu erkennen und darauf zu reagieren, die im Spiel oder innerhalb der Spielergemeinschaft auftreten und sich negativ auf das Spielerlebnis auswirken können.