Die Verzweigung hängt ein wenig von der VCS-Unterstützung für die Funktion ab (dh, ob das VCS es einfach oder schwierig macht).
Sie möchten jedoch mindestens einen Zweig für jede unabhängig unterstützte Version Ihres Projekts. Das heißt, wenn Sie über "Game 2" und "Game 2 + Expansion" verfügen, die separate Produkte sind, die aus derselben Codebasis erstellt wurden und auf die Sie patchen und Updates ausgeben können müssen, möchten Sie jedes dieser Produkte haben existieren in einer eigenen Verzweigung von der Hauptcodebasis, so dass Korrekturen an der Kerncodebasis unabhängig in jedem dieser Produkte zusammengeführt werden können. (In der Regel werden diese Zweige erstellt, wenn jedes Produkt veröffentlicht wird, oder einige Tage / Wochen zuvor, wenn in der Codebasis Personen an Dingen arbeiten, die Sie mit der Erstveröffentlichung nicht löschen möchten.)
Wenn Sie mit einem VCS arbeiten, das die Verwendung von Zweigen schwierig oder schmerzhaft macht (SourceSafe, svn usw.), sind Sie wahrscheinlich am glücklichsten, wenn Sie für jedes freigegebene Produkt einen Zweig "release" beibehalten und Ihre Hauptentwicklung in "trunk" durchführen. Zusammenführen von Änderungen von "trunk" in die "release" -Zweige, wenn Sie Hotfixes für diese Releases veröffentlichen müssen.
Wenn Sie auf der anderen Seite mit einem der neueren VCS-Systeme arbeiten, die auf Verzweigung und Zusammenführung (Git, Bazaar, Mercurial usw.) basieren, sind Sie wahrscheinlich am glücklichsten, wenn Sie Ihre Entwicklung in kurzer Zeit durchführen -gelebte "Feature" -Zweige. Wenn Sie beispielsweise an der KI-Pfadfindung arbeiten, können Sie eine "Pfadfindungs" -Verzweigung erstellen und den Code dort implementieren. Wenn Sie fertig sind, führen Sie diese Verzweigung wieder in Ihrem Hauptentwicklungsstamm zusammen und löschen (optional) die Verzweigung, in der Sie gearbeitet haben. Der Vorteil dieses Ansatzes besteht darin, dass Sie mehrere Aufgaben gleichzeitig ausführen können, anstatt eine abzuschließen bevor Sie mit dem nächsten beginnen.
In meinem aktuellen Home-Projekt (mit git) sind derzeit fünf verschiedene Feature-Zweige aktiv, die an verschiedenen Features arbeiten. Zwei davon sind alternative Ansätze, um das Gleiche zu tun (für das Profiling), zwei sind experimentelle Ideen für die Spielmechanik und einer ist ein großer Umgestalter meiner KI-Systeme und tatsächlich so kaputt, dass der Code nicht richtig kompiliert werden kann jetzt. Aber es ist in seinem Feature-Zweig als Referenz und als Backup festgeschrieben und es ist kaputt, was mich nicht davon abhält, an den anderen Features zu arbeiten. Diese anderen Feature-Zweige (und auch der Hauptentwicklungs-Trunk) werden weiterhin korrekt kompiliert und ausgeführt.
Nach meiner Erfahrung mit der Entwicklung professioneller Spiele für große Teams stecken wir immer noch hauptsächlich in älteren (und kommerziell unterstützten) Versionskontrollsystemen. Perforce wird wahrscheinlich am häufigsten verwendet, gefolgt von Subversion. Überall, wo ich gearbeitet habe, gab es einen Trunk-Zweig und dann einen separaten Release-Zweig für jedes Ergebnis (Meilenstein / Demo / Release / etc). Gelegentlich macht jemand einen persönlichen Zweig für eine große Veränderung, die er vornimmt oder testet, aber dies ist äußerst selten und normalerweise für Dinge wie "das Spiel so umwandeln, dass es mit dieser anderen Physikbibliothek läuft", die möglicherweise nicht bis zum laufen kommen freigegebenes Produkt.