การทำงานเป็นทีมในความสามัคคี


30

ฉันมีโปรเจ็กต์ Unity โดยไม่มีการควบคุมเวอร์ชันใด ๆ และฉันต้องการแชร์กับนักพัฒนาคนอื่นเพื่อให้เราทั้งคู่สามารถทำงานกับโปรเจ็กต์นี้ได้

ควรใช้กลยุทธ์ใดที่เล่นได้ดีกับสินทรัพย์ของ Unity


ผมคิดว่าบทความนี้จะทำให้คุณมีเคล็ดลับ: va.lent.in/blog/2011/12/13/...
Den

2
DropBox รองรับการควบคุมเวอร์ชันคุณสมบัตินี้เรียกว่า "Pack-Rat" แต่ไม่ฟรี สำหรับคำแนะนำสำหรับผู้พัฒนาอินดี้มือใหม่นั้นมีการถามคำถามมากมายก่อนหน้านี้ ฉันอยากจะแนะนำให้คุณเดินไปรอบ ๆ เล็กน้อย ในที่สุดก็ยินดีต้อนรับสู่ GameDev SE!
Quazi Irfan

หากไม่มีเซิร์ฟเวอร์สินทรัพย์อาจมีปัญหาบางอย่างเมื่อเคลื่อนย้าย prefab และฉากไปมา
Sidar

คำตอบ:


17

Unity มีระบบอำนวยความสะดวกในตัวสำหรับรองรับการควบคุมเวอร์ชันอย่างถูกต้อง

เพียงไปที่ไฟล์ -> การตั้งค่าโครงการ -> ตัวแก้ไขและเปิดใช้งานการควบคุมเวอร์ชันภายนอก


4
นี่เป็นคุณสมบัติพิเศษอย่างเดียวหรือไม่ ฉันไม่เห็นรายการเมนูนั้นใน Unity 2.6 เวอร์ชัน Windows / Free Indie
James

ตั้งแต่วันที่ 1/30/2011 มันเป็นแบบ Pro เท่านั้น ดูวรรค 2 ของ: unity3d.com/support/documentation/Manual/...
ojrac

11
ภาพตัวอย่างนักพัฒนาล่าสุดของ Unity (3.5 RC1) ได้ทำการเปลี่ยนแปลงเพื่อรองรับการควบคุมเวอร์ชันในรุ่นฟรี จาก changelog ( unity3d.com/unity/preview/notes ): สิทธิ์การใช้งาน: การควบคุมเวอร์ชันภายนอกทั่วไป (ไฟล์. meta) ในรุ่นฟรี
โปรแกรมเมอร์เกมเรื้อรัง

2
เพียงแค่ fyi สำหรับผู้เยี่ยมชมในอนาคตให้จดวันที่ไว้ในคำตอบนี้ มันล้าสมัยไปแล้วในตอนนี้ ตอนนี้ไม่จำเป็นต้องเปิดการตั้งค่าใด ๆ เพียงแค่สร้างโฟลเดอร์ "ทรัพย์สิน" (ตรวจสอบให้แน่ใจว่าการควบคุมเวอร์ชันของคุณกำลังรับไฟล์. meta ที่ซ่อนอยู่) และ "การตั้งค่าโครงการ" และไม่สนใจสิ่งอื่นใด
jhocking

10

ฉันแนะนำให้ใช้ Git มันฟรีและดีที่สุด

ไม่นานมานี้ฉันเขียนเกี่ยวกับการควบคุมเวอร์ชัน (โดยใช้ Git) ในบล็อกของฉัน

เรื่องสั้นสั้น:

เปิดใช้งานการควบคุมเวอร์ชันภายนอกไฟล์ -> การตั้งค่าโครงการ -> ตัวแก้ไขและสร้างไฟล์. gitignore เพื่อหลีกเลี่ยงสิ่งที่ไม่จำเป็นใน repo (ไม่จำเป็นจริงๆ แต่จะมีค่าในระหว่างการพัฒนา)

นี่คือลักษณะของไฟล์ที่ควรมีลักษณะ:

[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/A: *.booproj, sysinfo.txt, ฉันค่อนข้างแน่ใจว่าสิ่งที่ฉันใช้นั้นขึ้นอยู่กับเทมเพลต repo ใหม่ของ GitHub สำหรับ Unity ( github.com/github/gitignore/blob/master/Unity.gitignore ) Objective-C ใด ๆ (เมื่อกำหนดเป้าหมาย iOS)
Slipp D. Thompson

ข้อผิดพลาดภายในเซิร์ฟเวอร์ในบล็อกของคุณ
Santosh Kumar

4

Unity 3.0 ได้รับการกำหนดค่าให้เล่นอย่างดีกับการโค่นล้ม (อย่างน้อยก็ดีกว่าก่อน) ฉันไม่รู้ว่านี่เป็นเพียงรุ่นโปรหรือไม่ฉันจะต้องตรวจสอบ

โดยทั่วไปแล้วระบบควบคุมเวอร์ชันที่แนะนำมากที่สุดคือ Unity Asset Server


4

เอกภาพเฉพาะ - ทำงานในฉากต่าง ๆ และไฟล์รหัสที่แตกต่างกันตลอดเวลาและผสานในการเปลี่ยนแปลงของบุคคลอื่นด้วยตนเอง หากคุณทั้งคู่ต้องทำงานในฉากเดียวกันให้ทำซ้ำและใช้สำเนาเป็นแบบทดสอบ มิฉะนั้นหากคุณทั้งคู่ดัดแปลงฉากเดียวกันการเปลี่ยนแปลงของคน ๆ หนึ่งจะเขียนทับอีกฝ่าย คุณยังคงสามารถใช้การควบคุมแหล่งที่มาสำหรับไฟล์ต้นฉบับของคุณได้โดยไม่ต้องย้ายสิ่งเหล่านี้ไปเลยในระบบไฟล์หรือผ่าน Unity เมื่อสร้างเสร็จแล้ว

คำแนะนำสำหรับผู้เริ่มต้น - รับเครื่องมือ diff / merge ที่เหมาะสม (ฉันชอบWinMerge ) และคุ้นเคยกับการใช้มันเพื่อดูว่าคนอื่นทำอะไรบ้างและรวมการเปลี่ยนแปลงในไฟล์ที่ขัดแย้งกันด้วยตนเอง ตั้งค่าพื้นที่เอกสารส่วนกลางเช่น เอกสารการเขียนของ Google หรือวิกิและเก็บเอกสารของคุณไว้ที่นั่น - เอกสารควรมีรายการคุณสมบัติพื้นฐานอย่างน้อยที่สุดเพื่อให้คุณรู้ว่าคุณต้องการอะไรและมีรายการงานที่ได้รับจากรายการคุณสมบัติพร้อมด้วยตัวบ่งชี้ที่ชัดเจน ของผู้ที่ทำงานเกี่ยวกับงาน พูดคุยกันเพื่อทำความเข้าใจคร่าวๆว่าใครต้องการทำงานที่ต้องทำและข้ามงานออกจากรายการเมื่อทำเสร็จ ทำการทบทวนและประเมินรายการต่อไปเพื่อดูว่าทุกอย่างยังคงใช้ได้อยู่หรือไม่และคุณจำเป็นต้องจัดลำดับความสำคัญใหม่


ขอขอบคุณ! คุณให้คำแนะนำที่ดีแก่ฉันเกี่ยวกับปัญหาของฉันทั้งสอง
nosferat

4

ฉันทำงานกับทีมที่เรียกตัวเองว่า Defective Studios เราได้ต่อสู้กับปัญหาเดียวกันมาหลายปีและเมื่อไม่นานมานี้ฉันเพิ่งยอมแพ้และเริ่มเขียนส่วนขยายเพื่อช่วยให้ฉันผสาน gameobjects

โดยพื้นฐานแล้ววิธีการคือการสร้างอินเทอร์เฟซที่คล้ายกับตัวตรวจสอบในหน้าต่างที่เรียงแถวแต่ละเกมองค์ประกอบและคุณสมบัติแบบเคียงข้างกันเพื่อเปรียบเทียบและให้ปุ่มเพื่อคัดลอกค่า (หรือวัตถุทั้งหมด) จากด้านหนึ่งไปอีกด้านหนึ่ง หากคุณคุ้นเคยกับSerializedPropertyชั้นเรียนนั่นเป็นสิ่งที่ทำส่วนใหญ่ของงานที่นี่ โดยทั่วไปเราสร้าง GUI ที่ซิงโครไนซ์สถานะ foldout ระหว่างด้านขวาและด้านซ้ายและสร้างพื้นที่แนวตั้งทุกที่GameObjectหรือComponentมีอยู่เฉพาะด้านขวาหรือซ้าย ฟังก์ชันเปรียบเทียบตรวจสอบความเท่าเทียมกันในแต่ละระดับและเปลี่ยนพื้นหลังของแต่ละบรรทัดเป็นสีแดงหรือสีเขียวขึ้นอยู่กับสถานะของความเท่าเทียมกัน บรรทัดใด ๆ ที่เด็ก ๆ มีความแตกต่างก็จะกลายเป็นสีแดงและเรายังรวมถึงปุ่มที่ดีเพื่อค้นหาต้นไม้ซ้ำ ๆ และขยายวัตถุทั้งหมดที่แตกต่างหรือมีความแตกต่างในลูก ๆ ของพวกเขา

นอกจากนี้ยังมีชุดเขตข้อมูลรูปแบบที่ให้คุณกรองส่วนประกอบบางประเภทจากการเปรียบเทียบ คุณลักษณะ GameObject เช่นชื่อเลเยอร์และแท็กยังถูกนำมาเปรียบเทียบ เราใช้SerializedObjectและSerializedPropertyวนลูปผ่านgameObjectคุณสมบัติของและวาดมันเหมือนวาดในสารวัตร สิ่งนี้ทำให้มั่นใจได้ว่ามีความสอดคล้องและเป็นโค้ดที่ง่ายกว่ามาก!

ป้อนคำอธิบายรูปภาพที่นี่

รายละเอียดที่ดีอย่างหนึ่งคือกระบวนการเปรียบเทียบ (ทริกเกอร์เมื่อโหลดวัตถุและทุกครั้งที่มีการเปลี่ยนแปลง) จะทำงานใน ad-hoc coroutine ที่ปรับปรุงโดยEditorWindow.Updateฟังก์ชันดังนั้นในกรณีที่คุณเปรียบเทียบวัตถุที่ซับซ้อนมาก หน้าต่างไม่ล็อคตัวแก้ไข นี่เป็นสิ่งที่ต้องทำเมื่อเปรียบเทียบสิ่งของกับเด็กนับร้อย (หรือพัน!) สรุปแล้วมันเป็น "โครงการเลโก้" อย่างที่เพื่อนของฉันชอบพูด แต่แน่นอนว่าเป็นเครื่องมือที่มีค่ายิ่งซึ่งกลายเป็นส่วนหนึ่งของกระบวนการทำงานร่วมกันของเราทันที

เครื่องมือUnity Mergeมีการบันทึกไว้ใน Unify wiki ซึ่งรวมถึงแผนงานและที่อยู่อีเมลสำหรับข้อเสนอแนะและการรายงานปัญหา หากคุณกำลังดิ้นรนกับการผสานที่ซับซ้อนให้ลองยิงมันแล้วบอกให้เรารู้ว่าคุณคิดอย่างไร! นอกจากนี้ฉันไม่ได้รำคาญที่จะสร้างมันเป็น DLL ดังนั้นอย่าลังเลที่จะแหย่ที่แหล่งที่มา การปรับใช้ ad-hoc coroutine และการSerializedPropertyปรับแต่งรวมถึงเทคนิค GUI บางอย่างที่ฉันจำเป็นต้องได้รับนั้นเป็นส่วนสำคัญของชุดเครื่องมือแก้ไขส่วนขยายของคุณ ฉันสนใจการเปลี่ยนแปลง / การปรับปรุงที่ผู้ใช้อาจมีดังนั้นโปรดติดต่อ!


1
เสียงเหมือนเครื่องมือที่มีประโยชน์ขอบคุณสำหรับการปรับปรุงคำตอบ "ลิงก์เท่านั้น" ก่อนหน้าของคุณ
MichaelHouse

1

หากคุณมีเงินทุนสำหรับมันเซิร์ฟเวอร์สินทรัพย์ที่มีรุ่นโปรของ Unity นั้นค่อนข้างดี ฉันเคยใช้มันในโครงการขนาดใหญ่ที่มีหลายคนในอดีตและมันทำงานได้ดี สำหรับการควบคุมเวอร์ชันของวานิลลามันทำตามที่เราคาดไว้

ฉันได้ลองใช้พื้นที่เก็บข้อมูล SVN กับโครงการ Unity และมันค่อนข้างยุ่งยาก อย่างไรก็ตามเราทิ้งความคิดก่อนที่จะทำให้มันทำงานได้ ความสามัคคีทำให้ไฟล์สำรองข้อมูลจำนวนมากที่ฉันไม่ต้องการใช้เวลาในการค้นหาว่าจะเกิดอะไรขึ้นหากพวกเขาไม่ได้ซิงค์กับเซิร์ฟเวอร์ ฉันคิดว่ามีลูกเล่นเล็ก ๆ น้อย ๆ มันสามารถทำได้ แต่ฉันไม่ได้มีประสบการณ์กับมันทำงานได้ดี

ฉันได้ทำโครงการเล็ก ๆ โดยใช้คุณสมบัติฟรีของ DropBox มันทำให้ฉันกังวล แต่เราไม่เคยมีปัญหาใด ๆ และฉันไม่คิดว่าเราจะต้องการสิ่งที่ควบคุมเวอร์ชันจริงสำหรับโครงการนั้นดังนั้นฉันจึงไม่สามารถพูดได้มากถึงวิธีการคืนค่าหรือการรวมไฟล์จะหายไป


1

Dropbox รองรับการกำหนดเวอร์ชันต่อไฟล์ (แทนที่จะเป็นการกระทำต่อ) และเล่นได้ดีกับ Unity ฟรีในตอนแรก (2 กิกะไบต์) และค่อนข้างถูกหลังจากนั้น (ประมาณ $ 10 สำหรับ 50gig) คุณต้องใช้ PackRat addon เพื่อให้สามารถเข้าถึงประวัติรุ่นได้

เช่นเดียวกับ SVN, CVS, GIT ฯลฯ คุณจะต้องตรวจสอบให้แน่ใจว่าคุณสร้างโฟลเดอร์แท็กเมื่อคุณไปถึงแต่ละขั้นตอนสำคัญในการพัฒนา (เช่นสิ้นสัปดาห์, สิ้นสุดเหตุการณ์สำคัญ) แตกต่างจากที่กล่าวมาข้างต้นมันจะยากกว่ามากที่จะย้อนกลับไปยังสเตจดังกล่าวถ้าคุณทำไม่ได้เพราะคุณจะต้องย้อนกลับทุกไฟล์ทีละไฟล์ โปรดจำไว้ว่าในขณะที่กำลังพัฒนาและคุณจะมีเวลาง่าย ๆ โดยไม่ต้องจ่ายสำหรับเซิร์ฟเวอร์สินทรัพย์


มันช่างเจ็บปวดเหลือเกิน ความสามัคคีต้องสร้างฉากทุกครั้งที่คุณเปิดมันบนคอมพิวเตอร์เครื่องอื่น นี่เป็นการเปลี่ยนแปลงโฟลเดอร์ไลบรารีในหลาย ๆ ที่สำหรับแต่ละการกระทำ การเพิกเฉยต่อโฟลเดอร์ไลบรารีจะดี แต่คุณจะไม่มีไฟล์ฉากที่ควบคุมเวอร์ชัน ทีมของฉันยอมแพ้และซื้อสิทธิ์ใช้งานโปรจำนวนมากและใช้เซิร์ฟเวอร์สินทรัพย์
แบรนดอน

@ แบรนดอนเดามันขึ้นอยู่กับขนาดของโครงการ
วิศวกร

1
แน่นอนถ้าเป็นนักพัฒนาสองคนที่มีงบประมาณ จำกัด ฉันจะแนะนำวิธีการของคุณเพราะเป็นคนเดียวจริงๆ
แบรนดอน

แต่คุณเคยทำงานในโครงการที่อยู่ต่ำกว่า 2 gb หรือไม่? สิ่งที่เกี่ยวกับรูปแบบและพื้นผิวที่คุณจะรวมถึง ลองดูที่ bitbucket.com และเริ่มเรียนรู้คอมไพล์!
XandruCea

อย่างแน่นอน โครงการ Android / iOS อยู่ในสภาพดีอย่างแน่นอนในประสบการณ์ของฉัน (ในระหว่างปีที่ฉันเขียนคำตอบนี้) นอกจากนี้คุณยังสามารถหาพื้นที่เพิ่มเติมใน Dropbox ด้วยการเชิญเพื่อน ๆ
วิศวกร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.