如今的游戏,界面越来越精美,音效越来越好,参与开发一个游戏的人员也越来越多,对游戏的开发、更新过程的管理也提出了更高的要求。
Perforce Helix Core不仅可以运用在源代码管理上,对3D制作、音频文件,以及多团队之间交叉使用的大型二进制文件都有非常好的支持,任何规模的游戏开发团队都能轻松地将Helix Core导入到他们原本的开发工作中。
Helix Core提供的Stream可以方便地管理不同团队间的代码和二进制文件,下面我们通过一个简单的示例说明怎么使用Helix Core的Stream功能来做游戏开发管理。
1、游戏开发的基本流程
开发游戏时,通常会分以下几个阶段:
预备阶段:游戏一开始只是一个创意或想法,需要具体用图片和文字展现出来,形成最初的概念设计,同时确认项目使用什么引擎和框架。这个阶段,要形成大家认可的原型设计。
原型阶段:本阶段主要目的是验证游戏的基本面问题:题材和玩法的融合是否合适,美术风格和技术实现层面是否能达到策划的初始目标,有没有难以解决的基本障碍。
发布阶段:项目经理随时应对不同的策划案,组织大家建立流程标准,在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 的登录对话框中打开高级选项即能看到:
Perforce公司也关注到我们国内开发人员的需求,在国内也部署了其技术服务网点—上海龙智数码,可以为我们国内企业在 Helix Core 和 Helix Swarm 的使用及技术支持上提供帮助。
点击文末“了解更多”可进入龙智官网,欢迎咨询相关产品。更多DevOps解决方案可关注微信公众号「龙智数码」。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/74471.html