Perforce Helix Core在游戏行业的应用

如今的游戏,界面越来越精美,音效越来越好,参与开发一个游戏的人员也越来越多,对游戏的开发、更新过程的管理也提出了更高的要求。

Perforce Helix Core不仅可以运用在源代码管理上,对3D制作、音频文件,以及多团队之间交叉使用的大型二进制文件都有非常好的支持,任何规模的游戏开发团队都能轻松地将Helix Core导入到他们原本的开发工作中。

Helix Core提供的Stream可以方便地管理不同团队间的代码和二进制文件,下面我们通过一个简单的示例说明怎么使用Helix Core的Stream功能来做游戏开发管理。

1、游戏开发的基本流程

开发游戏时,通常会分以下几个阶段:
![图片](https://img-blog.csdnimg.cn/20210420134936681.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80OTcxNTEwMg==,size_16,color_FFFFFF,t_70
预备阶段:游戏一开始只是一个创意或想法,需要具体用图片和文字展现出来,形成最初的概念设计,同时确认项目使用什么引擎和框架。这个阶段,要形成大家认可的原型设计。
原型阶段:本阶段主要目的是验证游戏的基本面问题:题材和玩法的融合是否合适,美术风格和技术实现层面是否能达到策划的初始目标,有没有难以解决的基本障碍。
发布阶段:项目经理随时应对不同的策划案,组织大家建立流程标准,在Alpha版的基础上完善游戏。另外需要准备发布工作,包括宣传资料,测试环境,运维工具等,也需要花费时间。
迭代阶段:游戏一般会有功能的持续更新,根据策划确定每个迭代的内容,按照流程标准不停的做相应的持续开发,调优游戏。

2、各阶段的配置管理需求
在这里插入图片描述
预备阶段,参与的人员较少,文档也比较少,配置管理只需要考虑文件的版本管理和权限管理就可以(Perforce Helix Core、SVN、Git等都可以满足需求)。原型阶段,策划、美工、开发等多团队同时进行工作,需要考虑不同团队的素材的取得及构建(Perforce Helix Core可以很好的管理多个团队的工作)。

发布阶段,随着游戏的不断开发(文件数量增加、大的美术资源增加),团队规模也会扩大,有不同地域的团队同时协作,甚至还有外包人员参与开发,这时需要有很好的协同开发管理、分支管理、大批量、大文件的管理需求(Perforce Helix Core可以很好的满足这些需求)。

迭代阶段,需要考虑bug的及时对应(分支管理需求),新功能的迭代开发,也需要有 很好地协同开发管理、分支管理、大批量、大文件的管理需求(Perforce Helix Core可以很好的满足这些需求)。

2.1 版本管理

日常开发过程中,需要对各种文件做版本管理,版本管理工具有很多,常见的Perforce Helix Core,SVN,Git都可以满足小规模开发、小团队的日常版本管理的需求。

2.2 权限管理

现在用户对知识产权的保护意识在逐渐增强,Git的权限只能设定到库,而且必须将所有内容都clone到本地,存在一定的泄露风险;SVN的权限也只能设定到目录。Helix Core的权限管理可以很好的满足客户的需求:
可以设定目录的权限
可以为单个文件设定权限
可以将目录的权限管理或者用户组的权限委托给非管理员用户
可以限定访问的客户端的IP地址范围
可以以组为单位设定权限,并支持子组

2.3 组装模块和分支管理

现在游戏开发会有多个团队协同工作,在构建时需要组装多个团队的模块做构建。Perforce中有工作区和Stream等概念,易于灵活地将服务器端文件(文件夹)映射到本地,实现模块组装和分支管理功能。

工作区:定义如何将服务器端文件获取到本地,可以将不同仓库的任意个文件夹映射到本地,并可以调整文件夹获取到本地后的目录结构。不需要像Git,SVN那样使用隐藏文件夹来管理文件状态,减少磁盘空间浪费。从服务器端获取文件,可以按需进行,不需要像Git一样要clone整个repo。

Stream:开发过程中可能应对不同需求会有多个开发分支,Stream就是Helix Core中的一种分支。这种分支除了维护最基础的分支映射关系以外,还提供了分支类型,分支合并方向,模块引用(或排除)等支持。为了易于观察分支之间的关系和差别,还提供了一个分支视图(Stream Graph)。通过引入Stream功能,Helix Core的分支管理功能更加强大。下图是一个分支视图的截图,其中每个长方形都代表一个分支,不同颜色代表了分支不同的分支类型,单向或双向箭头指示了预定义分支并方向,绿色线代表可合并。
图片

2.4 协同开发

现在游戏开发团队在逐渐增大,甚至有多个团队或外包在不同地域进行开发,如何有效协调不同地域的团队的开发,成为开发管理的需求之一。Helix Core支持多种多服务器架构,可以很好的支持不同团队的跨区域协同开发,通过Proxy缓存服务器,Edge服务器、Replica复制服务器提高异地的工作效率。

多区域服务器架构示例:
图片

内部访问:
1、为提高数据的安全性,Commit服务器和Edge服务器分别有一台Replica备份服务器用于备份。
2、Commit服务器和Edge服务器间用专线连接。

外部访问:
1、当访问人数不多时,可以根据地点不同直接访问A城的Commit服务器或B城的Edge服务器。
2、如果某地的访问人数较多时,可以考虑在当地搭建Proxy服务器,提高效能。

2.5 大批量、大文件的管理

现在的游戏越来越大,包含的文件越来越多,二进制文件也越来越大,Helix core可以支持大批量文件、图像、音频等格式的文件,而SVN和Git已经不能很好的满足这些需求。

2.5.1共享存储方式节约存储空间

若素材体积较大,超出了经济的客户机存储配置,则可以考虑将只读的大量素材下载(p4 sync)到一个共享文件存储器上(NFS等),Client机器仅在修改文件时才需要将涉及到的部分数据复制到本地,这种复制可以根据文件路径直接从p4服务器上sync,也可以从share storage上复制(复制后通知p4 服务器)。客户机本地修改后直接提交到p4 server上,之后share storage可以从p4 server上增量sync到最新修改。Helix core的workspace特性允许灵活的定义服务器上文件与本地文件的映射关系,这使得这种部署方式易于实现。
图片

2.5.2 stream切换方式节约存储空间

若项目有多个分支,且每个分支较大(如:每个分支有数百G数据),而客户端可能需要在几个分支上工作,若将每个分支都保存在本地,则存储空间可能存在瓶颈。这种场景下,可以在同一工作区上使用切换分支功能来节约存储空间(p4 switch 命令)。
在这里插入图片描述
图片

如上图所示:客户端机器仅使用一个工作区,不同时刻可以对应于不同的stream(分支),则工作区的存储空间仅需占用一个分支的大小。

说明:
1.切换分支时需要从服务器上获取两分支间文件的差异部分,两分支间的差异越大,则切换时消耗的时间可能越多。
2.切换到新分支前,需要对当前分支的修改需要提交,或者放弃,或者暂存。

2.5.3 对比测试

以下是Helix Core 和SVN的大数据量测试对比:
图片

图片

3、使用Stream来管理游戏开发

我们通过开发1个2D的空战小游戏来演示怎么利用Stream来开发1款游戏。

3.1游戏开发需要的资源

下面是1个简单的游戏需求的资源(部分)的列表,主要包括引擎、美术、音频及程序等。

1)引擎及框架
2D引擎 代表:Cocos 2D等
3D引擎 代表:Unity 3D、虚幻引擎、Cry Engine 3、Egret等

2)美术/音频资源
静态图片
动画
模型
资源包
音频编辑器

3)程序资源
代码
另外,游戏开发中,也有策划人员、架构师、设计人员、开发人员、测试人员等各种角色。

3.2游戏开发的Stream构成

首先策划人员提出需求后,架构师根据需求选定cocos2d作为开发引擎。
引擎、资源、程序开发分别用不同Main Stream来管理。
程序开发Stream通过import设定引用引擎Stream和资源Stream的内容。
图片

3.3 预备阶段

策划人员前期做游戏的策划,并将策划文档放在Main Stream
图片
图片

3.4 原型阶段

3.4.1创建引擎的Main Stream

给架构师创建引擎及框架用Main Stream。
注:引擎Stream只管理和引擎相关的资源。
图片
导入引擎的相关资源
图片

3.4.2 发布引擎的1.0版本

确认没有问题后,可以从引擎的Main Stream发布引擎的1.0版本(framework-1.0)
图片

3.4.3 创建资源的Main Stream

给美工团队(开发人员、测试人员)创建资源的Main Stream,美工团队就在资源的Stream里工作。
注:资源Stream只管理和美术/音频等相关的资源。
图片

3.4.4 在游戏开发Stream里引用其它Stream

在游戏的开发Stream里只要有代码的部分,引擎资源和美术/音频资源可以通过Stream的设定来引用。
图片
图片

主分支定义好以后,从主分支创建的测试分支、开发分支以及发布分支都可以继承主分支的目录结构,还可以指定需要的版本。如以下的flightfight_dev Stream里指定了资源数据取资源包里的changelist 号90的内容
图片
在这里插入图片描述

3.4.5 使用游戏开发Stream的工作区

开发人员/测试人员在使用flightfight_main Stream的工作区里可以将引擎和资源的内容同步到本地硬盘。
图片
图片

通过引用,不同的团队可以并行开发,而且可以指定引用的具体版本。

3.4.6 发布Alpha版

原型验证没有问题后,可以发布游戏的Alpha版。
图片

3.5 发布阶段

3.5.1 创建引擎的测试Stream和开发Stream

为测试人员创建引擎的测试Stream:
framework_test

为开发人员创建引擎的开发Stream:
framework_dev

开发人员完成开发后将最新代码从开发Stream更新到测试Stream。
图片

3.5.2 创建资源相关的Stream

给美工团队(开发人员、测试人员)创建资源的Main Stream及测试Stream、开发Stream,经开发、测试后发布资源的1.0版(resource-1.0)
图片

3.5.3 创建程序开发相关的Stream

同样,我们给程序开发团队创建程序开发用测试Stream及开发Stream。

图片

当开发/测试完成后,可以发布游戏开发的Beta版。
图片

4总结

随着游戏开发的团队规模变大,程序也越来越复杂,不同的团队开发不同的模块(引擎、美术资源、音频资源、程序等),推荐使用Helix Core的Stream来做整体的游戏开发管理。

不同模块创建独立的Main Stream,团队只负责本团队的开发、测试并发布版本,并可根据需要引用其它团队的发布版本,甚至可以是测试中的版本。实现并行开发,提高整体的开发效率。

开发人员只在开发Stream上工作,测试人员只在测试Stream上工作,项目经理可以在所有Stream上工作,发布Stream只管理稳定的发布版,可以确保不同人员只操作自己相关的内容,确保安全性。

5参考

5.1 在Unity中使用Helix Core

1) 先把项目拖入到工作空间,在打开项目选择Edit->projectSetting->Editor选择之后看右边属性栏选择Perforce
图片

2)填入user数据,点击连接
图片

3)此处出现红点,证明连接成功(服务器上没有数据,所以出现红点是提示更新)
图片

5.2 在虚幻4中使用Helix Core

1)可以在编辑器中直接连接Perforce服务器,只需点击工具栏的版本控制按钮: 图片

2)打开后,选择 Perforce 作为软件版本管理软件的提供商,并输入登录验证信息。
图片

注意:对于有些服务器,也包括很多云端的服务,可能会需要手动输入主机和密码信息才能在编辑器中访问 Depot,在 Perforce 的登录对话框中打开高级选项即能看到:
图片

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值