分支在某种程度上取决于VCS对功能的支持(即:VCS是使它变得容易还是困难)。
但是至少,您需要为项目的每个独立支持的版本提供一个分支。也就是说,如果您具有“游戏2”和“游戏2 +扩展”,它们是从同一代码库中构建的独立产品,并且您需要能够对其进行补丁和发布更新,那么您希望每个都有它们存在于主代码库的各自分支中,因此可以将对核心代码库的修复独立地合并到每个产品中。(通常,这些分支是在每个产品发布时创建的,或者如果您不希望最初发布的版本中的代码库中有人从事某些工作,则可能在几天/几周之前创建)
如果使用的VCS使得分支的使用变得棘手或痛苦(SourceSafe,svn等),那么您可能最乐意为每个已发布的产品维护一个“ release”分支,并在“ trunk”中进行主要开发,当您需要发布针对这些发行版的修补程序时,可以将“ trunk”中的更改合并到“ release”分支中。
另一方面,如果您正在使用围绕分支和合并构建的较新的VCS系统之一(git,Bazaar,Mercurial等),那么在很短的时间内您可能会最快乐地进行开发的“功能”分支。例如,如果您正在研究AI寻路,则可以创建一个“寻路”分支并在其中实现代码。完成后,您可以将该分支合并回到开发的主干中,并(可选)删除您正在使用的分支。这种方法的好处是,它使您可以同时处理多个任务,而无需完成一个任务任务,然后再开始下一个。
在我当前的家庭项目(使用git)中,我现在有五个不同的功能分支处于活动状态,正在处理各种不同的功能。其中两种是做同一件事(用于概要分析)的替代方法,两种是实验性的游戏机制构想,一种是我的AI系统的重要重构,并且实际上被破坏了,导致代码无法正确编译现在。但是它已经提交到其功能分支中以供参考和备份,并且它的损坏并没有阻止我从事其他功能的开发。那些其他功能分支(以及主要开发主干)仍然可以正确编译并运行。
根据我在大型团队专业游戏开发中的经验,我们仍然主要还是停留在较旧(且受商业支持)的版本控制系统上。Perforce可能是最常用的,其次是Subversion。在我工作过的任何地方,我们都有一个“ trunk”分支,然后为每个可交付成果(里程碑/ demo / release / etc)提供一个单独的“ release”分支。有时,某人会为他们正在做出或测试的一些巨大变化做出一个个人分支,但这是极为罕见的,通常用于诸如“将游戏转换为使用该不同的物理库来运行”之类的事情,而这可能实际上并没有经过已发布的产品。