Dallanma, özellik için VCS desteğine biraz bağlıdır (yani: VCS'nin bunu kolaylaştırması veya zorlaştırması).
Ancak en azından, projenizin bağımsız olarak desteklenen her bir sürümü için bir şube istiyorsunuz. Diğer bir deyişle, aynı kod tabanından oluşturulmuş ayrı ürünler olan ve aynı zamanda güncellemeleri düzeltme ve yayınlayabilmeniz gereken "Oyun 2" ve "Oyun 2 + Genişleme" seçeneğine sahipseniz, bunlardan her birine sahip olmak istersiniz. ana kod tabanından kendi dallarında var olurlar, böylece çekirdek kod tabanına yapılan düzeltmeler bu ürünlerin her birine bağımsız olarak birleştirilebilir. (Tipik olarak, bu dallar, her bir ürün piyasaya sürüldüğünde veya ilk birkaç sürümde dışarı çıkmak istemediğiniz kod temeli üzerinde çalışan kişiler varsa, belki de birkaç gün / hafta önce yaratılır)
Dalların kullanımını zor veya acı verici hale getiren bir VCS ile çalışırken (SourceSafe, svn, vb.), O zaman muhtemelen piyasaya sürülen her ürün için bir "sürüm" dalı tutmanız ve "trunk" ana gelişiminizi yapmanız en mutlu olacak, "bosluk" dan "bülten" dallarındaki değişiklikleri bu bültenler için düzeltmeler yapmanız gerektiğinde ve gerektiğinde birleştirmek
Öte yandan, dallanma ve birleşme üzerine inşa edilmiş yeni VCS sistemlerinden biriyle çalışıyorsanız (git, Bazaar, Mercurial, vb.), Gelişiminizi çok kısa sürede yapmaktan büyük mutluluk duyacaksınız. -li "özellik" dalları. Örneğin, AI yol bulma üzerinde çalışıyorsanız, bir "yol bulma" dalı oluşturabilir ve kodu orada uygulayabilirsiniz. İşiniz bittiğinde, o şubeyi ana geliştirme bagajınıza geri koyun ve (isteğe bağlı olarak) çalıştığınız şubeyi silin. Bu yaklaşımın avantajı, bir işi tamamlamak yerine eşzamanlı olarak birden fazla iş üzerinde çalışmanıza izin vermesidir. Bir sonraki başlamadan önce görev.
Şu andaki ev projemde (git kullanarak) şu anda aktif olan ve çeşitli farklı özellikler üzerinde çalışan beş farklı özellik dalım var. İkisi aynı şeyi yapmak için alternatif yaklaşımlardır (profil oluşturma için), ikisi deneysel oyun mekaniği fikirleridir ve biri AI sistemlerimin büyük bir kırıcısıdır ve aslında kodun derlenmeyeceği şekilde bozulmuştur şimdi. Ancak referans ve destek için kendi özellik dalında kararlıdır ve kırılması diğer özellikler üzerinde çalışmamı engellemez; Bu diğer özellik dalları (ve aynı zamanda ana gelişme gövdesi) hala doğru şekilde derlenip çalışır.
Büyük takım profesyonel oyun geliştirme deneyimime göre, hala daha eski (ve ticari olarak desteklenen) sürüm kontrol sistemlerinden mahrum kaldık. Performans muhtemelen en yaygın kullanılanı, ardından Subversion'dur. Çalıştığım her yerde, bir 'trunk' şubesi ve daha sonra her bir teslimat için ayrı bir 'serbest bırakma' şubemiz oldu (dönüm noktası / demo / release / etc). Bazen birileri, yaptıkları ya da test ettikleri büyük bir değişiklik için kişisel bir dal oluşturacak, ancak bu son derece nadirdir ve genellikle “bu farklı fizik kütüphanesiyle oyunu çalıştırmaya dönüştürme” gibi şeyler için geçerlidir. piyasaya sürülen ürün.