阅读视图

发现新文章,点击刷新页面。

《命运2》的跨平台联机设计(上)

《命运2》的跨平台联机设计(上)

编者按

本文来自 GDC 官方 Youtube 频道,原内容形式为视频演讲,indienova 对其进行了编译整理,以图文形式分享。原链接见文末。

导言

欢迎来到本次演讲。今天,我们将讨论《命运 2》(Destiny 2)团队实现跨平台联机功能的过程,我们从中学到的经验,以及如果你希望在游戏中加入跨平台联机功能,该如何运用这些经验。

先简单自我介绍:我是 John Chu,Bungie 中央技术组的高级技术项目经理。我负责帮助各个围绕不同项目的团队定义路线图和产品愿景,同时推动各项目的执行。我在 Bungie 工作三年了,曾在不同的团队工作,致力于构建和优化我们的引擎工具,比如改善 UI 设计师的工作流,为优化表现而更新《命运 2》的引擎,以及加快发布时间。目前,我的工作重心是统筹多个团队达成共同目标,最近一个目标则是为《命运 2》加入跨平台联机功能。

这就引出了今天要讨论的主题。我将深入探讨跨平台联机功能的开发过程,以及我们在此期间遇到的挑战和学到的经验。我将更多关注开发流程、团队组织以及设计考量。虽然我会提及一些技术上的挑战,但更多的只是概括,深入的技术细节讨论值得做一次额外演讲。

先向没有玩过《命运 2》的人简单介绍一下这款游戏,《命运 2》是一款动作 MMO 第一人称射击游戏,你扮演一位被光之力赋予力量的守护者,保护人类。你将接受挑战,参与活动,一边射击一边收集战利品,以获取更好的装备并自定义你的角色,成为终极怪物杀手。

从左到右依次为:《命运 2》本体(2017 年 10 月发布于 PC)、DLC“遗落之族”(Forsaken, 2018)、DLC“暗影要塞”(Shadowkeep, 2019)、DLC“凌光之刻”(Beyond Light, 2020)、DLC“邪姬魅影”(The Witch Queen, 2021)

在制作、维护和发布《命运 2》方面,我们采用了游戏即服务(games-as-a-service)模式,不断为玩家提供更新和新内容。我们的主要内容发布形式是年度扩展包和每年四次季度更新。《命运 2》于 2017 年发布,现在来到了第 5 个年头,第 16 个赛季。就在上个月,也就是 2 月份,我们推出了“邪姬魅影”和苏生赛季(Season of the Risen)。

《命运 2》目前可在 7 个平台上游玩:PlayStation 4 和 PlayStation 5、Xbox One、Xbox Series X|S、Stadia、Steam 以及微软商店。《命运 2》是基于我们专有的 Tiger 引擎开发的,这个引擎是一个庞大的遗留代码库,最初是为《命运 1》构建的,其中一些引擎部分代码甚至可以追溯到《光环》(Halo)时代。如果你对 Tiger 引擎的历史和发展感兴趣,2015 年 GDC 上 Chris Butcher 做了一场深入的演讲:《〈命运〉:六年磨一剑》(Destiny: Six Years in the Making)。不用说,我们的引擎中有很多系统和代码是基础性的,难以改变,我稍后将讨论这在构建跨平台联机功能时带来的一些有趣挑战。

开发目标

现在来谈谈跨平台联机项目以及我们是如何构建这一体验的。我们想要构建跨平台联机的最大原因是想创建一个真正统一的《命运》宇宙,玩家可以在任何他们想要的地方玩《命运 2》,甚至是通过 Stadia 支持的其他设备。首先,我们在 2020 年上线了跨进度系统,即跨保存(Cross Save),这允许玩家将他们的守护者以及他们花费大量时间积累的所有战利品和装备从一个平台带到他们想要的任何平台。

虽然有了跨平台保存功能,你现在可以在 PC 和主机之间切换,并在想要的地方继续你的守护者的故事,但有一点被忽略了,玩家跨越平台意味着要离开上一个平台上的朋友。玩家对于平台有不同的偏好,就我个人而言,我喜欢在 Xbox 上玩,而且很长一段时间内,我不会在 PC 上玩游戏,也就无法和那些喜欢在 Steam 上玩的朋友一起游戏。

此时就需要跨平台联机功能。它是所有前期努力的结晶,能让你和朋友在你想要的任何平台上一起玩。现在所有玩家都可以加入一个单一的《命运》宇宙,而不是按平台分割的宇宙。虽然这项工作并不是像创建新的团队副本或异域任务那样为玩家带来新内容,但我们知道这样做是正确的,并且会让玩家高兴。因此,我们承诺要实现跨平台联机。

当开始前期开发时,在创造单一《命运》宇宙的总体愿景的指导下,我们总结出了一些抽象的高层次目标。尽管《命运》发布于多个平台,但我们希望利用跨平台联机的机会,将其打造为核心枢纽,让你与游戏中遇到的所有玩家畅享社交互动。无论你在哪里游玩,你的《命运》体验都不应受到限制,任何平台上的每个人都可以成为你的朋友,与你交流,你们可以进行更多交互。

在为这次体验设定目标的同时,我们还确保定下了明确的约束条件,并以此作为决策依据。首先,我们希望尽快发布跨平台联机功能,以提供最佳游戏体验,因此定下了 2021 年 9 月这一发布时间。

项目的前期规划始于 2020 年夏天,我们有一年多时间来规划、开发和发布跨平台联机功能,因此必须根据 Deadline 相应控制项目规模。

此外,游戏体验需要流畅,特别是对新玩家来说。我们不希望让从角色创建到进入第一个任务的体验过于复杂。

最后,我们必须与一级平台合作伙伴展开大量合作,如索尼、Valve、谷歌和微软。尊重每一个伙伴关系非常重要,每个平台都有独特的认证要求,我们应该尽最大努力遵守这些要求。

开发团队

下面谈谈跨平台联机功能的开发团队,有 4 支核心团队共同致力于打造这一体验,包括:

  • 引擎/客户端团队。负责底层引擎代码工作,对匹配和网络等功能进行修改。
  • UI/UX 团队。负责用户界面相关工作,以让玩家管理所有跨平台新朋友和邀请。
  • 服务团队。负责开发所有新的游戏服务功能。
  • Bungie.net 团队。负责 Bungie.net 网站和《命运 2》伴侣应用程序的网络和移动端体验相关工作。

总共约有 50 人参与跨平台联机开发工作,包括工程师、测试人员、设计师、制作人等。此外,我们的技术账户管理团队(Technical Account Management)也深度融入项目组,以处理一级合作伙伴关系。

工作室中还有很多人参与了这项工作。发行、市场营销和分析团队帮助我们吸引玩家,并了解他们是如何使用跨平台联机功能的;玩家支持和社区团队提供了玩家反馈;站点可靠性和网络运营团队确保我们开发的服务功能在上线时是完备的。而所有这些都在我们远程工作期间完成。

开发时间线

以上是跨平台联机功能的开发时间线。我们在 2020 年夏天开始前期制作规划,经过大约一年,完成了跨平台联机功能,并在 2021 年 8 月的神隐赛季(Season of the Lost)中正式推出。在这一过程中,有几个里程碑和事件对我们有所帮助。

最初几个月的工作重点是实现跨平台联机体验的主要技术部分,同时与一级合作伙伴会面,以获得对相关设计的批准。2021 年初,我们完成了第一步概念验证,首次实现了两个平台的连通。

我们还利用游戏的实时更新,向玩家推出了跨平台联机的早期版本。在功能正式上线前的那个赛季,我们为 Bungie 员工提供了跨平台联机的 Alpha 版本,启用了一些跨平台功能,后来又发布了 Beta 版本,为所有玩家启用了先锋行动列表(Strike Playlist)的跨平台联机功能。这些早期发布帮助跨平台联机功能迅速传播,并逐步构建玩家体验,我稍后会详细讨论这一点。

“谋事在人,成事在天。”

即使在正式发布后,我们也在持续为跨平台联机添加更多功能,比如主机文字聊天。将跨平台联机功能交到玩家手中确实花了不少心思,你能在时间线上看到许多里程碑和迭代版本。在这一过程中,我最喜欢的一句话来自工作室内部:“谋事在人,成事在天。”我们尽最大努力以最佳方式执行,为团队、体验和玩家做出正确的决策。

这是我今天想分享的核心思想,因为归根结底,开发过程完全由你掌控,而一旦开发内容交付给玩家,很大程度上你就失去了对它的控制。幸运的是,跨平台联机功能发布后,我们获得了大量玩家的积极关注,成功将他们团结在一起,让他们以一种新的方式游玩和互动。

七条经验

以下是我们在开发跨平台联机功能期间收获的七条经验。


1.建立新系统(Building new system)

在我们的引擎中开发跨平台联机功能意味着从头开始创建许多新系统。跨平台联机是一个相当容易理解的概念,听起来只是将网络数据发送到不同平台,对吧?这的确是其中一部分,但要打造真正出色的跨平台联机体验,还有很多东西需要考虑。

有几个原因导致需要构建如此多的新系统。首先,我们在专有引擎中开发了《命运》,因此所有引擎层面的新的跨平台功能都要从头创建。其次,我们使用的许多系统都是基于平台级 API 的,所有这些都需要在引擎中重新创建以支持跨平台功能(译者注:不同平台上的同一功能/效果可能有完全不同的实现路径和依赖)。与使用 Unity 或虚幻等第三方引擎的游戏不同,这些引擎内置了许多跨平台功能,而我们不得不构建大量平台等效的系统和服务。

为了提升跨平台联机体验,需要许多支撑系统。比如,玩家如何在不同平台上识别自己的身份?为了让所有守护者都能在高塔中相聚,我们要从网络开始,逐一梳理所有系统。为了实现跨平台内容的发送,我们不得不改变核心网络技术。网络变更是最大也是最伤筋动骨的修改之一,因为它是《命运 2》引擎中最基础和最底层的系统之一。

我们针对每一个平台做了优化,但在跨平台联机时,这些优化并不总是能够很好地协同工作。例如,我们的包布局在不同平台上并不总是一致的,所以不能简单地将一个平台的内存句柄通过网络发送到另一个平台。我们最终创建了一个映射层,以便在网络上使用一致的句柄进行通信,这些句柄可以映射到特定平台上的适当句柄。此外,火力小队在线会话的处理方式也必须改变,因为我们不能再依赖由单个玩家托管的单一会话,必须为每个平台维护单独的在线会话。如果你对《命运 2》的网络技术感兴趣,可以观看 2015 年 Justin Truman 的演讲《剑指共享世界:〈命运〉中的联机任务架构》(Shared World Shooter: Destiny's Networked Mission Architecture)。

我省略了许多技术细节,比如我们没有进行网络化处理的部分,但不用说,这些也都是重大的变更,我们需要正确实现它们,以便让各个平台的玩家相互通信,存在于同一个游戏世界中。这是我们最早着手处理的部分之一。

接下来是跨平台联机世界中的玩家身份问题。玩家在《命运 2》中花费许多时间参与团队副本和地牢任务,参与熔炉竞技场,都是为了获得他们最喜欢的极品属性霰弹枪,或是适合自己护甲的正确模块。你扮演的守护者是你个性的延伸,虽然武器装备和护甲外观很重要,但你的名字以及你如何展示自己的身份同样重要。

通常,你会使用平台特定名称来标识自己以及你的游戏角色,比如游戏昵称(Gamertag)或者你的 Steam 用户名等。

然而,在跨平台联机中,仅使用平台特定名称已经不够了。假设你在 PlayStation 上以 Oryx 的名字为人所知,所有朋友都叫你 Oryx。有一天,跨平台联机功能上线,你通过 Steam 进入游戏,但你的个人资料名字是 Savathun。你尝试与朋友们组队,但没人认出你。所以,在这种情况下,使用平台名称已经不够了。

在跨平台联机环境中,重要的是提供一致的体验,让玩家无论从哪个平台登录游戏都能被轻松识别。我们需要用独一无二的名称标识玩家,以便玩家能找到对方。为此,我们引入了 Bungie 名称(Bungie Name)的概念,包括玩家名称和一个四位数的独特标识符,例如 Oryx#1234。这允许多个玩家拥有相同的名称,但通过标识符,人们可以搜索到特定玩家。

秉承之前设定的目标,即在跨平台联机功能上线后不提高新玩家的入门门槛,我们需要确保设置 Bungie 名称的过程既不复杂,也没有额外的时间和操作负担。我们打造了一种无缝体验,从玩家首次登录的平台自动导入 Bungie 名称。上面是启用跨平台联机后,玩家首次登录时看到的界面,这名玩家通过 Steam 登录,个人资料名为 CosmosBNG,系统会在名称末尾添加唯一标识符 0748,如右侧所示,该玩家现在的名称为 CosmosBNG#0748。此名称将显示在其角色上方以及成员列表中(任何平台均如此),成为其统一的身份标识。

接下来是朋友和在线状态。现在,你的好友列表上可能有来自任何《命运 2》支持的平台的玩家,这带来了许多新挑战。《命运 2》是一款 MMO 游戏,拥有许多由深度社交机制培养起来的玩家社群。大多数活动都旨在与他人一起玩,即使你单独玩,我们也会将你与其他玩家匹配,比如在打击任务或自由探索时。《命运 2》的宗旨就是与他人一起玩。

既然玩家现在可以与任何人互动,这意味着我们不能再使用原有的平台好友列表,否则你无法看到在其他平台上结识的朋友。如今,我们将玩家融入了一个全新的《命运》玩家社交网络。我们创建了 Bungie 好友服务(Bungie Friends service)来处理这个全新的社交图谱,使玩家能与任何人互动并成为朋友。

当玩家在游戏内添加好友后,无论对方在哪个平台登录,该好友都会显示在好友列表中。此外,仅依靠平台级的在线状态功能不足以准确追踪玩家的活动情况,因此,我们创建了在线状态服务(Presence service),专门用于追踪玩家的在线与离线状态。随着全新 Bungie 社交网络概念的成型,我们还需确保其具备用户期望它拥有的所有交互功能。

首先是寻找其他玩家,为此要加入搜索功能。我们坚持将 Bungie 名称作为用户标识依据。搜索栏在上图左上角,这正是标识符的关键应用场景。该设计能确保用户精确搜索到正确对象。找到目标玩家后,用户可查看其资料并发送好友请求。在接收端,用户能查看收到的好友申请或待处理请求,并选择接受或拒绝。

此外,屏蔽功能和在线状态显示等其他常见功能也必须加入。随着这套全新好友系统的推出、身份标识的变更以及 Bungie 好友概念的引入,我们不得不对作为玩家主要社交界面的好友列表系统进行彻底重构。为适应跨平台联机需求,我们进行了大量基础架构调整。我们在每位玩家名称旁添加了平台标识图标,同时,为帮助其他玩家准确识别你的身份,我们更新了玩家详情页面,使其能够显示你在所有关联平台上的名称。如上图,这位玩家正在通过 Steam 平台游玩,其平台资料名为 TinyTimGo,但其 Bungie 名称为 CastorRhetoric。这使得其他玩家在查看你的资料时,能更快速准确地识别你的身份。

接下来是对会话或火力小队邀请功能所做的更改。火力小队是由 2 至 6 名玩家组成、共同参与各种活动的小组,相当于你的核心作战小队。火力小队是游戏中最核心的社交与玩法组成部分,也是众多玩家体验《命运 2》内容的主要方式:玩家上线后便会加入好友的火力小队,一同挑战突袭或试炼任务。正如好友列表功能一样,我们此前也完全依赖各平台的原生会话邀请系统。在此之前,加入火力小队的邀请都通过平台 API 发送,如果你在 Xbox 平台游玩,其他人向你发送邀请,你将在 XBox 界面看到一条弹窗消息,显示你收到了邀请。接受后,游戏客户端将启动,并将你的角色加入该火力小队。

但现在,玩家需要能够邀请其他平台的玩家。由于缺乏直接调用不同平台 API 的简便途径,我们不得不从零开始构建另一项独立服务来统一管理火力小队邀请。为此,我们创建了邀请服务,利用原有的通知系统,在界面右下角的灰色通知条显示火力小队邀请。此外,我们还设计了全新的用户界面用于查看和管理待处理邀请,好友请求也会显示在新视图中。接受邀请后,玩家将直接加入该火力小队,这些邀请会在一段时间后过期。

若要实现火力小队的有效协作,成员间的实时沟通至关重要。玩家可通过语音或文字聊天交流,与许多其他系统类似,我们最初的语音系统使用的是各平台原生的语音方案,例如 PlayStation 玩家使用索尼 API,Xbox 玩家使用微软的解决方案等。然而,如果现在依然沿用原方案,大家将无法相互通话。于是,我们迫切需要一个能够跨所有平台对音频进行编码和解码的通用解决方案。因此,我们转而采用第三方语音服务来处理跨平台语音通信。

文字聊天方面,此前只有 PC 玩家能够相互交流,且我们当时仅在 Steam 平台发布 PC 版本,因此,在此种情况下使用 Steam API 是合理的选择。然而,随着跨平台联机功能的上线,《命运 2》也同步登陆了微软商店,原有的解决方案便不再可行。此外,秉承“不让平台限制沟通对象”的核心目标,我们希望让主机玩家也可以文字聊天。为此,我们构建了自己的文字聊天服务,关于自建文字聊天系统以及集成第三方语音解决方案的更多细节,稍后会进一步讨论。

我们之前覆盖的只是针对游戏客户端的系统,但跨平台联机体验还有更多内容。在构建跨平台联机功能时,一部分体验需要同步至网页端和移动端。此时,我们有 Bungie 的帮助。

Bungie.net 官网与《命运 2》移动应用为玩家提供了进一步的游戏体验管理与互动方式。唯有通过 Bungie.net,玩家方能整合所有关联平台的好友列表,并查看其 Bungie 好友列表。此外,相较于发布游戏客户端更新,网页端与移动端的迭代速度要快得多。通过将高阶跨平台联机功能建立在网页和移动端上,我们能够更快速地迭代和优化这些功能。

强大的网页端体验提供了至关重要的应急解决方案,特别是在游戏出现程序漏洞时发挥了重要作用。例如,当游戏推出玩家搜索功能时,该功能暂时出了问题,导致玩家无法直接添加好友。我们及时将玩家引导至网页版和移动端搜索目标用户,直到第二天发布修复补丁。总体而言,为实现完整的用户体验,我们投入了大量工作。

在构建围绕跨平台联机的众多新系统的过程中,我们总结了以下核心经验。首先,当处理自研游戏引擎时,其中的许多核心与基础部分需要更改,例如调整底层网络架构和彻底改造用户界面。这意味着,当你选择自主研发跨平台技术时,必须充分考虑其庞大的项目规模,并为此预留额外时间。

其次,在构建跨平台联机功能时,游戏的许多现有系统很可能依赖特定平台的 API 和功能。这些功能中的大多数都需要重新构建。如果你使用第三方引擎,如 Unreal 或 Unity,情况会有所不同,因为它们的许多服务和系统具备跨平台可移植性。但重要的是要仔细评估哪些系统是依赖平台技术开发的,需要进行跨平台迁移。

第三,将跨平台体验延伸至游戏客户端之外,覆盖玩家与游戏互动的所有场景,可能很有价值。这也便于玩家对开发团队新引入的系统做更精细的控制。我们从项目伊始就将网页端与移动端纳入考量,最终打造出了连贯一致的整体体验。


2.处理相互依赖(Dealing Inter-dependencies)

大家已经对实现跨平台联机所涉及的各个系统有了基本了解,现在应该能更深刻地体会到这项大型跨团队协作项目的庞大规模。此类规模的项目必然伴随着所有参与团队之间大量复杂的依赖关系,这些关系都需要被有效地管理。

四支团队分别负责体验的不同部分,这意味着存在许多相互交织的依赖关系。更麻烦的是,开发时间紧迫,需在 2021 年 9 月前交付。因此,确保所有团队的工作畅通无阻显得尤为重要。

此外,由于全员远程办公,协调同步也变得复杂。我们无法再像过去那样,随时在走廊或工位旁见面并闲聊。你也不能方便地走到同事工位旁直接请教问题,这种原本能顺利化解许多疑问和麻烦的沟通方式,在居家办公时难以采用,因为你总得先发条消息找人。

我们是如何应对这一问题的?很幸运能有如此多的成员共同致力于开发工作,然而人员增多也带来了问题:确保所有人朝着同一目标努力变得更困难。为此,我们格外强调团队的协同一致,并尽可能提供了多种渠道,以便及时发现任何成员所遇到的阻碍与待解决问题。

我们着力创造尽可能多的契机,确保团队全员始终朝着同一目标戮力同心。尽管由我这位制作人来说显得有些陈词滥调,但是,在居家办公的背景下,高频次的同步沟通与定期会议无疑成为了核心解决方案。

通过定期召开同步会议,并分别按功能领域(所有服务于通信或聊天功能的成员)和职能(全体测试人员或全体工程师)筛选参会者,能够使讨论聚焦于特定主题,例如悬而未决的问题,或是某些功能即将进行的集成工作。

受益于这种方式的一个例子是,我们每周会举行一次关于“好友与在线状态”功能的专题同步会议,集中讨论 Bungie 好友服务如何与用户界面及客户端内所有其他模块交互。我们意识到,必须解决在跨平台联机环境中屏蔽功能如何运作的问题,这正是当时大多数成员的共同困惑。

我们让工程师和设计师共同参与讨论,迅速明确了具体改进点。后续又在每周的工程同步会议中跟进,集中评估特定技术方案的可行性,例如如何将数据准确传输至目标位置。

此外,还有定期举行的全员例会等常规机制,邀请所有核心团队成员参加。这确保了每个人都能亲身感受到团队是如何协同工作、推进项目的。

综合以上各点,可以清楚地看到,我们通过让团队成员之间进行充分接触和了解来增强凝聚力,使他们能够主动识别并解决问题。

总而言之,安排专门的同步会议能够确保组内问题可提升到跨团队层面并得到快速处理。通过以多种方式划分团队来组织同步会议,可让团队有机会在不同规模和深度上讨论问题。

接下来,当管理一个大规模,同时可能远程办公的团队时,确保所有成员保持目标一致和行动协调至关重要。为团队创造尽可能多的线上或线下见面机会,能够有效促进成员间的主动沟通,使成员更愿意随时向任何同事寻求帮助。这有助于让每个人更清晰地认识到自身工作与整体目标之间的关联。

如果你在听到这些关于同步会议、常规会议和工作组的内容后,心想“会议也太多了吧”——确实。通过同步会议来建立团队共识确实需要付出代价,这消耗了一线工作者专注于实际工作的时间,构成了团队管理的间接成本。因此,找到两者之间的平衡尤为重要。不得不承认,我们最初也过度依赖同步会议。过多时间花在会议上,意味着实际工作时间不足。但很快,我们通过减少团队总体会议时长,对协作流程进行了迭代优化,最终找到了更合理的工作节奏。


原链接:https://www.youtube.com/watch?v=CKe5s2Hb6aE&list=PL2e4mYbwSTbao5I-cAVbanrMNVGgGN7O3&index=52
*本内容系编译整理,不代表 indienova 立场。未经授权允许,请勿转载。

《命运2》的跨平台联机设计(下)

《命运2》的跨平台联机设计(下)

编者按

本文来自 GDC 官方 Youtube 频道,原内容形式为视频演讲,indienova 对其进行了编译整理,以图文形式分享。原链接见文末。

七条经验(续)

3.匹配机制调整(Matchmaking adjustment)

接下来探讨一些设计考量,这一节的重点是匹配机制。《命运 2》玩家的游戏风格各有不同——从职业偏好到对特定伤害类型的偏好,比如火焰、冰影或电弧。但游戏风格的差异远不止于此,它还延伸至玩家所在的平台。

例如,键鼠玩家的响应时间通常比主机玩家更短,这一优势在竞技模式中尤为突出,因此必须充分考虑参与玩家的类型及其所使用的设备特性。《命运 2》带来了一些特别的挑战:游戏同时包含合作模式与竞技模式,而玩家对于不同模式的参与体验有着截然不同的期待。

当你处于合作模式(例如突击任务)时,这种差异可能无关紧要。但在竞技模式的熔炉竞技场,主机玩家若被匹配到 PC 玩家,可能会明显感知到响应时间的差异,从而产生不公平的感受。此外,PC 与主机平台的安全环境截然不同,我们始终在与使用黑客程序及利用漏洞的作弊行为作斗争,若让主机玩家暴露在作弊环境中,将显著降低他们的游戏体验。

如何在实现不同平台的玩家跨平台联机的同时确保公平性?关键在于如何以最优方式匹配跨平台玩家。最终方案是根据活动类型划分不同的匹配池——这一机制既保障了竞技公平性与体验平衡,又成功实现了玩家间的跨平台协同作战。

并非所有模式都需要建立独立的匹配池。一些玩家对公平性有着强烈追求——无论是让手柄操作尽可能与键鼠一样灵活,还是应对主机与 PC 平台间不同的安全环境。我们最终选择在特定模式中将 PC 玩家与主机玩家分区匹配。我们认为,保护玩家体验并确保公平性至关重要,这是为绝大多数玩家提供最佳游戏体验的根本保障。

这一决策是与玩家支持及社区团队多次深入沟通的结果。他们始终强调,保障玩家游戏体验的完整性与公平性是不可动摇的核心原则。此外,虽然我们选择了分区匹配机制,但刻意避免了以其他变量作为分区依据,比如为键鼠和手柄玩家设立独立的匹配池,这是因为实际操作中存在一系列复杂问题。举个例子,假设你是一名 PC 玩家,连接着手柄进入匹配,系统会将你分配至手柄玩家匹配池;但你若在比赛开始瞬间拔掉手柄,转而使用键鼠,那么此前基于输入设备类型的匹配就失去了意义。

秉承公平性与保护玩家体验的原则,我们的匹配机制决策变得更为清晰明确。从合作模式着手,此类模式并未设置独立匹配池,所有玩家均在全局匹配池中。由于不同游戏平台之间在此类模式下不存在显著的竞争优势差异,且玩家在诸如打击任务等模式中的体验并不会因平台而产生根本性改变,因此没有必要创建独立匹配池。

当你抵达某个目的地,召唤出机灵(Sparrow)开始在月球上探索漫游时,系统会自动将你与来自任何其他平台的玩家进行世界内匹配。而当来到竞技模式时,我们才开始采用不同的匹配池策略。我们创建了两个独立匹配池:主机平台匹配池和 PC 平台匹配池。前者包含 Stadia、Xbox 以及 PlayStation 玩家。尽管 Stadia 在技术层面上属于 PC 架构,或者说玩家至少是在通过 PC 流式传输进行游戏,但其实际运行环境是由数据中心托管的,极不可能安装各类作弊软件或对客户端进行篡改,因此我们将其归入了主机平台匹配池。后者则包含 Steam 和微软商店玩家。

但这并不意味着不同匹配池的玩家无法组建火力小队。我们的规则是:PC 玩家无法进入主机匹配池,但主机匹配池的玩家可以进入 PC 匹配池。举例来说,如果你是一名 PlayStation 玩家,并与你的 Steam 平台好友组建了火力小队,一同进入智谋(Gambit)模式,那么无论你是通过 PS 还是 Stadia 平台进行游戏,整个队伍也将会与 PC 平台玩家对抗。这样的设计维护了我们为 PC 和主机匹配池所设定的公平性边界。

要将所有因素整合起来实现跨平台游戏体验,首先需要理解跨平台玩法可能引发的潜在问题,这将有效引导后续的讨论与决策。深入了解玩家的顾虑和保留意见是精准定位这些问题的核心方法。对我们而言,这些宝贵的洞察来源于与玩家支持和社区团队的持续沟通。

如果你正打算为匹配系统创建不同的匹配池,那么明确采取这一措施的具体原因将成为设计决策中的重要准则。保护玩家体验和维护公平性这些指导原则使得关于匹配池划分方式以及玩家分群标准的讨论变得更加清晰明确。


4.应对有害的社交行为(Handling toxic social behaviors)

跨平台联机功能带来的另一个问题是:除了对游戏玩法产生的影响之外,还有玩家群体中出现的新型社交行为。每个平台都拥有各自公认的线上社交行为标准。当玩家从所有平台汇聚到一起时,互动习惯的差异可能会引发新型的不良行为和骚扰现象。

例如,试想各平台所允许的用户名类型。某些平台针对不雅用语和攻击性语言设有严格过滤机制,但在其他平台上,玩家可以随意命名。因此,来自具有名称过滤机制平台的玩家可能会突然接触到各种不雅用语——从猥亵内容到攻击性及欺凌性用语皆有可能。

此外,各平台虽提供屏蔽等社交控制选项,但跨平台联机功能却创造了新的攻击途径。比如,你在当前平台屏蔽了一名骚扰者,又该如何阻止其切换至另一平台继续骚扰你呢?

跨平台联机的工作之一便是应对这些社交行为。特别需要认识到的是,这些形式的攻击行为(私信骚扰,侮辱性 ID 等)往往针对玩家群体中的少数族裔和更为脆弱的群体。

匹配池的决策以保护玩家为宗旨,我们在社交控制与系统方面也秉持相同原则。我们在此领域投入了大量时间和精力,竭力防止霸凌和骚扰行为的发生。

为实现这一目标,我们主要关注了以下几点。首先,着重处理与跨平台联机相关的用户生成内容,其中最关键的是 Bungie 名称系统。我们在早期讨论中明确,必须对不雅用语进行过滤,因为不同平台对用户名的筛查标准存在差异。若缺乏平台级别的过滤机制,则可能出现不当名称和词汇被用于平台命名的情况,这些内容继而会传入并污染 Bungie 名称。

为此,我们采用了功能多样且具备上下文感知能力的第三方解决方案,这一点稍后将进一步讨论。

另一个重点攻关领域是建立完善的屏蔽系统。我们的新 Bungie 社交网络必须能有效应对不良行为者。因此我们既追求与各平台屏蔽功能保持一致,更将其扩展至跨平台场景,确保屏蔽效力覆盖全平台:当你屏蔽某玩家时,与其关联的所有账号都将被屏蔽,这能有效防止对方切换平台继续骚扰。

通过构建这些系统,我们能够更好地保护玩家,并赋予他们对社交互动的更多控制权。

Bungie 屏蔽系统的运作流程如下:当你查看想屏蔽玩家的资料时,系统会提供屏蔽选项,并会明确提示生效范围——界面将显示警示信息:“Bungie 屏蔽将阻止所有形式的通信,包括聊天、火力小队邀请、好友请求等”。操作完成后,详情界面会清晰显示该玩家已被屏蔽,且此状态将在该玩家所有关联平台上同步生效。

将社交系统与跨平台联机功能相结合时,需要进行多方面慎重考量。跨平台环境可能会使玩家接触到更多来自其他平台的不良玩家;玩家基数与平台数量的增加意味着恶性行为和骚扰现象可能通过许多新途径产生。密切关注游戏中既有的社交互动模式以及跨平台引入的新互动形式,将有助于识别可能滋生新型骚扰行为的潜在场景。

此外,当识别出这些潜在风险场景后,优先开展玩家保护工作对于确保所有玩家获得最佳体验至关重要。实现完善的屏蔽功能是产品发布的必要条件,唯有如此,才能确保持续为玩家提供妥善保护。


5.第一方平台认证(First party platform certification)

下面是构建跨平台联机功能时面临的外部挑战。即便你能够设计并开发出完美的跨平台系统,若要成功发布,仍需满足各第一方平台的要求。

《命运 2》已在众多平台发布,由于先前已在这些平台上架,我们对相关认证要求颇为熟悉。因此,在启动跨平台联机项目时,我们进行了充分调查。许多第一方平台在其认证要求中设有专门章节,详细规定了跨平台联机功能及其实现所需满足的具体条件。

然而从最初设计方案来看,我们期望实现的体验与第一方平台的要求之间存在差异。例如,某些平台要求玩家必须主要以其平台名称作为标识;部分平台不允许在游戏运行时显示其他平台的标识或图标。这些仅仅是我们为达成产品发布目标所需满足的其中几个认证要求。

因此,我们必须与第一方平台保持紧密合作,以协调我们的要求与他们的规范、我们的愿景与他们的标准。项目启动时确定的准则之一,就是必须尊重第一方合作伙伴关系,并致力于遵循其要求背后的精神。这是一个历经了大量会议磋商和多方协作的漫长过程,但最终我们让所有参与方都感到满意。

需要特别说明的是,不同游戏工作室与第一方合作伙伴的关系存在巨大差异。Bungie 非常幸运地与第一方合作伙伴保持着紧密关系,这使我们能够通过频繁会晤达成相互理解。

为确保实现这一目标,我们做了什么?首先,在预开发阶段,我们系统性梳理了各平台的认证要求,并逐一标注其与初始设计方案的差异点。这帮助我们精准定位需要重点关注的领域,并制定相应解决方案。通过与第一方合作伙伴的持续会议沟通,我们深入理解了其要求背后的逻辑,从而能够将平台规范与我们的预期体验设计有机融合。尽管整个审批流程历时较长,但较早启动的论证与协作机制为最终成功奠定了坚实基础。

我们的实践经验可以总结出以下关键要点:从项目最初阶段就必须高度重视第一方平台的相关要求,并将其充分纳入设计考量。在尽力尊重其要求的前提下,坚定不移地执行你的产品愿景。我们的目标是推出卓越的跨平台联机功能,而平台合作伙伴则旨在维护其品牌调性。双方的需求之间存在达成共识的空间,正基于此,跨平台联机才得以成为现实。


6.自制或购买(Make-or-buy decisions)

在构建跨平台联机功能时,其他需要考虑的外部因素还包括第三方解决方案,以及明确如何及何时利用这些方案来辅助开发。

如前所述,开发跨平台联机功能需要重新构建大量原本依赖平台级 API 与服务的系统。期间我们发现还需要开发若干特定功能,它们不可或缺,但会提升系统复杂性。例如:必须确保 Bungie 名称系统使用合规的命名方式,以及采用一套能跨所有平台移植的语音库。开发这些功能会增加项目规模,由于时间紧迫,我们不得不做出一些艰难取舍。

某些功能需要投入大量开发资源,且无法在既定时间内完成。为 Bungie 名称和用户生成内容构建高效的语言过滤器就是一项极其复杂的工程,《命运 2》支持 12 种语言,要对这些语言的文本内容进行筛查过滤,需要大量专业知识储备和长期的技术积累。

因此,针对语音聊天、文字聊天以及文本内容过滤与审核这些特定领域,我们进行了系统的“自制或购买”分析,以确定哪些部分需要自主开发,哪些部分要购买现成的解决方案。当前市场已有大量深耕这些领域的第三方解决方案,其提供的产品质量远超我们自主开发所能达到的水平,它们能够节省开发时间,使我们得以推出体验更好的产品。

文本和语音聊天领域存在多种可选的解决方案,例如 PlayFab、Vivox、Epic Games,它们都有许多用户。

在选择时,我们首先考虑的是第三方解决方案是否提供支持所有平台的集成库;其次,相较于自主中继数据传输,使用第三方服务处理这种量级的数据的技术成本虽更低,但随着长期维护与更新,成本会逐渐累加;最后,我们重点评估了第三方解决方案的集成便利性,包括其提供的文档质量与技术支持的可用性,以确保高效完成系统集成。

文本过滤领域同样有多种解决方案,提供诸如基于正则表达式(Regexes)或静态词表(Flat lists)的过滤技术。部分供应商甚至有具备上下文感知能力的机器学习模型,能够准确区分不同语境下的语义差异——例如,将“你真是个该死的白痴”(You are an effing idiot)识别为欺凌行为,而将“这游戏真他妈的棒”(This game is effing awesome)判断为积极情感。若自主开发此类模型,不仅训练难度极大,还需配备大量具备专业语言知识的人力资源。

也有必要确保任何过滤解决方案都必须完全支持我们所需的全部语言,同时还要仔细评估各类解决方案如何应对违规惯犯。我们需要将这些工具与现有系统比较,并研究如何运用它们为玩家支持团队提供更高效的帮助。

所有这些考量都是为了打击有害的社交行为。充分认知自身游戏的独特需求,并确保所选解决方案能全面应对这些需求,是做出正确技术决策的关键。若某项方案能完美契合需求,它便是节省开发时间、避免从零构建的理想选择。

最终,我们集成了第三方语音聊天解决方案,以此规避自主开发所需的巨额维护开销。这也使开发团队能将核心资源集中于其他关键环节。

在文本过滤与审核领域,由于需要支持许多语言,构建并维护这样的系统意味着庞大工作量,我们最终选择集成第三方解决方案。需要特别指出的是,集成这些解决方案花费了大量时间,选择采购一款仍需投入工程工作的解决方案,并将其成功适配到游戏环境中,其带来的效益并非是立竿见影的。

此外,当你选择第三方解决方案时,实质上是将自己的游戏与另一款产品进行深度绑定。其版本发布与功能更新取决于供应商的规划,这意味着你对其开发节奏与控制权将大幅减弱。

对于文本聊天功能,尽管市场上存在众多能满足需求的解决方案,但我们认为,拥有自己的文字聊天平台,能为未来实现更深层次的系统集成带来巨大潜力,因此最终选择自主开发。我们关于自制或购买的决策完全取决于《命运 2》独特的游戏特性和需求,决策的关键在于甄别哪些功能是体验核心,并明确项目规模内可实现的目标,这能清晰指引团队应在哪些领域探索第三方合作,以及评估是否需要投入资源开发某些功能。

因此,在众多现有解决方案中,准确识别需要自主研发的核心组件对于界定项目规模至关重要。同时应明确开发目的。比如某系统是为了维持竞争优势而开发。这将有效帮助团队调整开发优先级。

最后需要强调:集成第三方解决方案并非灵丹妙药(Silver Bullet)。引入任何新技术都需要时间投入,无法一蹴而就。这一点必须在项目规划和时间线制定中予以充分考虑。在推进第三方集成的过程中,我们遭遇了项目规模超出预期的问题,导致这些集成工作无法在原定计划内完成。因此,我们最终决定将这些集成功能推迟至后续版本发布。但从长远视角来看,我们确实在系统维护与更新成本方面实现了节约。倘若选择自主开发这些系统,我们将面临经典的"不可能三角"难题,即项目规模、时间与成本之间的制约关系。当需要在多重约束中寻求平衡时,探索第三方解决方案或许能为你提供破局思路。


7.善用持续更新(Leveraging a live service game)

最后一条经验来自于我们的发布策略。得益于《命运 2》作为在线服务型游戏(Live Service Game)的特性,跨平台联机功能是为一款已上线的游戏开发的,因此发布必须确保不影响现有玩家的正常体验。

这一项目伴随着许多内容的改动,同时也是自《命运 2》发布以来,我们构建新服务系统数量最多的一次。为了使不同平台的互联互通成为可能,我们实施了诸多底层变革,例如网络架构的重大调整。这一任务相当庞大,而且是在极紧凑的日程安排中推进的。若采用一次性发布策略,便需要在极其紧张的开发时间内重点关注各部分的整合效果,这将在功能调试与兼容层面带来巨大风险。倘若选择在一个赛季内完整上线这一服务,我们便仅有一次机会且要确保万无一失。

最终我们采取的做法是,将跨平台联机及其众多系统的发布工作分散到多个版本与赛季中,逐渐增加系统功能。由于涉及多项重大变更,我们需要更充裕的时间进行功能整合,让各系统得以充分磨合与稳定,之后才能在真实玩家环境中进行大规模测试。

我们采用了增量构建与发布的方法实现跨平台联机功能。最初是 10 人规模的内部测试,确保基础功能不出现崩溃,随后逐步扩展到约 500 人规模的全工作室测试。通过逐渐扩大的测试规模,我们能够在所有平台和全部游戏内容上全面验证各项技术变更。

在正式版本发布阶段,我们利用正式发布前的几个赛季逐步引入重要的功能模块,提前处理那些可能引发根本性变革的工作(例如全新的网络架构更新)。这使得我们能在开发周期极早阶段就将这些功能集成至构建版本,从而获得充足时间进行充分磨合、测试与稳定化。提前完成并稳定这些重大变更,为我们后续攻克跨平台联机的其他系统增强了信心。

我们还在发布前的某个赛季引入了为新社交系统设计的用户界面及其他功能组件,以便在正式发布前就收集反馈并实时测试。我们为 Bungie 员工创建了内部 Alpha 测试环境,使其能在正式运营版本中提前使用跨平台联机功能。员工们获得了新功能的使用权限,包括全新的名单界面(Roster UI)、Bungie 好友列表等功能。在正式发布前的几个月,员工们已能与其他玩家跨平台联机。这使我们能够在玩家体验前就发现并修复初期存在的问题,同时也让开发团队更直观地感受到跨平台联机的实际运作效果。

随后,为对新的社交与匹配系统进行真正的压力测试,我们组织了一次小范围公开测试,在一组打击任务列表中启用了该功能,所有玩家均可参与其中并体验跨平台联机。玩家的积极参与极大帮助我们验证并充分测试了这些新代码路径。

通过内部 Alpha 测试与公开测试的双重验证,我们更相信自己正在构建一个好系统。提前发布关键组件并确保其成功落地,不仅验证了时间规划的可行性,更帮助我们稳健完成了跨平台系统的构建。

此外,这样做还有一个额外好处,它成功为跨平台联机功能营造了热度与期待。虽然内部 Alpha 测试和公开测试整体上利大于弊,但过程中也出现了一些小插曲。事实证明,在游戏正式发布前开放部分跨平台功能,会制造出一些滑稽的场面——例如有玩家早于预期时间体验到了跨平台联机。但坦白讲,为一款已发布的在线游戏添加如此庞大的功能,意外情况在所难免。总体而言,我们将这些事件视为既能暴露潜在问题又充满趣味的插曲。这些偶然的意外持续让玩家对跨平台联机保持关注,并进一步提升了他们的期待值。

提前发布部分跨平台联机功能,为最终平稳发布正式版本提供了重要保障。通过将核心内容改动提前至开发早期发布,能够为其预留充足的优化时间。在早前几个游戏版本更新中提供功能精简的实现,既有助于增强团队对所构建内容的信心,也为获取早期用户反馈提供了渠道。

最后,允许内部员工提前在线上正式环境中以跨平台联机形式与其他玩家一同游玩,是一种很有用的测试方法。这使你能够在系统尚未达到发布要求时,就能在真实游戏环境中测试新系统,同时不必承担影响广大玩家游戏体验的风险。

以上便是我们从开发跨平台联机功能过程中总结出的七条重要经验。这对团队而言是一段漫长而艰巨的历程,因此以上经验涵盖了多方面内容。如果你正计划为自己的游戏打造跨平台体验,以下是我认为最具参考价值的几条建议:

首先,实现跨平台联机可能意味着要构建众多新系统与服务,尤其当你的游戏高度依赖各平台提供的特定 API,或是基于一款自身可能缺乏跨平台支持的自研游戏引擎时。

其次,尽管其中许多功能都是由开发者自己实现的,但尝试借助第三方解决方案能帮助你减少工作量,尤其是时间紧迫时。

第一方平台的要求会直接影响相关设计,因此在制定开发计划的一开始就应该将其纳入考量。

跨平台联机功能因其融合了各平台固有的玩家行为模式,而会对游戏内互动方式产生深远影响——这既体现在游戏玩法层面,也体现在社交层面。随之而来的,是玩家可能会接触到来自其他平台的、新型的不良玩家及其行为模式。这是开发者必须承担的风险,因此务必为所有玩家提供周全保护。

将那些牵一发而动全身、高风险的核心引擎代码变更尽量提前至开发早期处理,这能为其留出充足的“磨合”与稳定化时间,从而显著降低项目后期的不确定性。

如果可以的话,采用分阶段发布策略,利用多个版本逐步扩展跨平台联机功能。这能使你在真实玩家环境中逐步扩大测试范围,从而有效降低项目风险,并随着每个阶段的成功持续增强团队信心。

本次分享的所有成果都得益于众多团队成员为实现跨平台联机付出的卓越努力。在此,我要特别感谢所有参与该项目的 Bungie 团队成员,正是你们的辛勤工作,为玩家打造了如此精彩的游戏体验。

此外,我要特别感谢顾问维罗妮卡·佩什特里亚诺(Veronica Peshteriano)在演讲筹备过程中给予的宝贵指导;同时感谢凯特琳·余(Caitlin Yu)对本次演讲的框架设计与内容构建的重要贡献。最后,谨向 GDC 的支持团队致以谢意,感谢你们为保障大会顺利进行所付出的努力。

Q&A

Q1:这场分享会非常精彩,我和妻子是回归玩家,我认为跨平台联机功能非常成功。我有个问题想请教,采用神经符号 AI(Neurosymbolic AI)来干预和引导用户、处理不良行为的方案不在你们自主开发的范围内,并且这部分内容在演讲中也只是一笔带过。那么,你们最终采用了哪种第三方解决方案来应对不良行为呢?

A1:最终解决方案是根据《命运 2》的独特需求量身定制的,同时它也是独一无二的,基于商业层面的讨论,以及此前提到的过滤功能设计考量,我们选择了一种能更直接应用于用户生成内容的机器学习方案。关于具体选择的供应商,我们稍后可进一步讨论——部分原因是我未参与相关商业谈判,但我们也可以就此主题交流。

Q2:你们是否采用过自动化测试方案来验证跨平台联机功能?

A2:是的,做过一些自动化测试,我们开发了专用工具来协助创建跨平台好友列表并验证其功能,同时也对跨平台战队系统以及 Bungie 名称的更改流程进行了自动化测试。大量自动化测试工作帮助我们对这些核心系统进行全面验证。

Q3:玩家更改用户名的过程是否带来了复杂问题,特别是要修改已被纳入 Bungie 名称系统的初始用户名时?

A3:我们的确遇到了许多复杂状况,这也使得采用第三方内容过滤解决方案显得尤为重要,以确保对名称进行精准过滤。由于我们最终决定推迟 Bungie 名称更改功能的发布时间,因此获得了几个月的缓冲期——事实上我们直到近期才正式启用该功能,因为我们希望彻底完善这套系统。如此一来,当玩家修改名称时,我们既能提供正确的操作途径,又能实现有效的过滤监管,同时能有完善的机制来追踪其修改权限及操作流程。

Q4:你们是否考虑过针对不良玩家和良好玩家来动态调整匹配池?

A4:我们构建的匹配池系统实际上已经足够强大,能够支持创建任意匹配池。尽管当前版本将匹配范围限定在玩家所在平台内,但该系统为未来迭代预留了灵活性——可以根据玩法自定义匹配池的构建规则。这意味着,如果未来某一活动模式出现了仅对 PlayStation 玩家或 Xbox 玩家有利的优势机制,我们可以针对该活动拆分匹配池以进行精准调控。

Q5:这项工作需要大约一年的努力,50 名工程师和其他人员参与,大量的第三方协同和工作量,这一切值得吗?

A5:我觉得值得,玩家对此功能期待已久,目前我们也看到了大量积极反响。从商业角度而言,它虽未带来直接的经济回报,但却极大丰富了游戏体验。启用跨平台联机后,玩家活跃度堪称呈指数级增长,这种能打破平台壁垒、让所有玩家无障碍互联的体验,在当前行业平台界限日益模糊的背景下,无疑具有革命性意义。推动互联互通已成为游戏行业发展的重要方向。

Q6:跨平台联机功能是否会对关卡或游戏系统的设计产生影响?

A6:我无法直接回答你,因为我并非游戏策划,但据我所知,团队正在大力推进采用增量式构建模式来逐步实现特定功能。跨平台联机很可能是 Bungie 在《命运 2》这款已发布的在线游戏中,除跨平台存档外,投入开发资源最多的功能之一。正因如此,我们在尝试改变传统的功能发布流程。尽管我并未参与其如何直接影响游戏设计的讨论,但它确实是存在的。


原链接:https://www.youtube.com/watch?v=CKe5s2Hb6aE&list=PL2e4mYbwSTbao5I-cAVbanrMNVGgGN7O3&index=52
*本内容系编译整理,不代表 indienova 立场。未经授权允许,请勿转载。

❌