简体   繁体   English

使用UDK进行游戏开发的版本控制系统?

[英]Version control system for game development with UDK?

We're a team thinking of making a game using the Unreal Development Kit and we're looking around for version control solutions. 我们的团队正在考虑使用虚幻开发工具包制作游戏,我们正在寻找版本控制解决方案。

I have always preferred decentralized VCSs like Git and Mercurial, and used it for all my personal projects. 我一直偏爱分散的VCS,如Git和Mercurial,并将其用于我的所有个人项目。 Though I have heard of problems regarding game development using these systems, with them not being suitable for big binary files. 虽然我听说过使用这些系统进行游戏开发的问题,但它们并不适合大二进制文件。

Subversion seems like a good solution, however I have not used it at all in the past, so I don't really know what it offers. Subversion似乎是一个很好的解决方案,但我过去根本没有使用它,所以我真的不知道它提供了什么。

You can use Mercurial or Git without a problem. 您可以毫无问题地使用Mercurial或Git。 I don't know why @TomTom states otherwise in such a way without providing any hints about the reasons. 我不知道为什么@TomTom在没有提供任何关于原因的提示的情况下以这种方式说明。

Sure you will have to manage the various binary files that comes with every game development (movies, texture, maps, etc). 当然,您必须管理每个游戏开发(电影,纹理,地图等)附带的各种二进制文件。 But both software have ways to handle them. 但是这两种软件都有办法处理它们。

Mercurial 水银

Mercurial has various extensions to deal with large files, especially binary ones. Mercurial有各种扩展来处理大文件,特别是二进制文件。

Since version 2.0, the Large File extension is included in Mercurial and you can use it without downloading anything else. 从版本2.0开始, 大文件扩展包含在Mercurial中,您无需下载任何其他内容即可使用它。 Files are not directly stored in the repository, but Mercurial tracks which version of the file is needed for each changeset, so you can download a precise version of your game with the right file when you need them. 文件不直接存储在存储库中,但Mercurial会跟踪每个变更集所需的文件版本,因此您可以在需要时使用正确的文件下载游戏的精确版本。

Before 2.0, there was mainly two extension used : 在2.0之前,主要使用了两个扩展:

  1. Bfiles extension , which was used as the base for the new extension in 2.0 Bfiles扩展 ,用作2.0中新扩展的基础
  2. Bigfile extension , which is a little more complicated than the two others in my point of view Bigfile扩展 ,在我的观点中比其他两个更复杂一点

Git 混帐

I'm not really familiar with Git possibilities to handle large files, but I know various solution exists. 我不太熟悉Git处理大文件的可能性,但我知道存在各种解决方案。 This post should give some good pointers : Managing large binary files with git 这篇文章应该给出一些好的指示: 使用git管理大型二进制文件

I've hear a lot of good about git-annex . 我听说很多关于git-annex的好消息。

SVN SVN

I've used SVN with large files, and I don't have the impression that it manages them better than Mercurial (without extensions) out of the box. 我已经将SVN与大文件一起使用,并且我没有比Mercurial(没有扩展名)更好地管理它们的印象。

If you decide to use an extension to manage large files with Mercurial / Git, Subversion is way behind in term of functionnality. 如果你决定使用扩展来管理Mercurial / Git的大文件,那么Subversion在功能方面就落后了。

Conclusion 结论

About your concern to keep the binary files version in sync with the source, bot Mercurial and Git extensions handle this very well. 关于保持二进制文件版本与源同步的问题,bot Mercurial和Git扩展可以很好地处理这个问题。

Each version of the binary files is stored in a separate centralized directory (the largefile store in Mercurial terms) and when a dev clone the repository or update to a particular changeset, only the needed files are download from this store. 每个版本的二进制文件都存储在一个单独的集中目录(Mercurial术语中的largefile store )中,当dev克隆存储库或更新到特定的变更集时,只从该存储中下载所需的文件

You can even use the same store for various repository ! 您甚至可以将同一商店用于各种存储库!

The process of adding a file to the store or updating it is nearly transparent to the dev, so no problem about a long learning curve for example. 将文件添加到商店或更新文件的过程对开发人员来说几乎是透明的,因此例如对于长学习曲线没有问题。

To conclude, I really don't see why Git or Mercurial are not up to the task and no other answer gives any real reason. 总而言之,我真的不明白为什么Git或Mercurial没有完成任务,没有其他答案给出任何真正的理由。

In my opinion, big game companies sticks with older tools because change takes time and when you've paid for something, you use it ! 在我看来,大型游戏公司坚持使用较旧的工具,因为更改需要时间,当您付费购买时,您会使用它! How many companies out there are still using VSS or CVS just because the hierarchy won't hear anything about something else ? 有多少公司仍在使用VSS或CVS,因为层次结构不会听到任何其他内容? We just migrated to TFS (from VSS) last month where I'm working... 上个月我们刚刚迁移到TFS(来自VSS)我正在工作......

I'd stick with Git. 我坚持用Git。 What you may lose with the storage of large binary files, you'll more than gain in being able to work together as a team. 存储大型二进制文件可能会导致丢失的内容,您可以通过团队协作获得更多收益。 You'll be updating, changing, merging your code a lot more than just storing binary files, and DVCSs handle this a lot better. 您将更新,更改,合并代码,而不仅仅是存储二进制文件,DVCS可以更好地处理这些问题。

Hq(Mercurial) 2.0 support of big files is great. Hq(Mercurial)2.0支持大文件很棒。

Previously it was LargefilesExtension , but from the version 2.0 this is distributed with core. 以前它是LargefilesExtension ,但是从版本2.0开始,这是与核心一起分发的。

Big game studios generally use http://www.perforce.com/ (to be honest, I have no idea why.) 大型游戏工作室通常使用http://www.perforce.com/ (说实话,我不知道为什么。)

SVN is a pretty good option as well, but it's a bit outdated compared to Git and Mercurial. SVN也是一个不错的选择,但与Git和Mercurial相比,它有点过时了。

Anyway, why would you put large binary files on the repository? 无论如何,为什么要在存储库中放置大型二进制文件? You'll definitely want to add ignore lines for all compiled binary files, etc. Always make sure to only include source files :-) 您肯定希望为所有已编译的二进制文件等添加忽略行。始终确保只包含源文件:-)

Personally I'd stick with Mercurial or Git. 我个人坚持使用Mercurial或Git。

I have always preferred decentralized VCSs like Git and Mercurial, 我总是喜欢分散的VCS,如Git和Mercurial,

TOTALLY unusable. 完全无法使用。 Point. 点。

The trick here is that you can not have one distributed repository the moment your repository is significant and this significance (data amount) is possibly irrelevant for most people. 这里的诀窍是,在您的存储库很重要的时候,您不能拥有一个分布式存储库,这种重要性(数据量)可能与大多数人无关。

If you do game development, you will have tons of version controlled assets that programmers have ZERO interest in. Even most graphics people wont care. 如果你进行游戏开发,你将拥有大量受版本控制的资产,程序员对ZERO感兴趣。甚至大多数图形用户也不会关心。 DCS break apart the moment you can expect your repository to be larger than a typical hard disc. DCS可以在您希望存储库大于典型硬盘的那一刻分崩离析。 And depending how good you are graphics wise you can easily hit thousand+gb opf repository. 根据你的图形有多好,你可以很容易地击中千+ gb opf存储库。 The concept of having to merge that into my local repository as a programmer not dealing with the grpahics except small test graphics makes me kringe - as does it drive the network admin mad. 必须将其合并到我的本地存储库中作为一个程序员而不是处理除了小测试图形之外的grpahics的概念让我感到害怕 - 因为它会让网络管理员疯狂。

This gets even worse when you properly deal with animations / movies on top. 当你正确处理动画/电影时,这会变得更糟。 Every change and render is another version. 每个更改和渲染都是另一个版本。 Boom. 繁荣。 This is bad enough to handle in a central repository (where I can add discs to a central server), it is totally unusable the moment you distribute that to every team member IN EVERY VERSION. 这很糟糕,可以在中央存储库中处理(我可以将光盘添加到中央服务器),当你将它分发给每个版本的每个团队成员时,它就完全无法使用。

Subversion seems like a good solution, 颠覆似乎是一个很好的解决方案,

Possibly, if you can deal with it#s stupidities. 可能,如果你能处理它的愚蠢行为。

I would strongly recommend a prooven solution here - perforce is pretty much able to deal with it prooven. 我强烈推荐一个prooven解决方案 - perforce几乎能够处理它prooven。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM