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 state-of-the-art 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 paper 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 paper 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 diskreten 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, um beispielsweise die Leistung für Spieler zu verbessern oder Spielern je nach Standort maßgeschneiderte Erlebnisse zu bieten.
Es gibt viele verschiedene Arten von Spielen, und die technische Backend-Infrastruktur, die zur Unterstützung eines Spiels erforderlich ist, hängt von der Art des Spiels ab, das entwickelt wird. Zu den beliebten Arten von Spielen können beispielsweise Ego-Shooter (FPS), Rollenspiele (RPG), MMOG (Massively Multiplayer Online Games), Battle Royales (BR), Sportspiele, Puzzlespiele und mehr gehören. 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 gespielt werden können, darunter Desktop-, Web-, Mobilgeräte, Konsolen und neueren Interaktionsmodi wie Augmented Reality (AR), Virtual Reality (VR) und Game-Streaming-Lösungen. 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, Einnahmen zu erzielen, indem sie verschiedene Strategien wie Werbung, digitale und Einzelhandelskäufe, In-Game-Käufe von herunterladbaren Inhalten (DLC), sogenannten Mikrotransaktionen, und durch kostenpflichtige Abonnements, die für das Spielen des Spiels erforderlich sind, einsetzen. 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)
-
Lebenszeitwert des Spielers (LTV)
-
Durchschnittlicher Umsatz pro Nutzer (ARPU)
Spielsystem
Videospiele wurden für das Spielen auf einem Spielesystem entwickelt, das Bedienelemente für die Client-Eingabe, Grafiken, Client-Software (bekannt als Spieleclient) 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: Speziell entwickelte Unterhaltungssysteme, die für das Spielen von Spielen entwickelt wurden, darunter beliebte Beispiele wie Sony PlayStation, Microsoft Xbox und Nintendo Switch. Konsolen bieten die Möglichkeit, Spiele zu spielen, indem physische oder digital verteilte Spielinhalte auf der vom Spielesystemanbieter hergestellten Konsolenhardware installiert werden. In dieser Definition kann eine Konsole tragbar oder stationär sein und für den Einsatz in einem Home-Entertainment-Szenario vorgesehen sein.
-
Personal Computer (PC): Spiele, die mit Computersoftware gespielt werden, die auf einem Client-Computer installiert ist und vom Spieler angepasst werden kann. Aus diesem Grund sind PC-Spiele bei Spielern aufgrund der Flexibilität und Kontrolle, die sie bieten, 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.
-
Mobilgeräte: Spiele, die für das Spielen auf einem Mobiltelefon, in der Regel einem Smartphone-Betriebssystem, entwickelt wurden. Handyspiele werden normalerweise aus einem digitalen App Store heruntergeladen und auf dem Telefon installiert.
Zusätzlich zu den zuvor genannten Systemen gibt es auch Systeme im Entstehen, die noch relativ neu sind und weiter wachsen 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 Game-Streaming wird das Gameplay in der Cloud gerendert und auf einen Thin Client, in der Regel einen Browser, gestreamt. Game-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 cloudbasierten Spiel her.
Spieleserver
Spieleserver stellen einen der wichtigsten Aspekte der Recheninfrastruktur für Ihr Spiel dar. Spieleserver, manchmal auch als dedizierte Spieleserver bezeichnet, werden verwendet, wenn ein Multiplayer-Spiel entwickelt wird oder wenn eine servergestützte Verarbeitung von Gameplay-Ereignissen erforderlich ist. Der Spieleserver steht im Mittelpunkt der Spielarchitektur und dient als Standort, an dem die Kernlogik ausgeführt wird. Dazu gehören die Verwaltung des Spieler- und Spielstatus sowie die Verwaltung der Interaktionen zwischen den verbundenen Spielclients und dem Spieleserver. Der Spieleserver ist normalerweise einer der leistungsempfindlichsten Aspekte einer Spielarchitektur, da er dafür verantwortlich ist, die Eingaben vom Spielclient eines Spielers zu verarbeiten und sie ordnungsgemäß in Echtzeit an andere verbundene Spieler zu verteilen. Ein Spieleserver mit schlechter Leistung beeinträchtigt die Gesamtleistung des Spielerlebnisses. Daher solltest du die Leistung des Spieleservers optimieren und ausreichend Kapazität bereitstellen, insbesondere zu Spielstarts oder zu Spitzenzeiten des Spiels.
Für die Zwecke dieses Dokuments bezieht sich ein Spieleserver oder eine Spieleserver-Instanz auf den Computer, z. B. eine virtuelle Maschine, der einen oder mehrere Spielserverprozesse hostet. Ein Gameserver-Prozess stellt eine einzelne Instanz Ihres Gameserver-Builds dar, die eine Spielsitzung hostet. Dabei handelt es sich um eine Instanz Ihres laufenden Spiels, mit der sich Spieler über eine Spielersitzung verbinden können. Aus diesem Grund beziehen wir uns oft synonym auf Gameserver-Prozess oder Spielsitzung, da es eine direkte Beziehung zwischen einer Spielsitzung und dem Gameserver-Prozess gibt, der sie hostet. In gibt es mehrere Optionen für die Datenverarbeitung AWS, um Spieleserver zu hosten, die durch die elastische Bereitstellung von Ressourcen Zugriff auf skalierbare Cloud-basierte Kapazitäten bieten.
Amazon EC2 bietet cloudbasierte virtuelle Server, sogenannte Instances, mit Unterstützung für mehrere Versionen von Linux und Windows. Sie können Instances erstellen und sie wie einen anderen Server oder eine virtuelle Maschine direkt 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 Computerinfrastruktur 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 EC2 zu Amazon 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 durch die Verwendung von Spot-Instances erheblich zu senken. Es GameLift kann zwar in bestehende Spiele-Backends integriert werden, ist aber besonders nützlich für Spieleentwickler, die keine eigenen Gameserver-Management- und Matchmaking-Lösungen entwickeln möchten und eine Lösung bevorzugen, die von ihrem Spiel verwaltet wird AWS und skaliert werden kann, wenn ihr Spiel wächst.
Amazon Elastic Container Service (Amazon ECS) ist ein vollständig verwalteter Container-Orchestrierungsservice, mit dem Sie Docker-basierte Container ausführen können. Sie können auch Amazon Elastic Kubernetes Service (Amazon EKS) verwenden, um Docker-basierte Container auszuführen, die mit Kubernetes erstellt wurden. Die Verwendung von Container-Technologien, wie sie von Amazon ECS und Amazon EKS bereitgestellt werden, kann Ihnen helfen, Ihre Rechenauslastung zu 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 verwendet haben. Sie können den Betriebsaufwand weiter reduzieren AWS Fargate, indem Sie, eine serverlose Rechenlösung für den Betrieb 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 dafür verantwortlich zu sein, die zugrunde liegenden Instanzen zu betreiben, auf denen die Container laufen.
Sie können AWS Outposts damit AWS Infrastruktur und Dienste in einem Rechenzentrum oder einer lokalen Einrichtung ausführen, sodass Spiele in lokalen Umgebungen ausgeführt werden können und dieselbe Infrastruktur zur Unterstützung einer Hybrid-Cloud-Einführungsstrategie AWS verwendet werden kann. AWS Local Zones dienen als Erweiterungen AWS-Regionen , die es Ihren Spieleservern und anderen latenzempfindlichen Workloads ermöglichen, näher an Ihren Spielern oder Entwicklungsteams zu arbeiten. 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, was ihn für asynchrone Spieleserver-Anwendungsfälle wie rundenbasierte Spiele oder solche mit geringen Rechenanforderungen und einer kleinen Codebasis nützlich macht und bei denen Gameplay-Funktionen mithilfe einer statusfreien 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 die meisten Laufzeitabstraktionen der Optionen in diesem paper, da die zugrunde liegende Anwendung für Entwickler leicht verfügbar ist, aus der sie wählen können, um ihren Code zu hosten.
Bei der Auswahl Ihres Ansatzes für das Hosting von Spieleservern sollten Sie verschiedene Anforderungen berücksichtigen, darunter den betrieblichen Aufwand, ältere Codebasen, Leistungsanforderungen und Skalierbarkeit. EC2Instances und Container sind gute Optionen für ältere Codebasen, da sie die geringste Änderung erfordern, um in die Cloud zu wechseln. Sie können EC2 Instances verwenden, um die Ressourcen einer Recheninstanz zuzuweisen, während Container die Verwaltung und eine hohe Auslastung vereinfachen können. Serverlose Funktionen bieten die höchste Abstraktionsebene, mit der Sie Code definieren können, der nur als Reaktion auf Ereignisse ausgeführt wird, wodurch die Kosten gesenkt werden können.
Spiele-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, und er ist dafür verantwortlich, die eingehenden Antworten vom Server zu verarbeiten und Ausgaben wie Grafiken für den Spieler wiederzugeben. Bei vernetzten Mehrspieler-Spielen in Echtzeit unterhält der Spielclient normalerweise für die Dauer einer Spielsitzung eine permanente Netzwerkverbindung zu einem Spieleserver, um die Netzwerklatenz zu reduzieren und die Verarbeitungszeit zu minimieren. Der Spielclient kann jedoch auch über 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 Benutzerkohorte richten, z. B. Spieleinladungen oder Push-Benachrichtigungen
-
Gruppennachrichten zwischen Spielern, z. B. Chat im Spiel
-
ervice-to-serviceS-Messaging, z. B. JSON-Nachrichten, die zur Integration von zwei oder mehr Anwendungen verwendet werden
Eine gängige Strategie für das Senden und Empfangen dieser Arten von Nachrichten besteht in der Verwendung von Architekturmustern für Publisher-Subscriber und asynchrone Verarbeitung. AWS bietet mehrere Dienste, die Sie bei der Implementierung von Messaging in Ihrem Spiel unterstützen können.
-
Amazon Simple Notification Service (SNS): Verwalteter Service 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 abonnierte Anwendungen übermittelt und Push-Benachrichtigungen direkt an mobile Clients oder Desktops senden kann, wobei einige der am häufigsten verwendeten Push-Benachrichtigungsdienste unterstützt werden. Amazon SNS kann sowohl für Push-Benachrichtigungen an Kunden als auch für service-to-service Messaging-Anwendungsfälle verwendet werden.
-
Amazon Simple Queue Service (SQS): Ein vollständig verwalteter Warteschlangenservice, der es einfach macht, Spieleserver und Ihr Spiel zu integrieren, unabhängig von der jeweils verwendeten Programmiersprache. Viele Aufgaben im Spiel 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 Funktionen für Spieler unabhängig von der Backend-Verarbeitung zu skalieren.
-
Amazon Managed Streaming for Apache Kafka (MSK): Ein vollständig verwalteter Service, 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 Nachrichtenübermittlungen verwendet werden. service-to-service
-
Amazon ElastiCache (Redis OSS): Bietet einen vollständig verwalteten In-Memory-Datenspeicher, der Unterstützung für die beliebte pub/sub Funktion von Redis bietet, die häufig für die Entwicklung von Chatroom-Anwendungen und Hochleistungs-Messaging verwendet wird. service-to-service Redis unterstützt auch umfangreiche Datentypen wie Listen und Gruppen, sodass Entwickler Redis für Hochleistungswarteschlangen 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 Benutzerinteraktion zu senden, um sie wieder zum Spiel einzuladen, und kann für transaktionale Anwendungsfälle wie die Unterstützung von Multi-Faktor-Authentifizierungstoken, Auftragsbestätigungen und E-Mails zum Zurücksetzen von Passwörtern verwendet werden.
Live-Spielbetrieb (Live Ops)
Live-Spielbetrieb (Live Ops) ist eine Art der Spielverwaltung und des Betriebs, bei der ein Spiel als Live-Service behandelt wird und kontinuierlich neue Funktionen, Updates, Werbeaktionen, In-Game-Events und Verbesserungen für das veröffentlichte Spiel bereitgestellt werden, um das Spielerlebnis für die Spielergemeinschaft zu verbessern.
Traditionell wurden Spiele als Produkte und nicht als Dienstleistungen bereitgestellt, und neue Inhalte und Funktionen wurden häufig eher in nachfolgende Veröffentlichungen oder Fortsetzungen als in das eingeführte Produkt integriert. Mit einem Live-Ops-Ansatz für das Spielmanagement kann ein Game Operations Team 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, neue Strategien zur Spielerbindung zu erschließen und wiederkehrende Einnahmequellen zu erschließen, 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. Sie benötigen auch eine effektive Methode, um Probleme zu identifizieren und darauf zu reagieren, die im Spiel oder in der Spielergemeinschaft auftreten und sich negativ auf das Spielerlebnis auswirken können.