游戏开发如何处理美术资源和程序分支?

游戏开发如何处理美术资源和程序分支比较好?

程序策划美术协作需要版本管理工具,做过端游手游,知道全用svn的,美术用alien brain程序用perforce的,美术用svn程序用git的,还有全git的,但遇到美术资源要往版本分支提交或合并回来时总没有优雅的方案,总会有痛点,尤其在git flow下各种feature分支。主机游戏那么大的规模是怎么处理的,其他项目有好的处理方式么?


1


好问题。


这个问题没有完美的解决方案,就算是成熟的公司也要持续在版本管理方面下功夫,包括持续的培训和修订工作流。 


这个问题是多个矛盾的综合,并非单一难题,先谈谈本人观点:


扫描二维码关注公众号,回复: 1798970 查看本文章

1、美术资源用版本工具管理,不像程序那么自然。


程序使用版本管理可以进行diff、merge等操作,不易丢失代码等等,可以说只有好处几乎没有坏处,学习版本管理有助于工作,是一个正反馈;而对很多美术工作人员来说,图片资源不易在git操作时直观查看,无法diff和merge,操作和冲突时必须有清晰的思路,如果理解不准确反而会破坏本地资源,可以说是额外增加了工作量和风险,像一种负反馈。


工具越是复杂,美术人员直接操作vcs的成本就越高,如果说SVN勉强可以熟练使用的话,熟练掌握Git的分支操作对于偏感性的设计师们来说简直就是天大的挑战。


2、vcs管理二进制文件,比管理文本文件要弱很多


特别是SVN管理二进制文件效率非常低下,相对来说git的Large File Storage效果就很好,所以很多团队倾向于使用Git或其它工具。但是上面说了,Git使用门槛比较高。nainaitea.com


3、美术资源需要的可能是更简化、更不容易误操作的工具


例如文件锁定后才能修改,这种操作就特别适合日常对美术资源的操作。所以我也比较推崇Perforce和Team Foundation等工具。


4、多个版本仓库的问题本质上是复杂的


中国网游发达,多版本的坑也踩的比较早。很多网游都包含:


1. 正式服

2. 体验服(也是正式服,新版本进入正式服前,先让部分玩家先体验,以避免恶性问题)

3. 测试服(测试人员上线前测试用)


这就导致外网正在运营的就有3个版本,除此之外还有各种各样的开发服务器,包括:最新的周版服务器(功能测试)、相对稳定的服务器(游戏性测试)、各种临时插入版本(节日活动、商务合作、SDK测试等等)。还有更吓人的:海外版本,这时候连运营商可能都换了另外一家,让专人负责是必然的。


一般稍微比较成功的端游,都免不了要同时维护一堆版本。要管理好它们,指望某一个vcs工具显然不够,还得协调好每个开发者在每一个版本的工作安排。(所以小的团队控制好分支数量,能减少不小的工作量)


因此,这里实在无法给出完美的解决方案,直说一个最容易想到也比较有效的方案:


——必要时,专人负责版本管理

据我所知某些大公司可以聘请专业人员(有程序开发背景)来作为PM,专门负责维护工作流。程序分支相对好说,处理好Git分支即可;美术资源可以用较平坦SVN、专用仓库加文档来管理,然后由PM负责照顾好每个分支中美术资源和程序的对应关系。

有一种比较费时但是有效的做法,就是PM对一套新功能专门开一个分支,然后单独开发、测试,最后再将这个分支合并到对应的版本。


另外也可以对小团队给出一个建议:

——随着工作进展慢慢改进版本管理方式


每个团队背景不同,不好说哪种方式就一定好。在每个阶段采用不同的管理方式,不断改进工作流程,我觉着更为可行。


2


我在之前的一个项目专门负责过在两个SVN版本之间同步美术资源的工作。我名义上是技术美术,但有意无意揽了很多职能之外的工作。

在我负责这个工作之前,是项目中美术与策划进行配合,用手动复制粘贴的方式将一个SVN版本库中某几个提交日志的资源更新到别一个SVN版本库。


出现问题的点主要集中在两个方面。


一个是角色与动画特效资源,其中涉及到了角色骨骼动作特效材质还有各种配置文等一堆盘根错结的资源,配置文件之间还有多重引用关系,漏提错提或者鸡同鸭讲是常事。 


二是无法准确判定资源经过不同历史操作后的最终状态,并准确同步至另一个SVN版本,比如某一个版本更新的资源中有若干个不同路径的文件或文件夹经过了新增提交又更新又删除又还原又删除....通过人肉操作很难保证精确性,然后就会出现各种诡异的问题。


我的解决方式是人肉分辨加编写辅助工具。首先我是项目中对各类资源与功能的应用细节了解得最全面的人,有这个前提在我只要通过SVN的提交日志就能从准确的分辨出哪几条日志中包含了某次版本更新中需要的资源,这种技能其它人确实做不到。 


然后我自己编写了一个SVN同步工具,通过读取上面挑选出来的SVN的日志文件中的版本号及其它信息做逻辑判断,最终得出文件及文件夹的最终状态,是新增,覆盖,还是删除等等,然后一键同步,工具会自动对两个SVN目录中的相关资源做新建,复制粘贴,删除等操作,保证了文件操作的精确性。


这样执行起来还是比较优雅的,我做起来也不累,但缺点就是我一旦离开马上又乱了,而且没人能代替我做这项工作。

猜你喜欢

转载自blog.csdn.net/weixin_42066711/article/details/80859079