Z2 致力于开发引人入胜的有趣游戏,每天都能为全世界的玩家带来欢乐。该公司打造了多款免费多人移动游戏,画面精美、情节跌宕,吸引了世界各地的玩家。Z2 游戏可在 Amazon、Android 和 Apple 系统上运行,使玩家能够实时竞技与合作。游戏中包含社区,提供游戏内电子邮件、短信和语音聊天功能,以及玩家图标、成就、徽章和与 Facebook 和 Twitter 集成的社交图景。Z2 成立于 2009 年,总部位于美国华盛顿州的西雅图市,员工人数超过 130 人。

据 Z2 估计,全世界有超过 5500 万人在智能手机和平板电脑设备上玩过该公司的游戏,大约产生了 30 亿次游戏会话。游戏中通常会有一群活力十足且诙谐幽默的角色。为了吸引并留住玩家,Z2 需要出色的速度和性能来支持世界各地玩家的实时互动。另外,Z2 还需要能够分析在游戏过程中收集的数据,从而改善客户支持服务并促进功能开发。

早在发展初期,Z2 公司便已开始使用 Amazon Web Services (AWS)。“如果我要在一个常规数据中心启动一款游戏,就必须为新游戏购买新的服务器。构建物理环境涉及很多复杂因素,其中包括电源、网络连接和磁盘空间,”实时运营主管 Markus Schweig 说,“而在云中工作则更加快速和敏捷。我们可以快速启动实例并对其进行实验 – 使用 AWS,价格更低,性能更出色。”

如下面的图 1 所示,“合金风暴 2:空战英豪”(MetalStorm: Aces) 是一款实时多人空战游戏,游戏中有现代喷气式飞机舰队、3D 图形、精美的场景和王牌飞行员敌手。
设想一下,位于美国爱荷华州得梅因市的一位玩家在移动设备上启动了一个合金风暴会话。客户端应用程序在该玩家的设备上运行,并提供游戏原图和代码以运行游戏。该设备连接至 Z2 在 AWS 上的基础设施平台,游戏服务器在此平台上运行游戏逻辑层。负载均衡功能将流量分配到各个应用程序服务器,这些服务器与多个服务和数据库通信。

z2-metalstorm-image

图 1.Z2 多人游戏“合金风暴 2:空战英豪”

一旦设备连接至游戏服务器,该玩家便可请求配对。游戏服务器在新加坡找到一位配对玩家(根据玩家的统计数据)。“由于 AWS 在许多国家都可以使用,因此玩家能够与世界各地的任何玩家进行实时延迟相关游戏。”Schweig 解释说,“我们可以将数据包中继服务器放置在尽可能靠近玩家的位置。与采用集中式服务器托管相比,这样可以实现更低的延迟。我们能够以相当快的速度在不同设备间提供位置更新信息。”

游戏开始时,玩家便可以看到彼此的飞机并发起进攻。Z2 的工程师在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行的 Linux 中编写自定义代码。代码分程传输信息,因此玩家可了解每位玩家的飞机位置和行动。利用另外的代码获取分数和其他信息,并将其写入 NoSQL 排行榜数据库。当玩家在游戏中获胜时,数据库会获取游戏统计数据和成绩。游戏结束后,玩家可以检索信息并查看游戏统计数据和总体游戏排名。

Z2 在 8 个 AWS 区域运行着约 120 个 Amazon EC2 实例。“我们进行了大量的实验,以确定哪些代码应该在哪些类型的实例上运行。”Schweig 说,“我们对实例进行了优化,通过使用自己的自定义操作系统映像提高了启动速度,而且我们还开发了一个 DevOps 自动化框架以提高敏捷性。”

Z2 迁移到游戏服务器上规模更大的实例,使公司能够在每个实例上承载更多的玩家。Schweig 解释说:“转换不同的实例类型或充分利用实例及其特性可帮助我们逐渐降低并优化 AWS 成本。”对于 Z2 的游戏服务器,该公司从标准的大型实例迁移到高计算能力中型实例,并最终通过高计算能力的超大型实例获得了最佳收益。对于其核心数据库,该公司采用了具备 SSD 和高网络吞吐量的实例。Z2 力求使 Amazon EC2 预留实例的使用率达到 80% 以上,从而通过按需运行实现 50% 以上的成本节约。

该游戏公司在 43 个边缘站点使用 Amazon CloudFront,通过无线电向玩家交付内容更新。Amazon Simple Storage Service (Amazon S3) 充当了原始存储,将内容推送至 CloudFront。它还用于存储数据卷的快照(备份副本)。Schweig 解释说:“如果出现灾难,我们能够从 Amazon S3 恢复数据,并从不同区域继续提供服务。”

Z2 还在其架构中采用了 Amazon Relational Database Service (Amazon RDS)、Amazon Route 53AWS Identity and Access Management (IAM) 和 Elastic Load Balancing。图 2 展示了 AWS 上的 Z2 游戏平台

Z2-Arch-diagram1

图 2.AWS 上的 Z2 架构

Z2 拥有自己的自定义软件和计量工具,可监控实时运营数据并测量游戏环境。“我需要知道数据库和代码是否工作正常,以及客户能否获得良好体验。”Schweig 说。

为了获取数据以进行业务分析,该公司采用 Amazon Redshift 作为其数据仓库来存储数百 TB 的数据。Z2 采用提取、转换、加载 (ETL) 管道和 Amazon Simple Queue Service (Amazon SQS),处理来自 Amazon EC2 实例的事件数据,并将这些数据存储在 Amazon Redshift 中。

数据从 Amazon Redshift 加载到前端应用程序。Z2 的产品团队对这些数据进行分析,从而确定需要改进的方面,对比各周的数据,或者考察新功能的性能。图 3 展示了 AWS 上的分析管道。

Z2-Arch-diagram2

图 3.AWS 上的 Z2 分析管道

在 AWS 云上运行使 Z2 能够专注于确保其代码稳健可靠且架构可满足业务需求,而不必担心所需服务器的数量。当新功能发布、Apple Store 促销和其他限时活动造成玩家激增时,Z2 能够快速扩展。“我们无需知道明天会发生什么,因为我们能够根据需要快速扩展。”Schweig 说,“多亏有了 AWS,我们才能做出调整以适应流量高峰。”

通过使用 Amazon Redshift,Z2 的工程师能够获取信息,并将信息及时提供给业务部门。“我们以前也能做到这些,但是,通过将 Amazon Redshift 与新设计的管道配合使用,显著降低了与分析相关的 AWS 托管成本。”Schweig 说,

“我们的游戏之所以能够吸引玩家并获得他们的持续关注,正是因为我们能够成功地将引人入胜的丰富体验与创新玩法、机制、功能和出色的客户支持相融合。”Schweig 说,“我们正在使用 AWS 来规划我们的发展路线。我们希望实现更多的创新,使我们为玩家提供的创新游戏体验更上一层楼。”

若要了解有关 AWS 如何帮您运行游戏应用程序的更多信息,请访问我们的“游戏托管”详情页面:http://aws.amazon.com/game-hosting