Game Engine Architecture by Jason Gregory:2.1 版本控制(1)

来源:互联网 发布:淘宝评价晒不了照片 编辑:程序博客网 时间:2024/05/16 07:56

在我们开始踏上游戏引擎架构这个迷人的旅途之前,用一些基本的工具及其它准备来武装自己是很重要的。在接下来的两章里,我们将回顾一下在这个旅程中将会用到的软件工程概念及实践经验。在第二章,我们将会探究一下被大多数专业的游戏工程师所采用的工具。接下来在第三章,我们将通过回顾一些在面向对象编程、设计模式、大型C++程序开发中重要的主题来结束我们的准备工作。
游戏开发是软件工程中最困难涉及面最广阔的领域之一,因此请相信我,若想在这个有时变幻莫测的领域中顺利进行的话,很好的准备是很有必要的。对有的读者来说,接下来的这两章内容可能会非常的熟悉,不过,我鼓励你最好不要完全跳过这两章。我希望它们能作为一个很好的复习过程。谁知道呢,你可能甚至发现一两个新的小窍门。


2.1 版本控制(version control)
一个版本控制系统(version control system)是一种能允许多个用户集体对一组文件进行操作的工具。它包含了每个文件的历史记录,所以每次改变都能被追踪并且如果有必要的话进行回溯。它允许多个用户同时修改文件-甚至是同一个文件,没有任何一个人会损坏其他人的成果。版本控制这个名称是来自于它能对文件版本的历史进行追踪的能力。它有时候也被叫作源代码管理(source control),因为它主要用于计算机程序员来管理他们的源代码。不过,版本控制也可用于其它类型的文件。版本控制系统一般来说非常擅长于管理文本文件,这个原因接下来我们会讲到。但是,许多游戏工作室也用同一个版本控制系统来源代码(文本文件)和游戏资源如贴图、3D网格、动画、音频数据(一般是二进制文件)

2.1.1 为什么要用版本控制?
只要软件是由一个多名成员的团队开发,版本控制就是非常重要的。版本控制:
* 一个中央数据库能让工程师分享源代码
* 保持对每个源文件的每次改动的历史记录
* 提供一个允许对指定代码版本进行标记及以后恢复的机制
* 允许代码的版本离开主要开发线进行分支,这个功能往往用来制作demo或者对旧版的软件制作补丁包

甚至在一个单人项目中源代码控制系统也是非常有用的。尽管它的支持多用户能力没有被用到,但它的其它能力,如保持改动的历史记录,标记版本,为demo和补丁包创建分支,追踪bug,等,还是很有价值的。


2.1.2 常见的版本控制系统
这是一些你作为一个游戏工程师的职业生涯中可能会碰到的最常见的版本控制系统。
* SCCS和RCS. Source Code Control System(SCCS)和Revision Control System(RCS)是两个最古老的版本控制系统。都采用了命令行方式,主要流行于UNIX平台。
* CVS. Concurrent Version System(CVS)是一个重型的专业的基于命令行的源代码控制系统,最初是建立在RCS的基础之上的(不过现在已经作为一个独立的工具实现了).CVS流行于UNIX系统,不过在其它开发平台如Windows系统也能使用。它是开源的,基于GPL协议(Gnu General Public License). CVSNT(也即WinCVS)是一个基于CVS并跟它操持一致性的原生的Window版本的实现。
* Subversion. Subversion是一个定位于取代CVS并要做得更好的开源版本控制系统。因为它是开源免费的,对于个人项目、学生项目和小型工作室来说是一个不错的选择。
* Git. 这是一个开源的版本控制系统,它曾用于许多经典的项目,包括Linux kernel.在git开发模式下,程序员对文件作修改并将它提交到一个branch。程序员然后就可以把它的改动又快又方便的整合到其它代码branch中去,因为git“知道”如何对改动进行排列并将之重组为一个新的版本-这个过程被git称之为rebasing. 这样做的结果是一个能够高质量、快速的处理多个代码branch的版本控制工具。更多信息请访问:http://git-scm.com/.
* Perforce. Perforce是一个专业级的源代码控制工具,包括命令行及GUI界面两种操作方式。Perforce一个出名的原因是它的change list的概念的提出。change list是作为一个逻辑单元的一组被修改过的源文件的集合。change lists自动的登记到数据库里面了- 不论整个change list都被提交,还是都一个都没被提交。许多公司都使用Perforce,包括Naughty Dog和EA.
* NxN Alienbrain. Alienbrain是一个强大的功能丰富的针对游戏行业设计的版本控制工具。它的亮点在于支持大型数据包括文本的源代码文件和二进制的游戏资源,还有一个自定义的用户界面,能针对美术师、制作人、程序员进行个性化界面。
* ClearCase. ClearCase是一个专业级的针对大型软件项目使用的源代码控制工具。它非常的强大,并且使用了一个独特的扩展了Windows Explorer的用户界面。我很少见到在游戏行业中使用ClearCase,可能是因为它是最贵的版本控制系统之一。
* Microsoft Visual SourceSafe. SourceSafe是一个轻量级的源代码控制工具,已经成功用于一些游戏项目。