分岐は、VCSの機能のサポートに少し依存します(つまり、VCSがそれを簡単にするか困難にするか)。
ただし、少なくとも、プロジェクトの個別にサポートされるリリースごとにブランチが必要です。つまり、同じコードベースからビルドされた個別の製品である「ゲーム2」と「ゲーム2 +拡張」があり、パッチを当ててアップデートを発行できるようにする必要がある場合は、これらのそれぞれが必要になります。メインコードベースから離れた独自のブランチに存在するため、コアコードベースの修正をこれらの各製品に個別にマージできます。(通常、これらのブランチは、各製品がリリースされたときに、またはおそらく最初のリリースで外に出たくないコードベースで作業している人がいる場合は数日/数週間前に作成されます)
ブランチを使用するのが面倒または痛みを伴うVCS(SourceSafe、svnなど)を使用する場合、各リリース製品の「リリース」ブランチを維持し、「トランク」でメインの開発を行うのがおそらく最も幸せです。これらのリリースの修正プログラムをリリースする必要がある場合に、「トランク」から「リリース」ブランチに変更をマージする。
一方、分岐とマージ(git、Bazaar、Mercurialなど)を中心に構築された新しいVCSシステムの1つを使用している場合は、おそらく最も短時間で開発を行うことができます。 -「機能」ブランチの存続。たとえば、AIパスファインディングに取り組んでいる場合、「パスファインディング」ブランチを作成し、そこにコードを実装できます。終了したら、そのブランチを開発のメイントランクにマージし、(オプションで)作業していたブランチを削除します。このアプローチの利点は、1つのタスクを完了する必要なく、複数のタスクを同時に作業できることです。次のタスクを開始する前のタスク。
現在のホームプロジェクト(gitを使用)では、現在5つの異なる機能ブランチがアクティブになっており、さまざまな機能に取り組んでいます。それらのうちの2つは同じこと(プロファイリング)を行うための代替アプローチであり、2つは実験的なゲームメカニックアイデアであり、1つは私のAIシステムの大きなリファクタリングであり、実際にはコードが正しくコンパイルされないような方法で壊れています今。しかし、機能ブランチで参照用とバックアップ用にコミットされており、壊れても他の機能の作業を止めることはありません。これらの他の機能ブランチ(およびメインの開発トランクも)は、依然として正しくコンパイルおよび実行されます。
私の大チームによるプロのゲーム開発の経験では、私たちはまだ古い(そして商業的にサポートされている)バージョン管理システムにほとんどこだわっています。Perforceがおそらく最も一般的に使用され、Subversionがそれに続きます。私が働いていたすべての場所に、「トランク」ブランチがあり、次にすべての成果物(マイルストーン/デモ/リリース/など)ごとに個別の「リリース」ブランチがありました。時折、誰かが自分で行ったりテストしたりする大きな変更のために個人的なブランチを作成しますが、これは非常にまれで、通常は「ゲームをこの異なる物理ライブラリで実行するように変換する」などです。リリースされた製品。