游戏开发的版本控制-问题和解决方案?[关闭]


106

有很多版本控制系统可用,包括诸如SubversionGitMercurial的开源系统,以及诸如Perforce的商业系统。

他们对游戏开发过程的支持程度如何?对于非文本文件(二进制文件),大型项目等,使用VCS有什么问题?这些问题有什么解决方案?

对于答案的组织方式,让我们以每个软件包为基础进行尝试。用结果更新每个软件包/答案。

另外,请在您的答案中列出一些简短的详细信息,关于您的VCS是免费的还是商业的,是分布式还是集中式等。

更新:找到了一篇比较下面两个VCS的不错的文章-显然,Git是MacGyver,Mercurial是Bond。好吧,我很高兴那已经解决了……作者最后有一个不错的报价:

可以向那些尚未切换到分布式VCS的人宣讲福音,但是尝试将Git用户转换为Mercurial(反之亦然)是浪费每个人的时间和精力。

特别是由于Git和Mercurial的真正敌人是Subversion。Dang,在FOSS领域,这是一个吃代码的世界……


注-这是为了替代问题gamedev.stackexchange.com/questions/245/...。在72小时内,我将删除该问题-我暂时将其保留,以使人们有时间复制他们对该问题的答案/评论。:)
独眼巨人

如果人们遵循编辑说明,那么这可能最终将成为我最喜欢的问题之一。现在,为游戏开发特定的解决方案:D
Jesse Dorsey

@Noctrine,你必须添加免责声明如果,不是吗?:) 当然,人们会按照指示进行的
独眼巨人

不要删除其他问题。如果确实不在主题范围内(我认为不是),可以将其关闭并存档。它也可以作为此副本的副本关闭。
Firas Assaad 2010年

@Firas,它关闭-然后重新打开:)无论如何,我认为这种表述更好(是的,它是一个Wiki)-如果人们复制了他们的答案,则此内容涵盖另一个问题中的所有信息。
独眼巨人

Answers:


71

吉特

最近,我一直在使用Git潮流(我使用过SVN和Mercurial)。到目前为止,我真的很喜欢Git。设置很容易,并且越来越多的开发工具开始使用它。

这是一个分布式版本控制系统。这使我们可以拥有自己的独立树干状区域。我可以在自己的区域工作,并邀请您一起非常轻松地查看变更集。我可以在自己的空间中回滚而无需破坏中央存储库。我可以在本地进行SVN的提交,分支和所有操作。我真的很喜欢这种控制。

使用SVN,您需要访问您的存储库才能提交。如果您在旅途中或在没有互联网的咖啡馆怎么办?不好。

当然,SVN更容易学习,但我认为分布式源代码控制的优势大大超过了学习曲线很少的事实。

我也喜欢合并更聪明。

GIT的主要缺点是它将整个历史记录存储在本地。(是的,您可以进行手术以减少这种情况,但这是默认行为)。对于源文件来说,这根本不是问题,但是如果您有一个拥有数千兆字节资产数据的大型项目,那么它很快就会成为问题。根据我目前的经验,我建议仅将GIT用于较小的或仅用于源的存储库。

如果您仍然对GIT感到好奇,请访问http://thkoch2001.github.io/whygitisbetter/了解一些有用的信息/指标。另请参阅https://git.wiki.kernel.org/index.php/GitSvnComparsion


1
我喜欢分支机构的层次结构的想法,它允许质量检查人员在更改进入主线之前对其进行测试,或者使示例易于创建和验证。
tenpn

@tenpn,这是一般分布式VCS的功能还是Git?
独眼巨人

1
我听说,将Git和Mercurial放入非常大的文件时,它们都会受苦。有比我更多经验的人对这个谣言有何道理?
drhayes 2010年

6
Git很好,但是除了处理大型图形或音乐资产(例如大于100的MB)外,Git的提交和签出速度都非常慢。目前,Git的竞争者Mercurial具有“大文件”扩展名,可以解决此特定问题。如果您的游戏项目资产不多,可以尝试一下Git。
Spoike 2010年

3
为什么不使用Git的子模块来管理二进制文件?这样,您可以根据需要创建单独的存储库,然后使用子模块将它们绑定在一起。主存储库中的任何将来更改都不会影响子模块。
Alex Schearer

62

水银

主要特征:

  • 分布式VCS
  • 免费,开源
  • 插件脚本易于编写-可以用Python或外壳程序脚本编写
  • 已经有许多插件脚本可以免费使用
  • 提供大量文档,包括本书(强烈推荐)

关于非文本文件的使用,默认情况下,Mercurial的最新版本(> = 2.0)提供largefile扩展名

largefiles通过在Mercurial之上添加一个集中的客户端-服务器层来解决此问题:largefiles驻留在网络中某个位置的中央存储中,并且只有在需要时才获取它们。

还有其他提供类似解决方案的扩展,例如bigfiles扩展,该扩展使您可以将资产存储在相同的Mercurial存储库中,但仅在需要它们时才提取所需的二进制文件。

除了那些与拥有大型二进制文件有关的项目外,我没有发现与大型项目有关的任何问题。Python项目是一个大型项目,并使用Mercurial

乔尔·斯波斯基(Joel Spolsky)撰写了有关在颠覆再教育中使用Mercurial的小型教程


4
关于Bigfiles扩展的有趣说明-解决了原始线程中报告的问题之一,即分布式VCS不适用于具有大量二进制文件资产的游戏产品。
独眼巨人

1
+1为水星。它快速,易于使用,并且功能强大。:)我将它用于一切:Web开发,游戏开发,私人一人项目和团队项目。感谢您介绍BigFiles扩展!
jacmoe 2010年

对于大型项目-TortoiseHg在具有8年修订版本的大型存储库中的运行速度要比在具有20个修订版本的小型存储库中运行的速度慢得多。我还不知道这是乌龟还是水银特有的东西。
Kylotan

4
似乎没有可比的选项svn:needs-lock,并且由于也没有办法告诉谁在本地处理哪些文件,因此,从字面上看,您又回到了团队面前(如果没有,则不允许进行编辑。桌子上的碗)。不管是否有BigFiles扩展名,如果没有实际的解决方案,此VCS都无法用于二进制文件。
山姆·哈威尔

3
不管bigfile支持如何,如果两个人同时编辑一个Maya文件,一个将签入,而另一个则必须重做。至少使用Perforce,您可以知道其他人正在编辑该文件(并自动对该文件进行锁定)。
dash-tom-bang 2010年

39

Perforce

由于多种原因,Perforce(商业/封闭源代码,集中式)是行业标准。

  1. 这是一种商业产品,这意味着它具有商业支持。开源项目可能有资格获得免费许可证(减去技术支持)。
  2. 很好地支持工作区,从而允许非常灵活的源和资产目录布局。
  3. 很好地支持变更列表。
  4. 您可以看到谁在做什么。与其他开发项目相比,游戏具有大量快速变化的二进制文件(资产)。在大多数情况下,这些都是不可合并的,因此跟踪谁在什么地方/什么地方/什么时候很关键。Subversion和DSCC客户端有意避免使用此技术,但是在某些应用程序中它非常有用。
  5. 它支持巨大的代码/资产基础。它并没有重复的数据存储在客户机上,这是重要的,当树的子视图是一个几十演出。

话虽如此,几乎每天都在痛苦地发现Perforce认为自己在行业中的地位没有受到威胁。他们的可视化工具(包括P4V和P4SCC(与Visual Studio集成))运行缓慢且有漏洞,而后者因冻结Visual Studio而无法正常使用而闻名。AnkhSVN比Perforce领先几英里。

xan的评论:但是,值得注意的是,它们的合并工具P4Merge(用于差异和合并)非常出色,并且远远优于Tortoise Merge之类的工具。令人惊讶的是,该组件作为P4 Visual Tools软件包的一部分免费提供。

slicedlime的评论:Perforce的另一个缺点是其中的分支会带来巨大的痛苦,尤其是当您有大树时。几乎所有其他vc都更擅长分支和合并。不过,通常要为上述优势付出很小的代价。

鱼卵评论:Perforce非常健谈。没有服务器就没有太多事情了。最值得注意的是,您需要服务器才能进行开放式编辑,这意味着如果您打算断开与服务器的连接,则需要跳过几个步骤。

jrista的评论:作为Perforce的日常用户已有两年多了,拥有超过100人的扩展的开发和质量工程团队,我对此已经非常熟悉。尽管它是一个体面的源代码控制系统,但确实存在缺点,那些评估SCC系统的人应该意识到:

  • 正如其他人所提到的那样,分支/集成特别麻烦并且难以完成。您拥有不可思议的控制量,但这是以过度复杂为代价的。另一方面,视觉合并工具是其中一种,它提供了一个漂亮的基于“文件”的三文件合并视图。Perforce确实提供了分支路径的一些图形可视化效果(称为修订图),但是可视化的方式通常使该工具变得毫无用处。如果您只需要查看一个或几个文件的非常短的时间段,则可能会有用...更多,而且几乎不可能浏览修订图。
  • Perforce也不是一个非常有效的工具,因为几乎所有文件操作都需要复制文件和数据:分支,标记,更改列表等。这里没有稀疏或轻量级的标记或分支。如果您不怕使用大量磁盘空间来跟踪您的更改,那么perforce可能会为您提供满意的服务。如果没有,我会寻找另一个工具。
  • Perforce利用了工作空间,但是这些工作有时会令人沮丧,因为perforce在工作空间中缓存所有状态,而不是使用磁盘上的实际文件来确定某些状态。这通常会导致文件无法同步,因为您的工作区说它们是最新的,而无论出于何种原因,磁盘上的物理文件确实不是最新的。
  • 最后的烦恼是,Perforce在您的网络上相当残酷。这是一个非常健谈的程序,并且消耗大量带宽。任何网络连接都会丢失,并且在恢复连接之前,您将面临无法对源代码控制文件进行任何操作的高风险。到目前为止,我还没有发现可以在Perforce中离线执行的活动。

2
Perforce的另一个优点是,它对于前两个用户是免费的,这对于小型业余项目非常有用,或者两个人可以评估其对较大项目的适用性。

根据我的经验,您的回答第5点是非常正确的。它具有极强的可扩展性。错误很少见,支持迅速。Yacine指出,费用不确定,前两个用户免费。对于游戏较小的小型工作室,值得评估其他选择。Visual Studio集成开箱即用。但是我们很幸运能在我们的工作室里有一个完整的Perforce发烧友,从零开始为VS写一个优秀的源提供商。
paulecoyote

如果您负担得起,Perforce太棒了。我并没有使用所有的版本控制系统,但是在10年的商业游戏开发以及数个版本控制系统中,这是我使用过的最好的版本。它可以快速,可靠地处理大型数据文件,如果设置正确,则可以在相对较慢的Internet连接上的多站点设置中很好地执行。Visual Studio集成可能不是完美的,但是非常可靠。
bluescrn

1
如果我必须为大型游戏开发选择一个 VCS,那就是Perforce。如果可以选择多个,则可以为文本资产(代码,脚本和其他杂项数据文件)添加DVCS,但为二进制资产保留Perforce。
dash-tom-bang 2010年

2
我参与了一个使用Perforce的大型游戏项目,并且完全困惑于任何人都愿意为此付费。即使在局域网上,与服务器同步的需求也令人讨厌。我了解“协调离线工作”功能,但实际上,工作流程非常麻烦,以至于当网络出现打ic时,您根本无法工作。如果您不使用带有P4插件的IDE,或者只想从命令行或其他工具在此编辑文件,则必须回到P4客户端并做一些记账工作。没有其他的VCS会在工作中设置很多障碍。
Suboptimus

27

颠覆

  • 开源,集中化

  • Blender文件-我不确定.blend文件是否为二进制文件(它们看起来像这样),但是将它们添加到Subversion中没有问题。经过一些实验,更改后的文件的文件大小增加似乎是正常的,因此它并不仅仅是复制整个文件。

  • 大型项目-可行,尽管可能会变得古怪。它绝对能够处理至少5.5 GB的存储库(服务器上存储库目录的总大小;主要是二进制资产)。

  • 客户端上的重复数据-Subversion将用户工作区中每个文件的重复副本保留为原始副本。这样做的好处是您可以执行差异或还原而无需返回服务器。缺点是10个工作文件占用20个磁盘空间。

  • 忽略列表是目录的属性(简单带有gui,在命令行上令人讨厌)。

  • Subversion允许锁定文件/资产-如果多个艺术家和设计师在同一个文件上工作,这将非常有用。

  • 外部是处理项目之间共享(例如,库或基本)代码的好方法。


大型项目-KDE,GNOME。
Matias Valdenegro

* FSFS的恢复非常脆弱-因此应格外小心备份。*易于理解,TortoiseSvn是一个很好的客户。*开源错误跟踪器,持续集成系统等通常都支持“开箱即用”的Subversion。*有一些关于使用Subversion的好书。
paulecoyote

1
@paulecoyote,这是一个Wiki帖子,您可以随时使用新信息(而不仅仅是评论)对其进行编辑。
独眼巨人

1
SVN非常适合与Tortoise SVN(tortoisesvn.net)一起使用,该客户端可以很好地集成到上下文菜单中并为所有操作提供GUI。不幸的是,乌龟没有Linux / Mac OS端口(至少在编写此端口时)。提示:如果与多个人一起工作,请在提交之前始终更新(和合并/解决冲突)。
2013年

7

外星人脑

Avid

Alienbrain是娱乐业艺术家的数字资产管理系统

  • 商业化(比Perforce贵),集中式
  • 旨在与其他专业2D和3D工作流程工具集成,例如Photoshop,Maya,3ds Max,Microsoft Visual Studio等。

没有 AlienBrain的经验,只是从Mike McShaffry 的《Game Coding Complete》一书中听说过。他似乎对此高度评价:

与其他主要旨在与Visual Studio很好地集成而不是与Photoshop和3D Studio Max之类的创造性应用程序集成的艺术家不同,艺术家和其他贡献者实际上将使用此产品。其他产品的最大缺点之一是它们对非文本文件的处理过于幼稚。AlienBrain在编写这些文件时就牢记这些。

当然,他也将其描述为:

对于那些确实存在严重的资产跟踪问题和同样严重的预算的人 ...


是!最后一个得到它的人:资产和代码需要不同的工具!+1
jacmoe 2010年

3
我在AlienBrain的经验是,作者没有开发游戏。它不是可靠的源代码控制解决方案。某些功能对某些团队来说很不错,但是某些最酷的广告功能却没有以有用的方式实现(例如,登台界面,有人可以在其中“检查”资产)。不幸的是,您将无法知道要进行审核的内容和不进行审核的内容,并且在同步时还是可以得到。此外,它不缓存任何内容,因此同步需要测试每个文件。对于许多演出,这是缓慢的。:)
dash-tom-bang 2010年

关于AlienBrain的唯一有用的事情是与Max文件一起使用的预览窗口。其他所有东西都是垃圾。
tenpn

1
由于不是第一手经验,因此不确定是否具有建设性,但是我从事过几个项目,这些项目在我从事该项目之前一直在使用AlienBrain,并且不再使用它,而且没人能说些好话它。我对它的阅读和口口相传的记忆是,它突然出现在现场,听起来很酷,有些买得起的人尝试了一下,最终意识到这是一个错误。
Suboptimus

3

Team Foundation服务器

来自微软

  • 商业广告
  • 集中
  • 与Visual Studio很好地集成
  • 非VS用户(即艺术家)的良好Windows资源管理器集成
  • 支持“ Shelved”变更集,这与git中的“ stashing”有点类似,但它会传递给服务器;您还可以将这些架子公开,以允许其他用户为您集成它们。
  • 自2012年以来,它已经在Visual Studio中直接内置了一些非常好的代码审查工作流
  • 合并工具的最新版本非常好。自动合并效果很好。
  • 支持大型和绑定文件就好了(显然您无法合并它们)
  • 非常好的构建服务器
  • 支持门禁检入,这允许在将架子集提交到存储库之前对其进行评估(通过自动构建,单元测试,代码分析)。
  • 很好的项目管理工具(不是严格的源代码控制功能,但确实有用),可提供从高级需求到代码的可追溯性。

我在MILSPEC模拟器项目中广泛使用了TFS,这非常好。如果您使用的是Mac,尽管目前有一个eclipse插件,但可能不是最好的。云托管版本支持源代码管理后端的git存储库。

它在Visual Studio Online上最多可免费供五个用户使用(允许封闭源;没有存储库大小限制),该位置托管在云中。如果要在本地托管,则价格可能很高。

我最喜欢的东西是软件工程管理功能,以及它非常愉快地处理大文件和二进制文件的事实。


1
新的Visual Studio Online最多可供5个用户免费使用,并托管在云中(可以很好地备份等)。可以使用它执行TFS或Git。非常适合独立游戏开发。
罗伯特·弗雷泽
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.