通常不仅要在git仓库中管理源代码,还要管理所有资产,纹理,艺术品,文档文件等,以进行版本控制?例如,我想找回旧版本的纹理。如果这是非常不好的做法,那么您使用什么工具来控制资产和其他内容的版本?
通常不仅要在git仓库中管理源代码,还要管理所有资产,纹理,艺术品,文档文件等,以进行版本控制?例如,我想找回旧版本的纹理。如果这是非常不好的做法,那么您使用什么工具来控制资产和其他内容的版本?
Answers:
我会说这是一个很好的做法。源控制应用于源和资产。您可以将其视为备份,您希望能够从源代码控制中还原构建游戏所需的一切。
我链接了一个有关将资源存储在资源库中的问题。有些存储库在存储艺术品方面比其他存储库更好。他们将允许您“与众不同”,并了解更改的内容。其他人只会将资产视为二进制数据,因此您必须将其签出以查看有什么不同。这也意味着您必须在更改时上载整个资产,因为存储库不可能“知道”(解析)版本之间的更改。
我将所有内容都存储在存储库中。当我有了新的笔记本电脑时,我可以签出我的存储库并构建我的游戏,而无需从其他任何地方复制任何资产。这意味着我还将第三方库,资产和源代码控制存储在我的存储库中。
Git对于非文本文件不是很好。克隆git repo要求下载文件的所有历史版本,除非使用大文件扩展名(非标准扩展名,通常不受GUI支持)或特殊命令(必须是git guru才能执行)。大多数DVCS系统也是如此。对于纹理,模型或音频剪辑,这意味着需要提取非常大文件的许多副本。1GB的资产很容易就是200GB的历史修订数据,而git使您可以在克隆新存储库时全部下载,而在获取最新版本时则下载所有中间修订。当您最不能容忍生产延迟时,这将成为一个巨大的瓶颈。
Subversion,Perforce等是资产的更好选择,因为它们仅需要下载所需的修订版(通常是最新版本)。您只能将它们用于资产,将git用于代码,或者也可以将它们用于源代码。Perforce具有一些功能,使其像笨拙的DVCS一样运作,并且在我的经验中比SVN功能(尽管更为复杂)要好,但是成本意味着您可能会使用Subversion。
大多数内容专业人士对DVCS的需求都很少,而且有些专业人士甚至对经典VCS的基本知识都感到困难。不要在git上乱写。或Mercurial,DARCS等
这是一个好习惯,即使作为艺术家,当您在项目中工作时,也倾向于某种形式的版本控制,文件损坏或错误的发生,而没有源代码控制的艺术家总是会进行修订保存,这简直是一团糟。
您可以看到的现实世界示例是使用Blender(Big Buck Bunny,Durian等)制作的开放电影项目
游戏的美术流程大致相同,不同之处在于资产本身可能需要一个构建步骤,以将大量的大数据转换为引擎特定的格式,例如纹理压缩和模型格式转换。
某些工具(例如GitHub)甚至提供了不错的图像比较工具等,这比比较二进制Blob更好。
由于资产存储库绝对可以很大,因此我/我们的首选是保留一个单独的资产存储库,该资产存储库是项目存储库中的子模块。例如,当您只想分支源时,您就不想拉下千兆字节的资产。