2022年6月13日,拳头游戏宣布与微软建立新的合作伙伴关系,将我们规模最大的游戏引进Xbox Game Pass。出于对以玩家为中心的竞技游戏共同的热爱,这次合作将两家世界上最大的游戏公司连结在了一起。六个月后,我们完成了这次里程碑式的承诺,成功在Game Pass上发布了我们最大的游戏。

现在,我们想回顾这几个月的幕后工作,聊聊一个你可能从未听说过的团队——玩家平台。

什么是玩家平台?

玩家平台在拳头游戏和玩家之间建立联系,打造多游戏生态和社区。团队创造彼此相连的玩家体验,将我们游戏中的玩家和内容聚在一起。也就是说,玩家平台要负责并完成你玩到的拳头游戏中,所有直接玩法以外的东西。包括通过门户、SDK整合和直接API实现的账号游戏诊断功能、游戏登入、社交、购买等功能。 

由于玩家平台要负责围绕游戏体验的一切工作,因此,Xbox Game Pass的工作有很大一部分需要由我们的玩家平台构建。这需要合作精神、开放思路和众多努力而坚韧的工作人员,才能完成这项任务,同时维持拳头游戏现有和未来游戏的支持工作。

开始工作…要快!

与拳头游戏的合作,是Xbox Game Pass第一次联合推出PC和移动端的免费游戏,因此有许多未知数。除此之外,我们还想让所有连入账号的玩家都能获得游戏内奖励,从而增强游戏体验。从事这种规模的项目时,我们会通过分隔独立功能流程进行简化,这样能够最大化地落实责任、提高专注度,减少非必要的会议。

为了做到这些,项目管理组与微软密切合作,一同规划重要交付结点。这是一个很关键的角色,能确保正确的人在正确的时间投入到项目中去。玩家平台的项目管理团队会设置一些仪式,让玩家平台和整个拳头内的游戏团队、发行、玩家支持和其他重要相关方参与进来。他们面向多个游戏团队和玩家平台的数百名员工,进行战略规划与复杂问题解决。

面向Game Pass的设计

在构建新系统或移除现有系统前,双方必须先就待解决的问题和玩家心目中的成功达成共识。玩家平台内的用户体验设计,对于营造积极的玩家体验至关重要,在与Xbox Game Pass的合作中也扮演着关键角色。提到设计,人们往往首先会想到精心打磨的终端界面,但其实在规划玩家与复杂产品和系统的交互,使其能够顺畅完成时,设计扮演着更为重要的角色。你也许会问,让玩家连一下Xbox Game Pass账号有什么难的?其实真的挺复杂的!

在拳头游戏与微软合作早期,UX负责人们着手推动创造“最小理想”玩家场景,并配有完整的跨领域和部门的信息,包括实现这些场景所需的时间、合作方和资源。这个过程中尤其注重对优秀玩家体验最大的风险,因为我们越快认可一个艰难的共同目标,就能越早结合我们的专业能力,一同将不可能变为可能。
 

“两家公司之间的合作总会带来巨大的挑战。不同的用语习惯、不同职位、不同预设。我们必须深入挖掘,了解微软的认证系统和Game Pass安装体验是如何工作的,这样在开发端对端体验时才能充分将这部分体验考虑进去,评估最小理想玩家体验到底需要些什么。” 

- Cheryl Platz
 

Riot Games Xbox Game Pass UX

 

最初工作流确立后,UX团队下一步是弄清楚每个面向玩家的触点具体需要什么,才能支持所有地区的所有玩家顺畅登录。团队确保拳头老玩家直接从游戏内或通过拳头客户端链接Game Pass账号时,登录体验与通过Game Pass应用首次登录的拳头新玩家一样顺畅。

第一次融合两家不同公司的平台,我们的拳头客户端团队和Xbox都要面对一些没遇到过的新场景。比如微软的安全模型与我们不一样,因此玩家平台获得了一个有趣的机会,可以探索如何进一步让授权和认证平台更标准化。与微软的公开沟通与积极合作,帮助我们校准目标,确保进展方向正确。
 

“我们的合作不是他们第一次做整合项目了,但我认为我们使用的方式足够独特,所以他们会配合我们共同实现。在双方的合作中,我们对代码基础的两端都进行了优化,以支持他们的需求。微软的开箱即用功能并不符合这次的场景,从时间方面来看也不符合要求。”

- Luther Baker 
 

从初期发现文档记录(有时叫做预发现)开始,设计师需要明确目前的情况,并问自己“如何达到我们想要的结果?”,从而确定前期需求。通过场景地图、用户流等多种手段,微软和玩家平台设计师联手打造了许多神奇的工具,并与开发、产品和QA分享,确保工作流能够符合预期,并建立持续不断的反馈环,评估有哪些服务和功能可以用于支持最佳体验。


“在这种情况下,UX更希望自己犯错,而不是一直正确,因为如果玩家发现‘嘿这跟我想的不太一样’,一般会说出来,提供反馈。花费很长时间寻找所谓的正确答案,然后再动手实践,不如迅速做出来,快速发现错误,可以让大家一起讨论。”

- Melody Seng
 

神奇的工具还在不断演变,哪怕是下线之后。我们发现了一些极端案例,需要进一步调查和迭代才能解决。与工程师和技术团队直接合作,是达成共识的关键。 
 

Riot Games Xbox Game Pass User Flows


创造接近实时的服务

为了提供最佳用户体验,我们希望玩家连接他们的活跃Xbox Game Pass账号后,能够立刻解锁新的游戏内容,这需要动很多脑筋。内容体验团队与账号团队(玩家平台内部)合作,实现了玩家每次绑定或解绑他们的Xbox账号时,都由账号发送一条信息到Riot Event Bus(拳头最新的基于信息的沟通方式)。收到信息后,监控消息代理主体的服务就能进行响应,处理该事件了。由于玩家可能在没有激活Game Pass的情况下去连接他们的Xbox账号,因此团队也需要询问Xbox API,使用账号连接提供的令牌获取该信息,由账号团队将令牌存在新的服务中。但这样也只能解决一部分问题,我们还是需要查看玩家是否有活跃的Xbox Game Pass账号。

内容体验团队(玩家平台的一部分)搭建了一套门户订阅服务(GSS),作为拳头内部唯一的玩家Game Pass状态信息来源,处理所有相关的调用。也就是说每当有服务需要查看任何基于订阅的内容时,都可以调用GSS,获得关于玩家所享受服务的低延迟、高可靠性响应。GSS获取数据的方式,是消耗账号提供的账号连接事件,并使用微软API查看玩家的Game Pass激活状态。它通过HTTP API端点向其他拳头服务提供该数据,让其他团队将该信息用于不同的用例,包括:

  • 内容获取平台:为玩家的藏品添加基于订阅的特定内容

  • 市场技术:根据玩家当前Game Pass状态,显示特定广告

  • 玩家支持:玩家支持代理利用该信息处理Xbox订阅相关玩家工单

  • 网页体验:在玩家账号管理网页上显示玩家的订阅状态

当玩家将拳头账号与Xbox Game Pass账号连接时,GSS将调用微软Xbox API,用账号连接令牌获取玩家的Game Pass状态,将该信息保存在永久数据库中,定期更新,并通过API供客户端访问调用。是不是很简单? 

玩家连接拳头 + Xbox账号后,可以随时激活他们的Game Pass。该服务只支持定期调用Xbox API,查看玩家的激活状态。为了提供最好的玩家体验,我们希望玩家连接并激活Game Pass后,立刻就能访问订阅内容,所以必须能频繁调用。但到底需要达到多高的频率呢?每分钟一次当然最好,但为了查看状态,每分钟向一个API发起数百万次请求,而且99%的情况下两次调用之间并没有什么变化,这并不是理想的实践。

团队关注能够在拳头一侧响应玩家互动的实例,比如玩家启动游戏客户端时,就是刷新Game Pass状态的理想时机。但是刷新是一项外部HTTP调用,需要大约一秒时间,而主GSS客户端、内容获取平台(CAP),需要在50毫秒内获得响应,因为这是获取玩家藏品的时间关键路径的一部分。耗时一秒的外部调用不能满足50毫秒的要求,所以团队必须发挥创造力。他们决定先返回当前存储的值(上一次刷新时获取或是账号连接时获得的原始值),同时如果该数值是在两分钟或更久之前获取的,则在后端触发一次异步刷新。异步刷新后,如果服务器发现Game Pass状态变化,会通过拳头信息服务向游戏客户端发送一条信息,让游戏从CAP获取授权信息,确保玩家不用重新手动加载客户端,就能获得他们的订阅内容。
 

“我们的主要目标是尽可能降低延迟,满足严格的时间要求。CAP呼叫我们,获得玩家的Game Pass激活状态,基本需要保持在50毫秒内,从而让我们达到接近实时服务的效果。如果不能在该时限内响应,CAP会立刻判断呼叫超时,有可能导致玩家无法获得本应拿到的内容。”

- Vasily Katraev
 

《英雄联盟手游》的玩家藏品没有使用CAP系统,因此需要直接询问订阅服务,了解玩家是否有激活的Game Pass订阅。为了满足50毫秒的延迟要求,内容体验将他们的服务与CAP和账号管理服务设置在了一起,分布在全球四处数据中心内,以便尽可能靠近我们的玩家。  

灰度发布与数据库限制解决方案

在与玩家见面几天前,团队会进行灰度发布,测试拳头账号和Xbox Game Pass之间的连接。在发布日之前,他们发现了多个关键漏洞,并及时修复。

授权服务的用户负载量是一个主要隐患。该服务负责所有拳头游戏内的玩家物品访问授权。授权会收到许多读取请求,在有些地方甚至会达到一分钟八十万次!为了解锁玩家的福利,每次授权调用都会触发其他系统的后续调用,查看玩家是否拥有Game Pass,然后组装并返回玩家的Game Pass福利。这套流程带来的额外压力和复杂度会带来可靠性风险,并拖慢多种后续的下游响应速度。

团队进行了多种场景的负载测试,发现只有通过灰度发布,他们对系统的稳健度才最有信心。灰度发布能够让他们完整地“开启系统”,只不过少了最后一步,也就是玩家不会真的看到Xbox Game Pass的内容。在正式发布前,他们看到了系统会承受的全部压力,以及具体的行为情况。通过灰度发布,他们发现有一个连接池配置错误,可能导致启动失败,玩家无法获取福利。

团队还遇到了数据库写入承载量的问题,现有架构无法进行扩展*,以支持合作发布期间的玩家量增加。在管理此类服务的负载时,一个常用的方式是分批访问。团队尝试通过将市场服务分为几次进行,控制玩家流量。这样可以在长期分散玩家批次,让团队确保随着更多市场材料上线,他们具有足够的服务能力应对每批新玩家。通过与市场团队密切配合,他们将流量一直保持在了写入承载量的50%以下。 

* 此后我们调整了数据库技术堆栈,使其具有更大的账号调整水平扩展能力。
 

图片:每小时的Xbox账号创建与启动时的连接。
图片:每小时的Xbox账号创建与启动时的连接。


心态优先于技能 

整合Xbox Game Pass除了需要大量技能,软实力也很重要。保持谦逊和好奇心,具备在内部和外部(微软)合作与开放沟通的能力,这些都是关键。虽然这个项目只持续了六个月,但有数百人参与其中,还要调整工作时间、学习新系统。退后一步,让具有专项技能的人来主导,以不同方式推动工作,不让一个人或团队从事不必要的工作,这是很重要的。


“开展项目的方式和人员的团结合作,都会带来很大不同。” 

- Nate Portner
 

这段合作体现了许多拳头游戏的核心价值。在整个过程中,团队总会问自己:“这段体验会对我们的玩家有什么影响?”他们遵循“玩家体验优先”的最高标准,整个拳头公司一起完成了一项影响所有拳头游戏的工作。
 

“每个部门都表现出色,专注于决策对玩家的影响。无论什么时候,我们都不想误导任何玩家。”

- Matt Hawkins

尾声

虽然这篇技术博客还能装下更多工作内容,但希望大家看完本文,能够更了解玩家平台,以及他们为拳头游戏/Xbox Game Pass合作搭建和提供的服务。通过数百人团结一致的奉献与努力,我们才能持续创造如此了不起的玩家体验。如果你想了解更多玩家平台在拳头游戏的工作及其对玩家的影响,请在评论区告诉我们吧。