View a markdown version of this page

定义 - 游戏行业镜头

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

定义

该 AWS Well-Architected 框架基于六大支柱:卓越运营、安全性、可靠性、绩效效率、成本优化和可持续性。 AWS 提供多个核心组件,允许您为游戏工作负载设计最先进的架构。在本节中,我们将概述关键定义。

就本文而言,游戏架构包括构建和运行游戏所需的后端技术基础架构。有些游戏可能没有社交、多人游戏或其他在线功能,可能不需要使用本文中描述的后端技术基础设施的某些方面。有关为支持游戏架构而经常部署的不同类型的工作负载的详细讨论,请参阅场景。

该 AWS Cloud 基础设施围绕区域和可用区构建。

  • 区域是世界上有多个可用区的物理位置。

  • 可用区由一个或多个离散的数据中心组成,每个数据中心都具有冗余电源、网络和连接,位于不同的设施中。

根据游戏的特点,您可能需要将游戏架构的某些组件部署到多个区域,例如提高玩家的性能,或者根据玩家的位置为他们提供定制的体验。

游戏有许多不同类型,支持游戏所需的后端技术基础设施因开发的游戏类型而异。例如,流行的游戏类型可能包括第一人称射击游戏 (FPS)、角色扮演游戏 (RPG)、大型多人在线游戏 (MMOG)、大逃杀 (BR)、体育游戏、益智游戏等。还有不同的游戏交互模式会影响游戏的架构,例如回合制和同步游戏,具有不同的性能特征。

游戏是为在一个或多个游戏系统上玩而开发的,包括桌面、网络、手机、游戏机以及更新的交互模式,例如增强现实 (AR)、虚拟现实 (VR) 和游戏流媒体解决方案。游戏通常支持跨系统游戏,这意味着玩家可以保存游戏进度并在其他系统上恢复游戏,也可以与其他系统上的玩家启动游戏会话。

电子游戏货币化使游戏发行商能够使用不同的策略来创造收入,例如广告、数字和零售类游戏购买、游戏内购买可下载内容(DLC)(称为微交易),以及通过所需的付费订阅才能玩游戏。游戏行业中一些最常见的关键绩效指标 (KPI) 包括:

  • 每日活跃用户 (DAU)

  • 月活跃用户 (MAU)

  • 并行用户 (CCU)

  • 会话持续时间

  • 每次安装成本 (CPI)

  • 玩家终身价值 (LTV)

  • 每位用户的平均收入 (ARPU)

游戏系统

电子游戏是为在游戏系统上玩而开发的,该游戏系统提供客户端输入控件、图形、客户端软件(称为游戏客户端)和硬件,在某些情况下还提供支持游戏玩法的系统专有功能。

游戏系统通常分为以下几类:

  • 游戏机:专为玩游戏而设计的 Purpose-built 娱乐系统,包括索尼 PlayStation、微软 Xbox 和任天堂 Switch 等流行的游戏机。游戏机通过将物理或数字分发的游戏内容安装到游戏系统提供商制造的主机硬件上来提供玩游戏的能力。在此定义中,游戏机可以是手持式的,也可以是固定式的,旨在用于家庭娱乐场景。

  • 个人计算机 (PC):使用安装在客户端计算机上的计算机软件玩的游戏,玩家可以对其进行自定义。出于这个原因,电脑游戏因其提供的灵活性和控制性而在玩家中很受欢迎。

  • 网页:专为使用网络浏览器玩而设计的游戏,其优势通常是让玩家无论使用何种操作系统都能访问游戏。

  • 手机:专为在手机(通常是智能手机操作系统)上玩而开发的游戏。手机游戏通常从数字应用商店下载并安装到手机上。

除了前面提到的系统外,还有一些新兴的系统,与占主导地位的系统相比,这些系统仍然相对较新且不断增长,市场份额要小得多。此类别游戏系统的示例包括增强现实、虚拟现实和游戏直播,有时也称为云游戏。

游戏直播包括在云端渲染游戏玩法,并流式传输到精简客户端(通常是浏览器)。游戏直播允许玩家玩完全远程托管的游戏,通常由游戏流媒体服务提供商在云端托管。在游戏直播中,玩家通过云游戏服务提供商(游戏系统)提供的浏览器或瘦客户机连接到基于云的游戏。

游戏服务器

游戏服务器是游戏计算基础设施中最重要的方面之一。游戏服务器,有时也称为专用游戏服务器,用于开发多人游戏或需要服务器对游戏事件进行授权处理时。游戏服务器是游戏架构的中心,是运行核心逻辑的位置,包括管理玩家和游戏状态以及管理连接的游戏客户端和游戏服务器之间的交互。游戏服务器通常是游戏架构中对性能最敏感的方面之一,因为它负责处理来自玩家游戏客户端的输入,并将其实时正确地分发给其他连接的玩家。性能不佳的游戏服务器会影响游戏体验的整体性能。因此,你应该优化游戏服务器性能并提供足够的容量,尤其是在游戏发布或游戏高峰期。

就本文档而言,游戏服务器或游戏服务器实例是指托管一个或多个游戏服务器进程的计算机,例如虚拟机。游戏服务器进程代表您的游戏服务器版本中托管游戏会话的单个实例,该实例是您正在运行的游戏的实例,玩家可以通过玩家会话连接到该实例。出于这个原因,我们经常交替使用游戏服务器进程或游戏会话,因为游戏会话与托管该会话的游戏服务器进程之间隐含着一对一的关系。在中 AWS,有多种计算方式可供托管游戏服务器,这些服务器通过弹性资源配置提供对基于云的可扩展容量的访问。

Amazon EC2 提供基于云的虚拟服务器,即实例,支持多个版本的 Linux 和 Windows。您可以创建实例并像管理其他服务器或虚拟机一样直接管理它们。通常,将多个游戏服务器进程部署到一个实例以提高效率和降低成本。如果您希望最大限度地控制计算基础设施,Amazon EC2 是游戏服务器的不错选择。

亚马逊 GameLift 为云端的专用游戏服务器托管提供了完全托管的解决方案,并提供了其他功能,例如配对 GameLift FlexMatch. GameLift在 Amazon EC2 之上提供一个抽象层,使游戏服务器管理变得简单,并且在大多数情况下都可用, AWS 区域 因此您可以使用竞价型实例将游戏服务器托管在玩家附近,从而减少延迟、实现高可用性并显著降低成本。虽然 GameLift 可以集成到现有的游戏后端中,但它对于不想开发自己的游戏服务器管理和配对解决方案,而是更喜欢由游戏管理 AWS 并可以随着游戏增长而扩展的解决方案的游戏开发者特别有用。

亚马逊弹性容器服务 (Amazon ECS) 是一项完全托管的容器编排服务,可用于运行 Docker-based 容器。您还可以使用亚马逊弹性 Kubernetes 服务(亚马逊 EKS)来运行使用 Kubernetes 构建的 Docker-based 容器。使用容器技术(例如 Amazon ECS 和 Amazon EKS 提供的容器技术)可以高效地将许多游戏服务器进程或其他游戏应用程序实例打包到 EC2 实例中,从而帮助您提高计算利用率。

容器的使用还可以使用开发人员在开发期间在本地计算机上使用的相同的 Docker 镜像操作运行时来托管应用程序,从而提高开发人员的工作效率。您可以使用进一步降低运营开销 AWS Fargate,这是一种用于运行容器的无服务器计算解决方案,与 Amazon EKS 和 Amazon ECS 兼容。Fargate 最适合您希望在容器中运行游戏服务器而不负责操作容器运行的底层实例的用例。

您可以使用 AWS Outposts 在数据中心或本地设施中运行 AWS 基础设施和服务,这可以使游戏能够在本地环境中运行,并 AWS 使用相同的基础设施来支持混合云采用策略。 AWS 本地区域是它的扩展 AWS 区域 ,允许您的游戏服务器和其他延迟敏感型工作负载更接近玩家或开发团队的运行。此外,为了减少游戏服务器的全球网络延迟,您可以使用 AWS 全球加速器来提高游戏服务器的玩家流量的性能。

AWS Lambda 是一种无需预置或管理服务器即可运行代码的无服务器计算服务,这使其适用于异步游戏服务器用例,例如回合制游戏或具有轻量级计算要求、代码库较小以及可以使用无状态微服务架构设计游戏功能的用例。请务必记住,Lambda 函数在事件驱动的每个请求的基础上运行,而不是运行长时间运行的游戏服务器进程。Lambda 提供了本文中最多的运行时抽象选项,因为开发人员可以随时选择底层应用程序来托管他们的代码。

在选择游戏服务器托管方法时,请考虑各种要求,包括运营开销、传统代码库、性能要求和规模。EC2 实例和容器是传统代码库的不错选择,因为它们需要最小的更改即可迁移到云端,并且您可以使用 EC2 实例来专用于计算实例的资源,而容器可以简化管理和高利用率的实现。无服务器函数提供最高级别的抽象,您可以使用它来定义仅在响应事件时运行的代码,从而降低成本。

游戏客户端

游戏客户端代表玩家用来玩游戏的软件和硬件设备。游戏客户端提供的软件用于将玩家的输入转换为发送到服务器进行处理的消息,它负责处理来自服务器的传入响应并将图形等输出呈现给玩家。在实时联网多人游戏中,游戏客户端通常在游戏会话期间保持与游戏服务器的持续网络连接,以减少网络延迟并最大限度地缩短处理时间。但是,游戏客户端也可以使用 REST 与游戏服务器或后端服务进行交互。

消息收发

游戏中通常有三种主要的消息类别: 

  • 针对特定用户或群组用户的玩家互动信息,例如游戏邀请或推送通知

  • 玩家之间的群组消息,例如游戏内聊天

  • Service-to-service消息,例如用于集成两个或更多应用程序的 JSON 消息

发送和接收这些类型消息的常见策略是使用发布者-订阅者和异步处理架构模式。 AWS 提供了多种服务,可以帮助您在游戏中实现消息传递。

  • 亚马逊简单通知服务 (SNS):使用 pub/sub 架构模式在发布商和订阅者之间传送消息的托管服务。发布商使用 API 向 Amazon SNS 发送消息,Amazon SNS 将消息异步传送到订阅应用程序,并支持一些最广泛使用的推送通知服务,可以将推送通知直接发送到移动客户端或桌面。Amazon SNS 可用于向客户端推送通知以及服务间消息使用案例。

  • Amazon Simple Queue Service (SQS):一种完全托管的队列服务,无论游戏服务器和游戏使用哪种编程语言,都可以轻松集成游戏服务器和游戏。许多游戏任务可以在后台解耦和处理,例如更新排行榜或数据库中的游戏时间值。这种方法是将游戏的各个部分分离出来并独立扩展面向玩家的功能与后端处理的有效方法。

  • 适用于 Apache Kafka 的亚马逊流媒体管理 (MSK):一项完全托管的服务,可使用流行的开源解决方案 Apache Kafka 简化数据流和生产者或消费者应用程序的构建。Kafka 通常用于摄取和处理实时流数据,也可用于服务间的消息传递。

  • 亚马逊 ElastiCache (Redis OSS):提供完全托管的内存数据存储,其中包括对常用的 Redis pub/sub 功能的支持,该功能通常用于开发聊天室应用程序和高性能的服务间消息传递。Redis 还支持列表和集合等丰富的数据类型,因此开发人员可以使用 Redis 进行高性能队列。

  • Amazon Pinpoint:通过电子邮件、短信、语音和推送通知提供用户参与信息。例如,Amazon Pinpoint 可用于向玩家发送用户参与消息,邀请他们重返游戏,也可用于交易用例,例如支持多因素身份验证令牌、订单确认和密码重置电子邮件。

直播游戏操作(Live Ops)

直播游戏运营(Live Ops)是一种游戏管理和运营方式,它将游戏视为实时服务,并不断为已发布的游戏提供新功能、更新、促销、游戏内活动和改进,以改善玩家社区的体验。

传统上,游戏是作为产品而不是服务交付的,新的内容和功能通常被纳入后续版本或续集中,而不是纳入已发布的产品中。借助 Live Ops 的游戏管理方法,游戏运营团队可以通过实验、促销、游戏内活动和创新来发布游戏并维持活跃的玩家社区,让玩家保持乐趣。

尽管这种方法具有解锁新的玩家参与策略和提供经常性收入来源的好处,但它需要更多的运营专业知识。例如,要成功实施实时运营策略,开发人员可能需要集成云服务或运营自己的后端技术基础架构。他们还需要一种有效的方法来识别和应对游戏中或玩家社区中出现的问题,这些问题可能会对玩家体验产生负面影响。