शाखा सुविधा के लिए वीसीएस समर्थन पर थोड़ा निर्भर करता है (यानी: क्या वीसीएस इसे आसान या कठिन बनाता है)।
लेकिन कम से कम, आप अपनी परियोजना के प्रत्येक स्वतंत्र रूप से समर्थित रिलीज के लिए एक शाखा चाहते हैं। यही है, अगर आपके पास "गेम 2" है, और "गेम 2 + एक्सपेंशन" है, जो एक ही कोडबेस से निर्मित अलग-अलग उत्पाद हैं, और जिसे आपको पैच करने और अपडेट जारी करने में सक्षम होने की आवश्यकता है, तो आप इनमें से प्रत्येक के लिए चाहते हैं मुख्य कोडबेस से दूर अपनी शाखा में मौजूद हैं, ताकि कोर कोडबेस के फिक्स को इन उत्पादों में से प्रत्येक में स्वतंत्र रूप से विलय किया जा सके। (आमतौर पर, ये शाखाएं तब बनाई जाती हैं जब प्रत्येक उत्पाद जारी किया जाता है, या शायद कुछ दिन / सप्ताह पहले, यदि आपके पास कोडबेस में उन चीजों पर काम करने वाले लोग हैं जो आप प्रारंभिक रिलीज के साथ बाहर नहीं जाना चाहते हैं)
जब वीसीएस के साथ काम किया जाता है जो शाखाओं के उपयोग को मुश्किल या दर्दनाक बनाता है (सोर्ससेफ, स्वन, आदि), तो आप संभवतः प्रत्येक जारी उत्पाद के लिए "रिलीज़" शाखा बनाए रखेंगे, और "ट्रंक" में अपना मुख्य विकास करेंगे। "ट्रंक" से "रिलीज़" शाखाओं में परिवर्तन को मर्ज करना और अगर आपको उन रिलीज़ के लिए हॉटफ़िक्स जारी करने की आवश्यकता है।
यदि, दूसरी ओर, आप नए VCS सिस्टम में से एक के साथ काम कर रहे हैं जो ब्रांचिंग और मर्जिंग (git, Bazaar, Mercurial, आदि) के आसपास बनाया गया है, तो आप शायद बहुत कम समय में अपना विकास कर रहे हैं। "सुविधा" शाखाएँ। उदाहरण के लिए, यदि आप AI पाथफाइंडिंग पर काम कर रहे हैं, तो आप "पाथफाइंडिंग" शाखा बना सकते हैं और वहां कोड लागू कर सकते हैं। जब आप समाप्त कर लेते हैं, तो आप उस शाखा को अपने विकास के मुख्य ट्रंक में मर्ज कर देते हैं, और (वैकल्पिक रूप से) जिस शाखा में आप काम कर रहे थे, उसे हटा देते हैं। इस दृष्टिकोण का लाभ यह है कि यह आपको एक को पूरा करने के बजाय कई कार्यों पर एक साथ काम करने देता है। अगले पर शुरू करने से पहले कार्य।
मेरे वर्तमान होम प्रोजेक्ट में (git का उपयोग करके), मेरे पास अभी पांच अलग-अलग फ़ीचर शाखाएँ सक्रिय हैं, जो विभिन्न विभिन्न विशेषताओं पर काम कर रही हैं। उनमें से दो एक ही काम करने के लिए वैकल्पिक दृष्टिकोण हैं (प्रोफाइलिंग के लिए), दो प्रयोगात्मक खेल मैकेनिक विचार हैं, और एक मेरे एआई सिस्टम का एक बड़ा रिफ्लेक्टर है, और वास्तव में इस तरह से टूट गया है कि कोड सही संकलन नहीं करेगा अभी व। लेकिन यह संदर्भ के लिए और बैकअप के लिए अपनी सुविधा शाखा में प्रतिबद्ध है, और इसे तोड़ा जा रहा है मुझे अन्य विशेषताओं पर काम करने से नहीं रोकता है; वे अन्य सुविधा शाखाएँ (और मुख्य विकास ट्रंक के रूप में अच्छी तरह से) अभी भी संकलित करती हैं और सही ढंग से चलती हैं।
बड़ी टीम के पेशेवर खेल विकास के मेरे अनुभव में, हम अभी भी पुराने (और व्यावसायिक रूप से समर्थित) संस्करण नियंत्रण प्रणालियों के साथ फंस गए हैं। पेरफोर्स शायद सबसे अधिक उपयोग किया जाता है, इसके बाद सबवर्सन होता है। हर जगह मैंने काम किया है, हमारे पास एक 'ट्रंक' शाखा है, और फिर हर डिलिबल (मील के पत्थर / डेमो / रिलीज / आदि) के लिए एक अलग 'रिलीज' शाखा है। कभी-कभी कोई व्यक्ति किसी विशाल परिवर्तन के लिए एक व्यक्तिगत शाखा बनाएगा जिसे वे बना रहे हैं या परीक्षण कर रहे हैं, लेकिन यह अत्यंत दुर्लभ है, और आमतौर पर "इस अलग भौतिकी पुस्तकालय के साथ चलाने के लिए खेल को परिवर्तित करना" जैसी चीजों के लिए है जो वास्तव में नहीं हो सकता है जारी किया गया उत्पाद।