「不出海,即出局」随着全球化的加速发展,企业出海已成燎原之势。日前,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。