用于存储游戏项目所有内容的源代码控制?


10

通常不仅要在git仓库中管理源代码,还要管理所有资产,纹理,艺术品,文档文件等,以进行版本控制?例如,我想找回旧版本的纹理。如果这是非常不好的做法,那么您使用什么工具来控制资产和其他内容的版本?



1
源代码是您无法从源代码生成的所有内容。资产,纹理,艺术品和文档也是该定义下的源代码。
ChristofferHammarström,2013年

Answers:


12

我会说这是一个很好的做法。源控制应用于源和资产。您可以将其视为备份,您希望能够从源代码控制中还原构建游戏所需的一切。

链接了一个有关将资源存储在资源库中的问题。有些存储库在存储艺术品方面比其他存储库更好。他们将允许您“与众不同”,并了解更改的内容。其他人只会将资产视为二进制数据,因此您必须将其签出以查看有什么不同。这也意味着您必须在更改时上载整个资产,因为存储库不可能“知道”(解析)版本之间的更改。

我将所有内容都存储在存储库中。当我有了新的笔记本电脑时,我可以签出我的存储库并构建我的游戏,而无需从其他任何地方复制任何资产。这意味着我还将第三方库,资产和源代码控制存储在我的存储库中。


7

Git对于非文本文件不是很好。克隆git repo要求下载文件的所有历史版本,除非使用大文件扩展名(非标准扩展名,通常不受GUI支持)或特殊命令(必须是git guru才能执行)。大多数DVCS系统也是如此。对于纹理,模型或音频剪辑,这意味着需要提取非常大文件的许多副本。1GB的资产很容易就是200GB的历史修订数据,而git使您可以在克隆新存储库时全部下载,而在获取最新版本时则下载所有中间修订。当您最不能容忍生产延迟时,这将成为一个巨大的瓶颈。

Subversion,Perforce等是资产的更好选择,因为它们仅需要下载所需的修订版(通常是最新版本)。您只能将它们用于资产,将git用于代码,或者也可以将它们用于源代码。Perforce具有一些功能,使其像笨拙的DVCS一样运作,并且在我的经验中比SVN功能(尽管更为复杂)要好,但是成本意味着您可能会使用Subversion。

大多数内容专业人士对DVCS的需求都很少,而且有些专业人士甚至对经典VCS的基本知识都感到困难。不要在git上乱写。或Mercurial,DARCS等


好点,但是你可以克隆并不获取所有的历史stackoverflow.com/questions/11497457/...
阿里

1
@Ali:浅层克隆根本无法充分解决问题(它们禁用了许多命令,不是大多数GUI的默认命令,等等),并且对于CI服务器等之外的大多数事物基本上没有用。出现了像git-lfs这样的新git解决方案,以解决我概述的问题,以使内容繁多的团队加入git。
肖恩·米德迪奇

git lfs很好地解决了“大二进制文件”问题。
Nepoxx

3

这是一个好习惯,即使作为艺术家,当您在项目中工作时,也倾向于某种形式的版本控制,文件损坏或错误的发生,而没有源代码控制的艺术家总是会进行修订保存,这简直是一团糟。

您可以看到的现实世界示例是使用Blender(Big Buck Bunny,Durian等)制作的开放电影项目

游戏的美术流程大致相同,不同之处在于资产本身可能需要一个构建步骤,以将大量的大数据转换为引擎特定的格式,例如纹理压缩和模型格式转换。

某些工具(例如GitHub)甚至提供了不错的图像比较工具等,这比比较二进制Blob更好。

由于资产存储库绝对可以很大,因此我/我们的首选是保留一个单独的资产存储库,该资产存储库是项目存储库中的子模块。例如,当您只想分支源时,您就不想拉下千兆字节的资产。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.