Rozgałęzienie zależy trochę od obsługi funkcji przez VCS (tj. Od tego, czy VCS czyni to łatwym, czy trudnym).
Ale przynajmniej potrzebujesz gałęzi dla każdej niezależnie obsługiwanej wersji twojego projektu. Oznacza to, że jeśli masz „Game 2” i „Game 2 + Expansion”, które są oddzielnymi produktami zbudowanymi z tej samej bazy kodów i do których musisz mieć możliwość łatania i wydawania aktualizacji, to chcesz mieć każdy z nich istnieją we własnej gałęzi poza główną bazą kodu, dzięki czemu poprawki do podstawowej bazy kodu można połączyć niezależnie z każdym z tych produktów. (Zazwyczaj te gałęzie są tworzone po wydaniu każdego produktu, a może kilka dni / tygodni wcześniej, jeśli w bazie kodu pracują ludzie, których nie chcesz wychodzić z pierwszą wersją)
Podczas pracy z VCS, który sprawia, że korzystanie z gałęzi jest trudne lub bolesne (SourceSafe, svn itp.), Prawdopodobnie będziesz najszczęśliwszy, utrzymując gałąź „release” dla każdego wydanego produktu i robiąc główny rozwój w „trunk”, łączenie zmian z „trunk” do gałęzi „release”, jeśli i kiedy trzeba wydać poprawki dla tych wydań.
Jeśli natomiast pracujesz z jednym z nowszych systemów VCS zbudowanych wokół rozgałęziania i łączenia (git, Bazaar, Mercurial itp.), Prawdopodobnie będziesz najszczęśliwszy, robiąc swój rozwój w bardzo krótkim czasie - żywe gałęzie „funkcji”. Na przykład, jeśli pracujesz nad wyszukiwaniem ścieżek AI, możesz utworzyć gałąź „wyszukiwanie ścieżek” i zaimplementować tam kod. Po zakończeniu scalasz tę gałąź z powrotem do głównej gałęzi rozwoju i (opcjonalnie) usuwasz gałąź, w której pracujesz. Zaletą tego podejścia jest to, że pozwala ci pracować nad wieloma zadaniami jednocześnie, zamiast konieczności wykonania jednego. zadanie przed rozpoczęciem następnego.
W moim bieżącym projekcie domowym (używając git) mam teraz pięć różnych gałęzi funkcji, pracujących nad różnymi różnymi funkcjami. Dwa z nich to alternatywne podejścia do robienia tego samego (do profilowania), dwa to eksperymentalne pomysły na mechanikę gry, a jeden jest dużym refaktorem moich systemów AI i jest faktycznie uszkodzony w taki sposób, że kod nie kompiluje się poprawnie teraz. Ale jest zaangażowany w gałęzi funkcji w celach informacyjnych i tworzenia kopii zapasowych, a jego uszkodzenie nie powstrzymuje mnie przed pracą nad innymi funkcjami; Te inne gałęzie funkcji (a także główny pień programistyczny) nadal się kompilują i działają poprawnie.
Z mojego doświadczenia w profesjonalnym tworzeniu gier przez duży zespół, nadal tkwimy głównie w starszych (i wspieranych komercyjnie) systemach kontroli wersji. Prawdopodobnie najczęściej stosuje się Perforce, a następnie Subversion. Wszędzie, gdzie pracowałem, mieliśmy gałąź „trunk”, a następnie oddzielną gałąź „release” dla każdego produktu (kamień milowy / demo / release / itp.). Czasami ktoś zrobi osobistą gałąź dla jakiejś ogromnej zmiany, którą wprowadza lub testuje, ale jest to niezwykle rzadkie i zwykle dotyczy rzeczy takich jak „konwersja gry do działania z tą inną biblioteką fizyki”, która może nie przejść do wydany produkt.