演讲回顾 | Perforce Helix Core 如何利用亚马逊云科技支持跨地域游戏开发

「不出海,即出局」随着全球化的加速发展,企业出海已成燎原之势。日前,2024亚马逊云科技出海全球化论坛在深圳成功举办。龙智携手Perforce亮相游戏行业展区,展示了Perforce Helix Core如何与主流游戏开发引擎高效集成,以及如何助力分布式团队协作,为游戏开发者提供强大支持。

此外,龙智客户服务总监李培受邀出席游戏出海分论坛,并发表「Perforce Helix Core如何利用亚马逊云科技支持跨地域游戏开发」的主题演讲,分享Perforce Helix Core的功能特点、游戏开发中常用的工具及典型用例,以及进入云时代后,在游戏出海方面可提供的支持与服务等。

👆点击观看视频

以下为演讲内容回顾(部分有删减):

Perforce Helix Core概述

提及Helix Core,大家可能会稍微有些陌生,但其实对游戏从业者来说,他们已习惯称其为Perforce或者P4,这是在细分行业里一个非常耳熟能详的软件。作为Perforce旗下的一款高性能的版本控制软件,Helix Core在游戏和芯片行业拥有广泛的用户群体,为什么在这两个行业有广泛应用呢?主要因为游戏和芯片行业面临着比较大的版本管理的挑战,其他行业使用的Git或SVN在这两个行业的某些场景下是难以胜任的,而Perforce Helix Core可以为其提供有力的版本管理的支撑。

高度可伸缩性
对于Perforce Helix Core的特点,首先是部署极为简单,初始安装仅需要5分钟,在当前软件爆炸的时代,Perforce Helix Core其实是一款比较精巧、简单而强大的一个工具。只有两个文件就可以完成非常强大的任务。其次是原生支持分布式部署,有些版本控制工具,比如Git发行版,若想支持分布式部署可能需要购买许可,而不是免费的。另外,Perforce Helix Core非常容易扩展,从小团队到大团队,可以实现平滑过渡。
高速存取

第二个特点可能是很多客户选择Perforce Helix Core的初心,特别对于一些3A游戏,一个分支可能就上百G,加上历史版本,数据可能超过T类级别。此时就需要一个强大的版本管理工具来完成版本管理的任务。

Perforce Helix Core首先可以高速存取,支持多线程的上传下载。它还可以按需获取,我们知道Git是是按整库取下来的,而Perforce Helix Core可以按文件获取,即需要哪个文件就获取哪个文件。另外它没有本地的管理目录,这是它和SVN、Git的不同之处。当工作区的数据较多时,隐藏的管理目录实际上也会占据很多空间,使用Perforce Helix Core则没有这种问题。另外Perforce Helix Core支持大数据量,可以支持客户上百TB的数据。此外也原生支持大文件,对于单个特别大的文件,比如上传一个几十G的视频文件,Perforce Helix Core都可以轻松应对。
文件级粒度权限管理
文件级的粒度权限管理也是Perforce Helix Core与其他产品的显著区别。相较而言,Git通常是项目级,SVN也只是文件夹级别。Perforce Helix Core可以基于IP来进行访问控制,这实际上也有一些现实用例,比如说在不同的区域允许访问不同的服务器,都可以基于此功能来实现。Perforce Helix Core还支持审计日志。比如很多大型公司会设有安全团队,他们可能会来项目组检查并要求证明所使用的系统未被非法访问,此时审计日志的功能就显得非常重要了。
便捷强大的分支管理
Perforce Helix Core具有多种分支管理方式,一种是传统的local类型,该类型比较符合常规的对分支管理的类型分支;另一个是Stream类型,是专门为增强的分层管理开发的一个管理方式;第三种是graph,类似于Git的使用方式,实际上Perforce也可以兼容Git的使用方式,只是以集中式为主。
另外,Perforce Helix Core支持分支及模块的组装,以解决不同模块迭代速度不同所带来的问题。这是一个非常实用的功能。举个例子,比如一个游戏开发往往可能分几个模块,一类是美术团队,一类是维护引擎(引擎有可能自己要做一些微调或者适配),还有就是代码团队,即程序员团队。这三个模块的迭代速度是不一样的,可能有的模块一天要改8次,有的则是几个月改一次,迭代速度必定不同。如果我们把这些上百G的项目综合到一起,我开一个分支,就是100G的控制数据,那你的服务器上面数据就会很多。此时,我们就可以按不同的模块来组织分支,即可以把美术资源、引擎和代码分别拆分成三个模块,各个团队按需去使用各个模块的各个版本,然后通过Stream把这些分支组装起来。
说了分支的组装之后,自然又会带来一个问题:组装错了怎么办?比如美术团队要求使用我的1.0版本,但是有人把这个分支定义修改了,导致我版本用错,那么产生的后果谁来承担?为了解决这一问题,Perforce Helix Core在比较新的版本里加入了对分支定义的权限控制,即需要有权限才能修改该分支的组成、模块等内容。
另外,Perforce Helix Core支持分支合并历史及分支关系的图形化查看,该功能也非常实用,且相较于Git工具,Perforce Helix Core的图形化展示更加清晰直观。
与其他软件集成
在游戏行业这一重要领域,Perforce Helix Core可以与Unreal、Unity等主流的游戏引擎工具实现天然集成,使得游戏开发者能够无缝地使用Perforce Helix Core进行版本控制。此外,Perforce还支持与Photoshop、3Ds Max、Maya多款美术工具以及上下游的变更管理自动化工具进行集成。

游戏行业的典型用法

我们知道,游戏行业具有高度的保密性,尽管我们服务的客户中不乏一些国内的头部企业,但出于对客户隐私的尊重,不便透露过多细节。这里我们就一些通用的用例进行介绍。
Perforce游戏开发工具集
首先Perforce提供了一些游戏开发相关的工具集:
  • Helix Plan敏捷计划工具:轻量化的敏捷变更管理工具,用于制定计划及变更控制;
  • Helix Core版本管理工具:是我们目前重点介绍的工具,主要用于版本管理,其功能特点已在前文详细介绍;
  • Helix Swarm 代码评审工具:与Helix Core搭配使用,主要用于代码的评审,以及辅助进行一些文档和某些图片格式的评审;
  • Helix DAM数字资产管理工具:近两年新开发的一款数字资产管理工具,用于满足游戏行业的数字资产管理,包括音频、视频、动画以及一些常见的图片格式等资产,实现诸如搜索、自动分类、在线预览、评审等管理,同样与Helix Core搭配使用;
  • Helix 4Git 使Git能与Helix Core协作:使用相对较少,对Git和Helix Core比较熟悉的客户会更多地使用这一工具。具体来说,我们知道引擎代码是存在Git上的,而有些代码在Perforce上,构建时就需要把Git侧的代码提交到Perforce,才利于统一构建,但同时也要兼顾到一些用户的习惯问题。Helix 4Git就是用于解决这一问题,使用该工具,用户可以在Git侧进行工作和修改,同时可以把Git仓库映射到Perforce,在Perforce侧只读访问,从而实现在同一个工作区里完成构建。
使用Stream管理分支
对于刚开始使用Perforce Helix Core的新客户,他们可能会选择使用local类型来管理分支。然而,随着项目规模的扩大,比较大型的厂商通常会选择使用Stream类型的仓库来管理分支。其好处在于,Stream类型原生支持了预定义的分支类型和分支深度,有效避免了因误用而引发的混乱。此外,Stream类型还提供直观的图形化界面支持,使得分支关系一目了然。
比如前面已经提到的,可以将游戏开发中的不同模块组装起来,通过分支组装来简化团队协作,减轻服务器负荷,从而降低管理开销。
值得一提的是,分支的组织应在迁移到Perforce Helix Core之初就进行规划。一旦游戏开发进入正轨,数据量庞大且团队忙碌时,再对分支进行调整就会变得十分困难。
其他常见用法
一个是使用Perforce Helix Core支撑持续迭代。随着游戏行业对持续提升和持续发布的需求日益增长,有些公司可能每小时就要迭代一次,每一次或许都是上百G的数据。据我所知,一些比较好的游戏公司甚至会设置专门的岗位,比如DevOps开发工程师,来完成这些工作。对于如此庞大且繁重的迭代任务,就要求有一个高效的版本控制工具来支撑大量的数据操作。Perforce Helix Core凭借其强大的功能,能够轻松应对每次迭代可能涉及的上百G的数据量,确保团队能够高效地进行开发和发布。同时,对于已经实现快速迭代的团队,通过更细致的规划每次集成的任务,可以进一步优化开发流程,实现有目的的快速迭代。
另外,可能有一些比较喜欢钻研的同学会使用到Helix 4Git工具。他们通过Helix 4Git将原本可能在Git上的引擎代码或网络库代码,映射到Perforce Helix Core里面进行统一构建,并且可以享受这种企业级的统一的备份方案,这也是一项很好的实践。
此外,如我刚才所说,为了提高研发效率,会有一些专门的工具团队来开发各种帮助提升工作效率的工具。与Perforce Helix Core相关的是,我们提供全功能的命令行接口,图形界面能做的这个命令行全部都能做;提供C++或Python等编程语言的接口,帮助开发者轻松定制开发流程,开发各种自动化工具。

跨地域协作

完善的跨地域支持
Perforce Helix Core天然支持跨地域部署,无需额外许可,这是它在跨地域协作方面的一大优势,可以为分布在不同地区的团队提供高效协作的解决方案。
  • Commit Server指的是一台集中服务器,一个集群里只能有一台,也可以说是主服务器。
  • Proxy是一种低成本的跨地域实施方案,仅需一条命令即可启动,无需过多的维护成本,其主要作用是内容缓存。
  • Readonly Replica主要实现自动备份,比如可以将云机器放在不同的机房以实现灾备,一个机房出现意外故障,另一个机房有完整备份,且备份过程无需人工介入,这也是一个很典型的应用场景。
  • Forwarding Replica提供了更灵活的功能,除了具备Readonly Replica的备份功能外,它还能分担负载,同时允许用户直接访问。
  • Edge Server是比较现代化的解决方案,更多应用于跨国部署的场景。它拥有独立的一部分控制数据,通过在海外部署Edge Server,无需国内主服务器的介入,当地员工即可进行下载。
在部署原则方面,一个是要靠近用户部署下游服务器来优化用户访问的速度;其次,在跨国团队协作时,还需要考虑数据过滤和权限控制等问题,Perforce Helix Core的Replica技术能够支持数据过滤,确保只有指定的目录被复制到海外供当地用户使用;另外,通过细致的权限控制则可以限制用户访问的服务器内容,确保数据的安全性。
在服务器集群间的数据同步方面,Perforce Helix Core也提供了多种解决方案,包括Remote Depot、Zip / Unzip以及DVCS等,这些方案能够帮助团队实现国内外主服务器之间的数据传递和同步。

亚马逊云科技支持

亚马逊云科技支持全球33个区域,每个区域包含多个Azs(可用区),每个Azs拥有一个或多个数据中心,具备天然的容灾特性,地域、网络设备均是相互隔离的。这些设施为我们提供了坚实的基础架构支持。
与我们业务紧密相关的是其强大的机器性能和存储能力。例如,当我们面对动辄上百T的数据存储需求时,若采用传统方式购买磁盘柜,不仅成本高昂,而且无论是否充分利用,成本都是固定的。而采用云存储方案,则可以根据实际的使用情况灵活购买和扩容,如初始购买5TB,随后根据需要逐步扩展,这种灵活性是云存储的显著优势。此外,一些客户也可以利用云上的负载均衡特性等。
使用亚马逊云科技存储支持

在云上部署开发环境或存储数据时,我们可以根据需求选择不同类型的存储介质。对于控制数据和日志,可以使用高性能的SSD存储;而对于仓库数据,由于其连续性较高,可以选择速度稍慢但成本更低的机械式硬盘存储。

值得一提的是,Perforce Helix Core现已原生支持S3存储,这对于Archive仓库的管理尤为有利。当我们拥有大量旧版本数据,既不敢轻易删除,又想节省存储成本时,S3存储便是一个理想的选择。此外,云存储还具有易于清理、扩容、加密和备份的特性,如Depot仓库中的设计文件,我们可以选择加密存储以确保数据安全。相较于自行实现这些功能,云上提供的天然选项无疑更为便捷,大大减少了我们的工作量。
部署策略

部署策略方面也有多种选择。一种是Perforce托管,全部由Perforce来部署和管理,用户直接使用即可,该种适用于50用户以下。其次是自有部署,可以自行选择部署在云上或者机房,然后由Perforce远程运维。三是对于50用户以上的,可以选择由专门的云服务商来托管。最后一种是部分上云、部分本地部署,这一类是我接触比较多的部署方式。比如对于刚刚建立了海外工作室的国内开发团队,就可以采用部分上云。在云上部署一个Edge,但主服务器还在国内的本地机房,远程用户就可以通过Edge来跟国内团队进行协同开发。

龙智服务

最后介绍一下我们龙智服务。龙智作为Perforce中国授权合作伙伴,深知国外产品在服务与支持方面面临着语言障碍、时差等挑战,为此,我们在竭力将国外领先的软件产品引入中国的同时,也致力于为中国用户提供更加全面、高效的本土化服务。

专业的技术支持

我们拥有一支专业的服务团队,具备深厚的行业经验和专业技术知识,能够迅速响应客户需求,解决各类问题。

灵活的服务方式

对于一般问题,客户可以通过各种即时通讯随时联系我们,并得到快速解决;对于复杂或需要深入调查的问题,我们也会主动收集所需资料,并与原厂进行沟通,确保为客户提供及时、有效地支持。

丰富的服务内容

除了日常的技术支持,我们也根据客户的具体需求,提供线上线下培训、现场交流等多种形式的服务,帮助客户更好地理解和使用Perforce Helix Core。
如果您对Perforce Helix Core有任何疑问或需求,欢迎咨询Perforce中国授权合作伙伴——龙智
官网:www.shdsd.com
电话:400-666-7732
邮箱:marketing@shdsd.com