एकता में टीमवर्क


30

मेरे पास बिना किसी संस्करण नियंत्रण के एक एकता परियोजना है, और मुझे इसे किसी अन्य डेवलपर के साथ साझा करने की आवश्यकता है ताकि हम दोनों परियोजना पर काम कर सकें।

एकता एसेट्स के साथ अच्छा खेलने के लिए कौन सी रणनीतियों का उपयोग किया जाना चाहिए?


मुझे लगता है कि यह लेख आपको कुछ सुझाव देगा: va.lent.in/blog/2011/12/13/…
Den

2
ड्रॉपबॉक्स संस्करण नियंत्रण का समर्थन करता है, सुविधा को "पैक-रैट" कहा जाता है, लेकिन यह मुफ़्त नहीं है। शुरुआती इंडी डेवलपर्स के लिए सलाह के लिए, पहले कई सवाल पूछे गए हैं। मैं आपको थोड़ा घूमने का सुझाव दूंगा। अंत में GameDev एसई में आपका स्वागत है!
क़ाज़ी इरफ़ान

एसेट सर्वर के बिना आगे और पीछे के दृश्यों और दृश्यों को आगे बढ़ाते समय कुछ समस्याएँ हो सकती हैं
सिड

जवाबों:


17

एकता में संस्करण नियंत्रण का ठीक से समर्थन करने के लिए एक अंतर्निहित सुविधा है।

बस File-> Project Settings-> Editor में जाएं और एक्सटर्नल वर्जन कंट्रोल को इनेबल करें।


4
क्या यह केवल प्रो-फीचर है? मुझे वह मेनू आइटम यूनिटी 2.6 के मुफ्त / इंडी विंडोज संस्करण में नहीं दिखता है।
जेम्स

1/30/2011 तक, यह केवल प्रो है। का दूसरा पैराग्राफ देखें: unity3d.com/support/documentation/Manual/…
ojrac

11
यूनिटी के नवीनतम डेवलपर पूर्वावलोकन (3.5 RC1) ने मुक्त संस्करण में संस्करण नियंत्रण का समर्थन करने के लिए एक बदलाव किया है। चेंजलॉग ( unity3d.com/unity/preview/notes ) से: लाइसेंस: जेनेरिक एक्सटर्नल वर्जन कंट्रोल (.meta फाइल्स) अब फ्री वर्जन में उपलब्ध हैं।
चिरकालिक खेल प्रोग्रामर

2
भविष्य के आगंतुकों के लिए सिर्फ फी, इस उत्तर पर तारीख नोट करें; यह अब तक पुराना है। अब किसी भी सेटिंग को चालू करने की आवश्यकता नहीं है; बस फ़ोल्डर "एसेट्स" का संस्करण तैयार करें (सुनिश्चित करें कि आपका संस्करण नियंत्रण छिपी हुई है। मेटा फ़ाइलें उठा रहा है) और "प्रोजेक्ट सेटिंग्स" और बाकी सब को अनदेखा करें।
27'14

10

मैं Git का उपयोग करने की सलाह देता हूं, यह मुफ़्त है और आसपास सबसे अच्छा है।

कुछ समय पहले मैंने अपने ब्लॉग पर संस्करण नियंत्रण (Git का उपयोग करके) के बारे में लिखा था

कहानी संक्षिप्त में:

बाह्य संस्करण नियंत्रण सक्षम करें फ़ाइल-> प्रोजेक्ट सेटिंग्स-> संपादक और रीपो पर अनावश्यक सामान से बचने के लिए .ignignore फ़ाइल बनाएं (यह वास्तव में आवश्यक नहीं है, लेकिन यह विकास के दौरान अनमोल होगा)।

यहां बताया गया है कि फ़ाइल को कैसा दिखना चाहिए:

[Oo]bj/
[Tt]emp/
[Ll]ibrary

#These are files in the root folder of the project
*.tmproj
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.pidb
*.userprefs

यह लगभग रूप में ही है .gitingoreएकता परियोजनाओं के लिए मैं उपयोग लेकिन कुछ ommissions साथ: [Bb]uild/, *.booproj, sysinfo.txt। मुझे पूरा यकीन है कि मैं जो भी उपयोग करता हूं, वह GitHub के नए-रेपो टेम्प्लेट्स फॉर यूनिटी ( github.com/github/gitignore/blob/master/Unity.gitignore ) पर आधारित है, जो किसी भी ऑब्जेक्टिव-सी (जब iOS को लक्षित करता है)।
स्लिप डी। थॉम्पसन

आपके ब्लॉग पर आंतरिक सर्वर त्रुटि।
संतोष कुमार

4

एकता 3.0 को तोड़फोड़ के साथ अच्छी तरह से खेलने के लिए कॉन्फ़िगर किया गया है। (पहले की तुलना में कम से कम अच्छे) मुझे नहीं पता कि यह केवल प्रो संस्करण में है या नहीं, मुझे जांचना होगा।

सामान्य तौर पर, सबसे अधिक सलाह संस्करण नियंत्रण प्रणाली यूनिटी एसेट सर्वर है।


4

एकता विशिष्ट - हर समय विभिन्न दृश्यों और विभिन्न कोड फ़ाइलों पर काम करती है, और दूसरे व्यक्ति के परिवर्तनों को मैन्युअल रूप से मर्ज करती है। यदि आप दोनों को एक ही दृश्य पर काम करने की आवश्यकता है, तो इसे डुप्लिकेट करें और परीक्षण के रूप में प्रतिलिपि का उपयोग करें। अन्यथा, यदि आप दोनों एक ही दृश्य को संशोधित करते हैं, तो एक व्यक्ति के परिवर्तन दूसरे को अधिलेखित कर देंगे। आप अभी भी अपनी स्रोत फ़ाइलों के लिए स्रोत नियंत्रण का उपयोग कर सकते हैं, बस उन्हें एक बार बनाए जाने के बाद, फ़ाइल सिस्टम में या एकता के माध्यम से उन्हें बिल्कुल भी स्थानांतरित न करें।

शुरुआती सलाह - अपने आप को एक सभ्य अंतर / मर्ज टूल प्राप्त करें (मुझे WinMerge पसंद है ) और इसका उपयोग करने के लिए उपयोग करें कि यह देखने के लिए कि अन्य व्यक्ति ने क्या बदलाव किए हैं, और मैन्युअल रूप से विवादित फ़ाइलों में परिवर्तन को मर्ज करें। एक केंद्रीय प्रलेखन स्थान सेट करें, जैसे। Google लेखन दस्तावेज़ या विकी, और अपना दस्तावेज़ वहां रखें - प्रलेखन में एक मूल सुविधा सूची होनी चाहिए, ताकि आप जान सकें कि आप क्या लक्ष्य बना रहे हैं, और आदर्श रूप से एक कार्य सूची, जो स्पष्ट संकेत के साथ सुविधा सूची से निकली है। जो कार्य पर काम कर रहा है। एक दूसरे से बात करने के लिए एक मोटा विचार पाने के लिए कि किस कार्य को करने की आवश्यकता है और उन्हें सूची से बाहर कर दें जैसा कि वे प्राप्त करते हैं। यह देखने के लिए कि क्या सब कुछ अभी भी मान्य है और यदि आपको किसी प्राथमिकता को पुनः प्राप्त करने की आवश्यकता है, तो सूची का पुनरीक्षण और पुनर्मूल्यांकन करते रहें।


धन्यवाद! आपने मुझे मेरी दोनों समस्याओं पर बड़ी सलाह दी।
nosferat

4

मैं एक ऐसी टीम के साथ काम करता हूं जो खुद को डिफेक्टिव स्टूडियो कहती है। हम वर्षों से एक ही मुद्दे से जूझ रहे हैं, और अभी हाल ही में मैंने अंततः गेमबिज को मर्ज करने में मेरी मदद करने के लिए एक एक्सटेंशन दिया और लिखना शुरू किया।

मूल रूप से दृष्टिकोण एक विंडो में एक इंस्पेक्टर जैसा इंटरफ़ेस बनाने के लिए है जो तुलना के लिए प्रत्येक गेमबजेक्ट, घटक और संपत्ति के साथ-साथ साइड-लाइन करता है, और एक तरफ से दूसरे तक मूल्यों (या संपूर्ण वस्तुओं) को कॉपी करने के लिए बटन प्रदान करता है। यदि आप SerializedPropertyकक्षा से परिचित हैं , तो वही है जो यहाँ काम कर रहा है। हम मूल रूप से एक जीयूआई है कि सही और बाईं ओर के बीच foldout राज्य सिंक्रनाइज़ करता है बनाने के लिए, और ऊर्ध्वाधर अंतरिक्ष बनाता है जहाँ भी एक GameObjectयाComponentकेवल दाईं या बाईं ओर मौजूद है। एक तुलनात्मक फ़ंक्शन प्रत्येक स्तर पर समानता की जांच करता है, और समानता की स्थिति के आधार पर प्रत्येक पंक्ति की पृष्ठभूमि को लाल या हरे रंग में बदल देता है। ऐसी कोई भी पंक्ति जिसके बच्चों में अंतर होता है, वह भी लाल हो जाएगी, और हमने पेड़ की फिर से खोज करने और उन सभी वस्तुओं का विस्तार करने के लिए एक निफ्टी बटन भी शामिल किया जो अलग-अलग हैं या उनके बच्चों में अंतर हैं।

साथ ही, मास्क फ़ील्ड का एक सेट है जो आपको कुछ घटक प्रकारों को तुलना से बाहर फ़िल्टर करने देता है। GameObject नाम, परत और टैग जैसी विशेषताओं की तुलना भी की जाती है। हम उपयोग करते हैं SerializedObjectऔर संपत्तियों के SerializedPropertyमाध्यम से लूप करते gameObjectहैं, और उन्हें वैसे ही खींचते हैं जैसे वे निरीक्षक में खींचे जाते हैं। यह स्थिरता सुनिश्चित करता है, और कोड के लिए बहुत आसान की एक बिल्ली है!

यहां छवि विवरण दर्ज करें

एक अंतिम निफ्टी विस्तार यह है कि तुलना प्रक्रिया (ट्रिगर जब ऑब्जेक्ट लोड किए जाते हैं और जब भी कोई परिवर्तन किया जाता है) एक एड-हॉक कॉरटीन में चलाया जाता है जिसे EditorWindow.Updateफ़ंक्शन द्वारा अपडेट किया जाता है, ताकि मामले में आप किसी हग कॉम्प्लेक्स ऑब्जेक्ट की तुलना कर रहे हों, खिड़की संपादक बंद नहीं करता है। यह बच्चों के सैकड़ों (या हजार!) के साथ वस्तुओं की तुलना करते समय बहुत जरूरी था। सब के सब, यह एक "लेगो प्रोजेक्ट" की तरह था जैसा कि मेरे दोस्त कहना चाहते हैं, लेकिन निश्चित रूप से एक अमूल्य उपकरण है जो तुरंत हमारे सहयोग वर्कफ़्लो का एक हिस्सा बन गया।

उपकरण, यूनिटी मर्ज को यूनिफाइड विकी पर प्रलेखित किया गया है, जिसमें एक रोडमैप और फीडबैक के लिए एक ई-मेल पता और रिपोर्टिंग शामिल है। यदि आप वास्तव में एक जटिल मर्ज के साथ संघर्ष कर रहे हैं, तो इसे एक शॉट दें और हमें बताएं कि आप क्या सोचते हैं! इसके अलावा, मैंने इसे DLL में बनाने की जहमत नहीं उठाई, इसलिए स्रोत पर घूमने के लिए स्वतंत्र महसूस करें। तदर्थ कोरटाइन कार्यान्वयन और SerializedPropertyजोड़तोड़, साथ ही कुछ GUI ट्रिक्स जिन्हें मैंने समाप्त किया है वे आपके संपादक एक्सटेंशन टूलकिट का एक बड़ा हिस्सा हैं। मुझे उन परिवर्तनों / सुधारों में बहुत दिलचस्पी है जो उपयोगकर्ता हो सकते हैं, इसलिए कृपया संपर्क करें!


1
एक उपयोगी उपकरण की तरह लगता है, आपके पिछले "लिंक केवल" उत्तर को बेहतर बनाने के लिए धन्यवाद।
MichaelHouse

1

यदि आपके पास इसके लिए धन है, तो एकता के प्रो संस्करण के साथ एसेट सर्वर बहुत सभ्य है। मैंने अतीत में एक बड़ी, बहु-व्यक्ति परियोजना पर इसका उपयोग किया है और इसने काम किया है। वेनिला संस्करण नियंत्रण के लिए, उसने वही किया जो हमने उससे करने की अपेक्षा की थी।

मैं एक एकता परियोजना के साथ एक SVN रिपॉजिटरी का उपयोग करने की कोशिश की है और यह एक परेशानी का एक सा था। हालांकि, काम करने से पहले हमने इस विचार को समाप्त कर दिया। एकता बहुत सारी बैकअप फाइलें रखती है जो मैं यह जानने के लिए समय नहीं लेना चाहता था कि क्या होगा अगर वे सर्वर से सिंक नहीं हुए। मुझे लगता है, थोड़ी चालाकी के साथ, यह संभव हो सकता है लेकिन मुझे इसके साथ अच्छा काम करने का अनुभव नहीं है।

मैंने ड्रॉपबॉक्स की मुफ्त सुविधाओं का उपयोग करके एक छोटा प्रोजेक्ट किया है। इसने मुझे परेशान किया लेकिन हमारे पास कभी कोई मुद्दा नहीं था। और, मुझे नहीं लगता कि हमने उस परियोजना के लिए किसी भी वास्तविक संस्करण नियंत्रण सामान की आवश्यकता को समाप्त कर दिया है, इसलिए मैं बहुत कुछ नहीं बोल सकता कि फाइलों को कैसे पलट दिया जाए या विलय कर दिया जाए।


1

ड्रॉपबॉक्स प्रति फ़ाइल (कमिट के बजाय) संस्करण का समर्थन करता है और एकता के साथ अच्छी तरह से खेलता है। यह शुरू में मुफ्त (2 गीगाबाइट) और उसके बाद काफी सस्ते (50gig के लिए लगभग $ 10) है। आपको संस्करण इतिहास तक पहुंच प्राप्त करने के लिए पैकरैट एडऑन की आवश्यकता है।

एसवीएन, सीवीएस, जीआईटी आदि के साथ की तरह, आपको यह सुनिश्चित करने की आवश्यकता होगी कि जब आप विकास के प्रत्येक प्रमुख चरण में आते हैं, तो आप टैग फ़ोल्डर बनाते हैं (उदाहरण के लिए, सप्ताह का अंत, मील का पत्थर समाप्त)। उपरोक्त के विपरीत, यदि आप नहीं करते हैं तो इस तरह के एक चरण में वापस जाना बहुत कठिन होगा, क्योंकि आपको हर एक फ़ाइल को अलग-अलग वापस करना होगा। विकास करते समय ध्यान में रखें और आपके पास एसेट सर्वर के भुगतान के बिना एक आसान समय होगा।


हालांकि यह बहुत दर्दनाक है। एकता को उस दृश्य को फिर से बनाना पड़ता है, जब आप उसे अलग कंप्यूटर पर खोलते हैं। यह प्रत्येक प्रतिबद्धता के लिए बहुत सारे स्थानों में लाइब्रेरी फ़ोल्डर को बदलता है। लाइब्रेरी फ़ोल्डर को अनदेखा करना अच्छा होगा, लेकिन तब आपके पास संस्करण नियंत्रित दृश्य फ़ाइलें नहीं होंगी। मेरी टीम ने प्रो लाइसेंस का एक गुच्छा खरीदा और परिसंपत्ति सर्वर का इस्तेमाल किया।
ब्रैंडन

@ब्रांड अनुमान यह परियोजना के आकार पर निर्भर करता है।
इंजीनियर

1
निश्चित रूप से, अगर यह सीमित बजट के साथ देवों की जोड़ी है, तो मैं आपके दृष्टिकोण का सुझाव दूंगा क्योंकि यह वास्तव में केवल एक है
ब्रैंडन

लेकिन क्या आपने कभी ऐसे प्रोजेक्ट पर काम किया है जो 2 gb से कम का हो? उन मॉडलों और बनावट के बारे में जो आप शामिल होंगे। Bitbucket.com पर एक नज़र डालें और git सीखना शुरू करें!
XandruCea

पूर्ण रूप से। एंड्रॉइड / आईओएस परियोजनाएं निश्चित रूप से मेरे अनुभव में उस आकार के नीचे अच्छी तरह से रहती हैं (वर्ष के दौरान मैंने यह उत्तर लिखा था)। इसके अलावा, आप दोस्तों को आमंत्रित करके ड्रॉपबॉक्स पर अधिक स्थान कमा सकते हैं।
इंजीनियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.