Kerja Tim dalam Persatuan

30

Saya memiliki proyek Unity tanpa kontrol versi apa pun, dan saya perlu membaginya dengan pengembang lain sehingga kami berdua dapat mengerjakan proyek tersebut.

Strategi apa yang harus digunakan yang bermain bagus dengan Aset Persatuan?

Matias Valdenegro
sumber
Saya pikir artikel ini akan memberi Anda beberapa tips: va.lent.in/blog/2011/12/13/…
Den
2
DropBox mendukung kontrol versi, fitur ini disebut "Pack-Rat" tetapi tidak gratis. Untuk saran bagi pengembang indie pemula, banyak pertanyaan telah diajukan sebelumnya. Saya sarankan Anda untuk berjalan-jalan sedikit. Akhirnya Selamat Datang di GameDev SE!
Quazi Irfan
Tanpa server aset mungkin ada beberapa masalah ketika bergerak bolak-balik cetakan dan adegan
Sidar

Jawaban:

17

Unity memiliki fasilitas bawaan untuk mendukung kontrol versi dengan benar.

Masuk saja ke File-> Project Settings-> Editor dan aktifkan kontrol versi eksternal.

Kevin Laity
sumber
4
Apakah ini fitur Pro-only? Saya tidak melihat item menu itu di Unity 2.6 versi Windows gratis / indie.
James
Pada 1/30/2011, ini hanya untuk Pro. Lihat paragraf ke-2: unity3d.com/support/documentation/Manual/…
ojrac
11
Pratinjau pengembang terbaru dari Unity (3.5 RC1) telah membuat perubahan untuk mendukung kontrol versi di versi gratis. dari changelog ( unity3d.com/unity/preview/notes ): Lisensi: Kontrol versi eksternal generik (file .meta) sekarang tersedia dalam versi gratis.
Programmer Game Kronis
2
hanya untuk pengunjung masa depan, catat tanggal pada jawaban ini; itu sudah ketinggalan zaman sekarang. Sekarang tidak perlu mengaktifkan pengaturan apa pun; cukup versi folder "Aset" (pastikan kontrol versi Anda mengambil file .meta tersembunyi) dan "Pengaturan Proyek" dan abaikan yang lainnya.
jhocking
10

Saya sarankan menggunakan Git, gratis dan terbaik di sekitar.

Beberapa waktu yang lalu saya menulis tentang kontrol versi (menggunakan Git) di blog saya

Singkat cerita:

Aktifkan kontrol versi eksternal File-> Pengaturan Proyek-> Editor dan buat file .gitignore untuk menghindari hal-hal yang tidak perlu pada repo (ini tidak benar-benar diperlukan, tetapi akan sangat berharga selama pengembangan).

Begini tampilannya file:

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

#These are files in the root folder of the project
*.tmproj
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.pidb
*.userprefs
cchomiak
sumber
Ini hampir sama dengan .gitingoreyang saya gunakan untuk proyek-proyek Unity tetapi dengan beberapa peninggalan: [Bb]uild/, *.booproj, sysinfo.txt. Saya cukup yakin apa yang saya gunakan didasarkan pada templat repo baru GitHub untuk Unity ( github.com/github/gitignore/blob/master/Unity.gitignore ) setiap Objective-C (saat menargetkan iOS).
Slipp D. Thompson
Galat Server Internal di blog Anda.
Santosh Kumar
4

Unity 3.0 dikonfigurasi untuk bermain dengan baik dengan subversi. (Setidaknya lebih baik daripada sebelumnya) Saya tidak tahu apakah ini hanya dalam versi pro atau tidak, saya harus memeriksa.

Secara umum, sistem kontrol versi yang paling direkomendasikan adalah Unity Asset Server.

Jesse Dorsey
sumber
4

Khusus kesatuan - bekerja pada adegan berbeda dan file kode berbeda setiap saat, dan menggabungkan perubahan orang lain secara manual. Jika Anda berdua perlu mengerjakan adegan yang sama, duplikat dan gunakan salinan sebagai tes. Kalau tidak, jika Anda berdua memodifikasi adegan yang sama, perubahan satu orang akan menimpa yang lain. Anda masih dapat menggunakan kontrol sumber untuk file sumber Anda, hanya saja jangan memindahkannya sama sekali, dalam sistem file atau melalui Unity, begitu mereka dibuat.

Saran pemula - buat sendiri alat diff / merge yang layak (saya suka WinMerge ) dan biasakan menggunakannya untuk melihat perubahan apa yang dilakukan orang lain, dan untuk menggabungkan perubahan secara manual dalam file yang konflik. Mengatur ruang dokumentasi pusat, mis. dokumen penulisan Google atau wiki, dan simpan dokumentasi Anda di sana - dokumentasi minimal harus berisi daftar fitur dasar sehingga Anda tahu apa yang Anda tuju, dan idealnya daftar tugas yang berasal dari daftar fitur, bersama dengan indikasi yang jelas dari siapa yang mengerjakan tugas. Bicara satu sama lain untuk mendapatkan gambaran kasar tentang siapa yang perlu mengerjakan tugas mana dan mencoret mereka dari daftar saat mereka selesai. Terus meninjau kembali dan mengevaluasi kembali daftar untuk melihat apakah semuanya masih valid dan jika Anda perlu mengerjakan ulang prioritas apa pun.

Kylotan
sumber
Terima kasih! Anda memberi saya saran bagus untuk kedua masalah saya.
nosferat
4

Saya bekerja dengan tim yang menyebut dirinya Studio Rusak. Kami telah bergumul dengan masalah yang sama selama bertahun-tahun, dan baru-baru ini akhirnya saya menyerah dan mulai menulis ekstensi untuk membantu saya menggabungkan objek game.

Pada dasarnya pendekatan ini adalah untuk membuat antarmuka seperti inspektur di jendela yang melapisi setiap objek game, komponen, dan properti secara berdampingan untuk perbandingan, dan menyediakan tombol untuk menyalin nilai (atau seluruh objek) dari satu sisi ke sisi lain. Jika Anda terbiasa dengan SerializedPropertykelas, itulah yang melakukan sebagian besar pekerjaan di sini. Kami pada dasarnya membuat GUI yang menyinkronkan keadaan lipatan antara sisi kanan dan kiri, dan menciptakan ruang vertikal di mana pun a GameObjectatauComponenthanya ada di sisi kanan atau kiri. Fungsi perbandingan memeriksa kesetaraan di setiap level, dan mengubah latar belakang setiap baris menjadi merah atau hijau tergantung pada status kesetaraan. Setiap baris yang anak-anaknya mengandung perbedaan juga akan menjadi merah, dan kami juga menyertakan tombol yang bagus untuk mencari pohon secara rekursif dan memperluas semua objek yang berbeda atau memiliki perbedaan pada anak-anak mereka.

Selain itu, ada seperangkat bidang mask yang memungkinkan Anda memfilter tipe komponen tertentu dari perbandingan. Atribut GameObject seperti nama, layer, dan tag juga dibandingkan. Kami menggunakan SerializedObjectdan SerializedPropertyuntuk menelusuri gameObjectproperti, dan menggambar mereka seperti mereka digambar di inspektur. Ini memastikan konsistensi, dan lebih mudah untuk dikodekan!

masukkan deskripsi gambar di sini

Satu detail terakhir yang bagus adalah bahwa proses perbandingan (dipicu ketika objek dimuat dan setiap kali perubahan dilakukan) dijalankan dalam coroutine ad-hoc yang diperbarui oleh EditorWindow.Updatefungsi, sehingga jika Anda membandingkan objek yang sangat rumit, jendela tidak mengunci editor. Ini adalah suatu keharusan ketika membandingkan objek dengan ratusan (atau ribuan!) Anak-anak. Semua dalam semua, itu semacam "proyek lego" seperti yang suka dikatakan teman saya, tapi jelas alat yang sangat berharga yang langsung menjadi bagian dari alur kerja kolaborasi kami.

Alat ini, Unity Merge adalah didokumentasikan pada Menyatukan wiki, yang meliputi peta jalan dan alamat e-mail untuk umpan balik dan masalah pelaporan. Jika Anda benar-benar berjuang dengan penggabungan yang rumit, cobalah dan beri tahu kami pendapat Anda! Juga, saya tidak repot-repot membangunnya menjadi DLL, jadi jangan ragu untuk melihat-lihat sumbernya. Implementasi dan SerializedPropertymanipulasi ad-hoc coroutine , serta beberapa trik GUI yang akhirnya saya butuhkan adalah bagian besar dari toolkit ekstensi editor Anda. Saya sangat tertarik dengan perubahan / peningkatan yang mungkin dimiliki pengguna, jadi silakan menghubungi kami!

scone
sumber
1
Kedengarannya seperti alat yang berguna, terima kasih untuk meningkatkan jawaban "hanya tautan" sebelumnya.
MichaelHouse
1

Jika Anda memiliki dana untuk itu, server Aset dengan versi pro Unity cukup baik. Saya telah menggunakannya pada proyek multi-orang besar di masa lalu dan berhasil. Untuk kontrol versi vanila, itu melakukan apa yang kami harapkan.

Saya sudah mencoba menggunakan repositori SVN dengan proyek Unity dan itu agak merepotkan. Namun, kami akhirnya membatalkan ide sebelum membuatnya berhasil. Unity menyimpan banyak file cadangan yang saya tidak ingin meluangkan waktu untuk mencari tahu apa yang akan terjadi jika mereka tidak disinkronkan ke server. Saya pikir, dengan sedikit kemahiran, itu bisa dilakukan tetapi saya belum punya pengalaman dengan itu bekerja dengan baik.

Saya telah melakukan proyek kecil menggunakan fitur DropBox gratis. Itu membuat saya gugup tetapi kami tidak pernah memiliki masalah. Dan, saya tidak berpikir kita akhirnya membutuhkan hal-hal kontrol versi nyata untuk proyek itu jadi saya tidak bisa bicara banyak tentang bagaimana mengembalikan atau menggabungkan file akan hilang.

chaosTechnician
sumber
1

Dropbox mendukung versi per file (bukan per komit) dan diputar dengan baik dengan Unity. Awalnya gratis (2 gigabytes) dan cukup murah (sekitar $ 10 untuk 50gig). Anda memerlukan addon PackRat untuk memiliki akses ke riwayat versi.

Sama seperti dengan SVN, CVS, GIT dll., Anda harus memastikan bahwa Anda membuat folder tag ketika Anda sampai ke setiap tahap kunci dalam pengembangan (mis. Akhir minggu, akhir tonggak sejarah). Berbeda dengan yang disebutkan di atas, akan jauh lebih sulit untuk kembali ke tahap seperti itu jika tidak, karena Anda harus mengembalikan setiap file satu per satu. Ingatlah itu saat berkembang dan Anda akan memiliki waktu yang mudah tanpa membayar untuk Server Aset.

Insinyur
sumber
Ini sangaaaat menyakitkan. Unity harus membangun kembali adegan setiap kali Anda membukanya di komputer yang berbeda. Ini mengubah folder perpustakaan di banyak tempat untuk setiap komit. Mengabaikan folder library akan lebih baik, tetapi Anda tidak akan memiliki file adegan yang dikontrol versi. Tim saya menyerah dan membeli banyak lisensi pro dan menggunakan server aset.
brandon
@ brandon Tebak itu tergantung pada ukuran proyek.
Insinyur
1
Jelas, jika itu adalah beberapa devs dengan anggaran terbatas, saya akan menyarankan pendekatan Anda karena itu benar-benar satu-satunya
brandon
Tetapi apakah Anda pernah bekerja pada proyek yang tetap di bawah 2 gb? bagaimana dengan model dan tekstur yang akan Anda sertakan. Lihatlah bitbucket.com dan mulailah belajar git!
XandruCea
Benar. Proyek Android / iOS pasti tetap di bawah ukuran itu dalam pengalaman saya (selama tahun ini saya menulis jawaban ini) Selain itu, Anda dapat memperoleh lebih banyak ruang di Dropbox dengan mengundang teman.
Insinyur