Percabangan sedikit tergantung pada dukungan VCS untuk fitur (yaitu: apakah VCS membuatnya mudah atau sulit).
Tetapi minimal, Anda menginginkan cabang untuk setiap rilis proyek Anda yang didukung secara independen. Artinya, jika Anda memiliki "Game 2", dan "Game 2 + Ekspansi" yang merupakan produk terpisah yang dibangun dari basis kode yang sama, dan Anda harus dapat menambal dan mengeluarkan pembaruan, maka Anda ingin memiliki masing-masing ada di cabang mereka sendiri dari basis kode utama, sehingga perbaikan ke basis kode inti dapat digabungkan ke dalam masing-masing produk ini secara independen. (Biasanya, cabang-cabang ini dibuat ketika setiap produk dirilis, atau mungkin beberapa hari / minggu sebelumnya, jika Anda memiliki orang-orang yang mengerjakan hal-hal dalam basis kode yang Anda tidak ingin keluar dengan rilis awal)
Ketika bekerja dengan VCS yang membuat penggunaan cabang rumit atau menyakitkan (SourceSafe, svn, dll), maka Anda mungkin akan paling bahagia mempertahankan cabang "rilis" untuk setiap produk yang dirilis, dan melakukan pengembangan utama Anda di "trunk", menggabungkan perubahan dari "trunk" ke cabang "release" jika dan ketika Anda perlu merilis hotfix untuk rilis tersebut.
Jika, di sisi lain, Anda bekerja dengan salah satu sistem VCS baru yang dibangun di sekitar percabangan dan penggabungan (git, Bazaar, Mercurial, dll), maka Anda mungkin akan paling bahagia melakukan pengembangan Anda dalam waktu singkat. Cabang "fitur" hidup. Misalnya, jika Anda bekerja pada AI pathfinding, Anda dapat membuat cabang "pathfinding" dan mengimplementasikan kode di sana. Ketika Anda selesai, Anda menggabungkan cabang itu kembali ke batang utama pengembangan Anda, dan (opsional) menghapus cabang yang sedang Anda kerjakan. Manfaat dari pendekatan ini adalah memungkinkan Anda bekerja pada banyak tugas secara bersamaan, daripada harus menyelesaikan satu tugas sebelum memulai selanjutnya.
Dalam proyek rumah saya saat ini (menggunakan git), saya memiliki lima cabang fitur berbeda yang aktif saat ini, mengerjakan berbagai fitur yang berbeda. Dua di antaranya adalah pendekatan alternatif untuk melakukan hal yang sama (untuk pembuatan profil), dua adalah ide mekanik permainan eksperimental, dan satu adalah refactor besar sistem AI saya, dan sebenarnya rusak sedemikian rupa sehingga kode tidak dapat dikompilasi dengan benar sekarang. Tapi itu dilakukan di cabang fitur untuk referensi dan cadangan, dan rusak tidak menghentikan saya dari bekerja pada fitur-fitur lainnya; Cabang-cabang fitur lainnya (dan trunk pengembangan utama juga) masih mengkompilasi dan berjalan dengan benar.
Dalam pengalaman saya tentang pengembangan game profesional tim besar, kami sebagian besar masih terjebak dengan sistem kontrol versi yang lebih lama (dan didukung secara komersial). Perforce mungkin adalah yang paling umum digunakan, diikuti oleh Subversion. Di mana pun saya bekerja, kami memiliki cabang 'trunk', dan kemudian cabang 'rilis' terpisah untuk setiap hasil (tonggak / demo / rilis / dll). Kadang-kadang seseorang akan membuat cabang pribadi untuk beberapa perubahan besar yang mereka buat atau uji, tetapi ini sangat jarang, dan biasanya untuk hal-hal seperti "mengubah permainan untuk dijalankan dengan perpustakaan fisika yang berbeda ini" yang mungkin tidak benar-benar pergi ke produk yang dirilis.