Kontrol versi untuk pengembangan game - masalah dan solusi? [Tutup]


106

Ada banyak sistem kontrol versi yang tersedia, termasuk yang open-source seperti Subversion , Git , dan Mercurial , ditambah yang komersial seperti Perforce .

Seberapa baik mereka mendukung proses pengembangan game? Apa masalah menggunakan VCS, berkaitan dengan file non-teks (file biner), proyek besar, dan lain-lain? Apa solusi untuk masalah ini, jika ada?

Untuk pengaturan jawaban, mari kita coba per paket. Perbarui setiap paket / jawab dengan hasil Anda.

Juga, harap cantumkan beberapa detail singkat dalam jawaban Anda, tentang apakah VCS Anda gratis atau komersial, didistribusikan versus terpusat, dll.

Pembaruan : Menemukan artikel yang bagus membandingkan dua VCS di bawah ini - tampaknya, Git adalah MacGyver dan Mercurial adalah Bond . Yah, saya senang itu diselesaikan ... Dan penulis memiliki kutipan yang bagus di akhir:

Tidak apa-apa untuk menyebarkan agama kepada mereka yang belum beralih ke VCS yang didistribusikan, tetapi mencoba mengubah pengguna Git menjadi Mercurial (atau sebaliknya) adalah buang-buang waktu dan energi semua orang.

Terutama karena musuh nyata Git dan Mercurial adalah Subversion . Sial, dunia kode-makan-kode di luar sana di FOSS-land ...


Catatan - ini dimaksudkan untuk menggantikan Pertanyaan gamedev.stackexchange.com/questions/245/… . Dalam 72 jam saya akan menghapus pertanyaan itu - saya serahkan sekarang, untuk memberi orang waktu untuk menyalin Jawaban / komentar mereka ke Pertanyaan ini . :)
Cyclops

Ini mungkin akan menjadi salah satu pertanyaan favorit saya, jika orang mengikuti instruksi penyuntingan. Bekerja pada solusi khusus Dev Game untuk ini sekarang: D
Jesse Dorsey

@Noctrine, Anda harus menambahkan sangkalan jika , bukan? :) Tentu saja orang akan mengikuti instruksi ...
Cyclops

Jangan hapus pertanyaan lainnya. Jika ini benar-benar di luar topik (saya rasa tidak) itu dapat ditutup dan diarsipkan. Itu juga bisa ditutup sebagai duplikat yang satu ini.
Firas Assaad

@Firas, sudah ditutup - dan dibuka kembali :) Apapun, saya pikir formulasi ini lebih baik (dan ya, ini wiki) - dan jika orang menyalin jawaban mereka, yang ini harus mencakup semua informasi dalam pertanyaan lain.
Cyclops

Jawaban:


71

Git

Baru-baru ini saya berada di kereta musik Git (saya telah menggunakan SVN dan Mercurial). Sejauh ini saya sangat menyukai apa yang saya dapatkan dengan Git. Ini jauh dari rasa sakit untuk setup dan alat pengembangan lebih banyak mulai mengadopsi menggunakannya.

Ini adalah sistem kontrol versi terdistribusi. Ini memungkinkan kami untuk memiliki area seperti batang independen kami sendiri. Saya dapat bekerja di area saya sendiri dan mengundang Anda untuk melihat perubahan dengan sangat mudah. Saya dapat memutar balik di ruang saya sendiri tanpa memperbaiki repo pusat. Saya dapat melakukan, bercabang, dan melakukan semua yang dapat Anda lakukan dengan SVN secara lokal. Saya sangat suka memiliki kontrol ini.

Dengan SVN, Anda memerlukan akses ke repo Anda untuk dapat melakukan. Bagaimana jika Anda sedang di jalan atau di kafe tanpa internet? Tidak baik.

Tentu, SVN jauh lebih sederhana untuk dipelajari, tetapi saya pikir keuntungan dari kontrol sumber terdistribusi lebih besar daripada fakta bahwa ia memiliki sedikit kurva belajar.

Saya juga suka itu lebih pintar tentang penggabungan.

Kelemahan utama dari GIT adalah ia menyimpan seluruh sejarah secara lokal. (Ya, Anda dapat melakukan operasi untuk mengurangi itu, tapi itu adalah perilaku default). Sama sekali bukan masalah untuk file sumber, tetapi jika Anda memiliki proyek besar dengan gigabytes data aset, itu menjadi masalah dengan cepat. Dalam pengalaman saya saat ini, saya akan merekomendasikan GIT hanya untuk repo yang lebih kecil atau hanya sumber.

Jika Anda masih penasaran dengan GIT, lihat http://thkoch2001.github.io/whygitisbetter/ untuk beberapa informasi / metrik yang baik. Lihat juga https://git.wiki.kernel.org/index.php/GitSvnComparsion


1
Saya suka ide hierarki cabang yang memungkinkan QA untuk menguji perubahan sebelum mereka membuatnya menjadi arus utama, atau pembuatan dan validasi demo yang mudah.
Tenpn

@tenpn, apakah itu fitur VCS terdistribusi secara umum, atau hanya Git?
Cyclops

1
Saya pernah mendengar bahwa Git dan Mercurial menderita ketika mendorong file yang sangat besar ke dalamnya. Adakah kebenaran rumor dari orang-orang dengan pengalaman lebih dari saya?
drhayes

6
Git bagus dan semua tetapi ketika menyangkut penanganan aset grafis atau musik besar, seperti lebih besar dari 100 MB, ia menjadi sangat lambat saat komit dan check-out. Saat ini Mercurial, pesaing ke Git, memiliki ekstensi "file besar" yang membahas masalah khusus ini. Jika Anda memiliki proyek game yang tidak memiliki banyak aset, Anda bisa mencoba Git.
Spoike

3
Mengapa tidak menggunakan submitula Git untuk mengelola file biner? Dengan begitu Anda bisa membuat repositori terpisah sesuai kebutuhan dan mengikatnya menggunakan submodula. Setiap perubahan di masa depan dalam repositori utama tidak akan memengaruhi submodules.
Alex Schearer

62

Lincah

Fitur utama:

  • VCS yang didistribusikan
  • Gratis, sumber terbuka
  • Script plugin mudah ditulis --- dapat ditulis dengan Python atau sebagai skrip shell
  • Ada banyak skrip plugin yang sudah tersedia secara bebas
  • Banyak dokumentasi tersedia, termasuk buku ini (sangat disarankan)

Sehubungan dengan penggunaan file non-teks, versi terakhir Mercurial (> = 2.0) menyediakan ekstensi file besar secara default :

largefiles memecahkan masalah ini dengan menambahkan lapisan client-server terpusat di atas Mercurial: largefiles tinggal di toko pusat di jaringan di suatu tempat, dan Anda hanya mengambil yang Anda butuhkan saat Anda membutuhkannya.

Ada ekstensi lain yang menyediakan solusi serupa seperti ekstensi bigfiles yang memungkinkan Anda menyimpan aset Anda dalam repo Mercurial yang sama, tetapi hanya mengambil binari yang Anda butuhkan saat Anda membutuhkannya.

Saya tidak mengetahui adanya masalah sehubungan dengan proyek besar di luar yang terkait dengan memiliki file biner besar. Proyek Python adalah proyek besar dan menggunakan Mercurial .

Joel Spolsky telah menulis tutorial mini tentang cara menggunakan Mercurial di Subversion re-education


4
Catatan menarik tentang Ekstensi Bigfiles - yang membahas salah satu masalah yang dilaporkan di utas asli, bahwa VCS Terdistribusi tidak cocok dengan produksi game yang memiliki banyak aset file biner.
Cyclops

1
+1 untuk Mercurial. Ini cepat, mudah digunakan, dan sangat kuat. :) Saya menggunakannya untuk semuanya: pengembangan web, pengembangan game, proyek pribadi satu orang dan proyek tim. Terima kasih telah memperkenalkan ekstensi BigFiles!
jacmoe

Sehubungan dengan proyek-proyek besar - TortoiseHg tampaknya berjalan jauh lebih lambat pada repositori besar dengan 8 tahun revisi daripada di repositori kecil dengan kurang dari 20 revisi. Saya belum tahu apakah ini sesuatu yang khusus untuk Kura-kura atau Mercurial secara umum.
Kylotan

4
Tampaknya tidak ada opsi yang dapat dibandingkan svn:needs-lock, dan karena tidak ada cara untuk mengetahui siapa yang bekerja secara lokal pada file apa , Anda kembali membagikan mangkuk di sekitar tim, secara harfiah (Anda tidak boleh mengedit tanpa mangkuk di meja Anda). Ekstensi BigFiles atau tidak, VCS ini tidak berguna untuk file biner tanpa solusi praktis untuk ini.
Sam Harwell

3
Terlepas dari dukungan bigfile, jika dua orang mengedit, mengatakan, file Maya sekaligus, satu akan memeriksa dan yang lainnya harus mengulang pekerjaan. Dengan Perforce, setidaknya, Anda dapat mengetahui bahwa orang lain sedang mengedit file (dan juga secara otomatis memiliki kunci pada file itu).
dash-tom-bang

39

Terpaksa

Perforce (sumber komersial / tertutup, terpusat) adalah standar industri karena sejumlah alasan.

  1. Ini adalah produk komersial, yang berarti dilengkapi dengan dukungan komersial. Proyek sumber terbuka mungkin memenuhi syarat untuk mendapatkan lisensi gratis (dikurangi dukungan teknis).
  2. Ini mendukung ruang kerja dengan sangat baik , yang memungkinkan tata letak sumber dan direktori aset yang sangat fleksibel.
  3. Ini mendukung daftar perubahan dengan sangat baik .
  4. Anda dapat melihat siapa yang mengerjakan apa. Game memiliki jumlah file biner (aset) yang berubah sangat cepat dan tidak normal dibandingkan dengan proyek pengembangan lainnya. Sebagian besar waktu ini tidak dapat digabungkan, jadi catat siapa yang memiliki apa / di mana / kapan yang kritis. Klien Subversion dan DSCC sengaja menghindari teknik ini, tetapi cukup bermanfaat dalam aplikasi tertentu.
  5. Ini mendukung basis kode / aset raksasa . Itu tidak menyimpan data duplikat pada mesin klien, yang penting ketika sub-tampilan pohon Anda adalah beberapa lusin pertunjukan.

Yang mengatakan, itu jelas sangat menyakitkan hampir setiap hari bahwa Perforce tidak merasa posisi mereka di industri terancam. Alat visual mereka, termasuk P4V dan P4SCC (berintegrasi dengan Visual Studio) lambat dan bermasalah, dengan yang terakhir diketahui membekukan Visual Studio untuk kesenangan semata. AnkhSVN jauh di depan Perforce.

Komentar oleh xan: Perlu dicatat bahwa alat penggabung mereka, P4Merge (digunakan untuk pembedaan dan penggabungan) sangat bagus dan jauh lebih unggul daripada yang dimiliki Tortoise Merge. Yang mengejutkan, komponen ini tersedia secara gratis sebagai bagian dari paket P4 Visual Tools.

Komentar oleh slicedlime: Kelemahan lain dari Perforce adalah bahwa bercabang di dalamnya cenderung sangat menyakitkan, terutama jika Anda memiliki pohon besar. Hampir setiap vcs lainnya lebih baik dalam hal percabangan dan penggabungan. Ini biasanya harga kecil untuk membayar keuntungan di atas sekalipun.

Komentar oleh roe: Perforce sangat cerewet. Tidak banyak yang terjadi tanpa melibatkan server. Terutama, Anda memerlukan server untuk melakukan open-for-edit, yang berarti Anda harus melewati beberapa simpang jika Anda ingin memutus koneksi ke server.

Komentar oleh jrista: Sebagai pengguna harian Perforce selama lebih dari dua tahun sekarang, dengan tim pengembangan dan rekayasa mutu yang berkualitas lebih dari 100 orang, saya menjadi sangat akrab dengannya. Walaupun ini adalah sistem kontrol sumber yang layak, ia memiliki kekurangan bahwa mereka yang mengevaluasi sistem SCC harus menyadari:

  • Seperti yang disebutkan oleh orang lain, percabangan / integrasi sangat rumit dan sulit dilakukan. Anda memiliki jumlah kontrol yang tidak saleh, tetapi itu harus dibayar dengan kompleksitas yang berlebihan. Di sisi lain, alat penggabungan visual adalah salah satu dari jenis, dan menyajikan tampilan gabungan tiga file yang indah "berdasarkan" dari pekerjaan Anda. Perforce memang menyediakan beberapa visualisasi grafis dari jalur cabang (disebut Grafik Revisi), namun cara itu divisualisasikan sering membuat alat agak tidak berguna. Jika Anda hanya perlu melihat segmen waktu yang sangat kecil untuk satu atau beberapa file saja, ini bisa bermanfaat ... apa saja, dan hampir tidak mungkin menavigasi Grafik Revisi.
  • Perforce juga bukan alat yang sangat efisien, karena hampir semua operasi file memerlukan duplikasi file dan data: percabangan, pelabelan, daftar perubahan, dll. Tidak ada penandaan atau bercabang yang jarang atau ringan di sini. Jika Anda tidak takut untuk menggunakan sejumlah besar ruang disk untuk melacak perubahan Anda, terpaksa mungkin akan membantu Anda dengan baik. Jika tidak, saya akan mencari alat lain.
  • Perforce memanfaatkan ruang kerja, namun ini kadang-kadang membuat frustasi, karena memaksa memaksa semua kondisi di ruang kerja Anda, alih-alih menggunakan file aktual pada disk untuk menentukan kondisi tertentu. Ini sering mengakibatkan file tidak disinkronkan karena ruang kerja Anda mengatakan mereka mutakhir, ketika, untuk alasan apa pun, file fisik pada disk memang TIDAK mutakhir.
  • Gangguan terakhir, Perforce agak brutal di jaringan Anda. Ini adalah program yang sangat cerewet, dan menghabiskan banyak bandwidth. Konektivitas jaringan apa pun hilang, dan Anda menjalankan risiko tinggi karena tidak dapat melakukan pekerjaan apa pun dengan file yang dikontrol sumber Anda sampai konektivitas dipulihkan. Sampai sekarang, saya belum menemukan kegiatan yang dapat dilakukan secara off-line di Perforce.

2
Keuntungan lain dari Perforce adalah gratis untuk dua pengguna pertama, yang bagus untuk proyek hobi kecil, atau dua mengevaluasi kesesuaiannya untuk proyek yang lebih besar.

Dari pengalaman saya poin 5 dari jawaban Anda sangat benar. Ini sangat scalable. Kesalahan jarang terjadi, dukungan cepat. Tidak yakin dengan biaya, Yacine mencatat bahwa itu gratis untuk dua pengguna pertama. Untuk studio yang lebih kecil dengan game yang lebih kecil, ada baiknya mengevaluasi opsi lain. Integrasi Visual Studio sedikit keluar dari kotak; tapi kami cukup beruntung memiliki penggemar Perforce yang lengkap di studio kami menulis penyedia sumber yang sangat baik untuk VS dari awal.
paulecoyote

Perforce memang luar biasa, jika Anda mampu membelinya. Saya tidak menggunakan semua sistem kontrol versi di luar sana, tetapi dalam 10 tahun pengembangan game komersial, dan beberapa sistem kontrol versi, ini adalah yang terbaik yang saya gunakan dengan sedikit margin. Ini menangani file data besar dengan cepat dan andal, dan jika diatur dengan benar, berkinerja baik dalam pengaturan multi-situs melalui koneksi internet yang relatif lambat. Integrasi Visual Studio mungkin tidak sempurna, tetapi cukup solid.
bluescrn

1
Jika saya harus memilih satu VCS untuk pengembangan game (skala besar), itu akan menjadi Perforce. Jika saya bisa memilih banyak, saya akan menambahkan DVCS untuk aset teks (kode, skrip, dan file data lain-lain), tetapi tetap Perforce untuk aset biner.
dash-tom-bang

2
Saya bekerja pada proyek game besar yang menggunakan Perforce dan benar-benar bingung bahwa ada orang yang akan membayarnya. Kebutuhan untuk sinkron dengan server menjengkelkan, bahkan pada LAN. Saya memahami fitur "rekonsiliasi pekerjaan offline" tetapi dalam praktiknya alur kerjanya sangat mengganggu sehingga ketika ada gangguan jaringan Anda tidak berfungsi. Jika Anda tidak menggunakan IDE yang memiliki plugin P4, atau Anda hanya ingin mengedit file di sana-sini dari baris perintah atau alat lain, Anda harus kembali ke klien P4 dan melakukan pembukuan. Tidak ada VCS lain yang memberikan begitu banyak hambatan untuk melakukan pekerjaan.
Suboptimus

27

Subversi

  • Sumber terbuka, terpusat

  • File blender - Saya tidak sepenuhnya yakin apakah file .blend adalah biner (terlihat seperti itu), tapi saya tidak punya masalah menambahkannya ke Subversion. Setelah melakukan beberapa percobaan, peningkatan ukuran file untuk file yang diubah muncul nominal, jadi itu tidak hanya menyalin di seluruh file.

  • Proyek-proyek besar - Berhasil, meskipun bisa aneh. Ini pasti dapat menangani repositori setidaknya 5,5 GB (ukuran total dir repositori di server; sebagian besar aset biner).

  • Data yang Digandakan pada Klien - Subversi menyimpan salinan duplikat dari setiap file di ruang kerja pengguna sebagai salinan asli. Keuntungan dari ini adalah Anda dapat melakukan diff atau mengembalikan tanpa kembali ke server. Kerugiannya adalah 10 gig file kerja Anda membutuhkan 20 gig ruang disk.

  • Daftar abaikan adalah properti dari direktori (sederhana dengan gui, mengganggu pada baris perintah).

  • Subversion memungkinkan penguncian file / aset - yang sangat membantu jika banyak artis dan desainer bekerja pada file yang sama.

  • Eksternal adalah cara terbaik untuk menangani kode bersama (mis. Perpustakaan atau basis) antar proyek.


Proyek besar - KDE, GNOME.
Matias Valdenegro

* FSFS bisa sangat rapuh untuk pemulihan - jadi perawatan ekstra harus dilakukan dengan cadangan. * Mudah dimengerti, TortoiseSvn adalah klien yang hebat. * Pelacak bug sumber terbuka, sistem integrasi berkelanjutan, dll sering memiliki dukungan untuk Subversion "out the box". * Ada beberapa buku bagus yang tersedia tentang penggunaan Subversion.
paulecoyote

1
@paulecoyote, ini adalah posting wiki, jangan ragu untuk mengeditnya dengan informasi baru, bukan hanya komentar.
Cyclops

1
SVN bagus untuk digunakan dengan Tortoise SVN ( tortoisesvn.net ), klien yang terintegrasi dengan baik ke dalam menu konteks dan menyediakan guis untuk semua tindakan. Unfotunably, kura-kura tidak memiliki port Linux / Mac OS (setidaknya menulis ini). Protip: jika bekerja dengan banyak orang, selalu perbarui (dan gabungkan / selesaikan konflik) SEBELUM komitmen.
Exilyth

7

AlienBrain

Dari Avid :

Alienbrain adalah sistem manajemen aset digital untuk seniman di industri hiburan

  • Komersial (lebih mahal dari Perforce), terpusat
  • Dirancang untuk berintegrasi dengan alat alur kerja 2D dan 3D profesional lainnya seperti Photoshop, Maya, 3ds Max, Microsoft Visual Studio, dll.

Saya tidak punya pengalaman dengan AlienBrain, dan hanya mendengarnya dari buku Game Coding Lengkap oleh Mike McShaffry. Dia tampaknya sangat memikirkannya, namun:

Seniman dan kontributor lain akan benar-benar menggunakan produk ini, tidak seperti yang lain yang terutama dirancang untuk berintegrasi dengan baik dengan Visual Studio dan bukan aplikasi kreatif seperti Photoshop dan 3D Studio Max. Salah satu kelemahan besar dari produk lain adalah perlakuan mereka yang agak naif terhadap file nontext. AlienBrain ditulis dengan file-file ini dalam pikiran.

Tentu saja dia juga menggambarkannya sebagai:

Bagi Anda yang memiliki masalah pelacakan aset yang sangat serius dan anggaran yang sama seriusnya ...


IYA! Akhirnya orang yang mendapatkannya: aset dan kode membutuhkan alat yang berbeda! +1
jacmoe

3
Pengalaman saya dengan AlienBrain adalah bahwa penulis tidak mendapatkan pengembangan game. Ini bukan solusi kontrol sumber yang kuat. Beberapa fitur bagus untuk sebagian tim, tetapi beberapa fitur paling keren yang diiklankan tidak diterapkan sedemikian rupa agar bermanfaat (misalnya antarmuka pementasan, tempat seseorang dapat memeriksa aset mereka "untuk ditinjau." Sayangnya tidak ada cara untuk mengetahui apa yang ditinjau dan apa yang tidak, dan ketika Anda menyinkronkan Anda mendapatkannya). Ditambah lagi tidak ada cache, jadi sinkronisasi membutuhkan pengujian setiap file. Ini lambat dengan banyak pertunjukan aset. :)
dash-tom-bang

Satu-satunya hal yang bermanfaat tentang AlienBrain adalah jendela pratinjau yang berfungsi dengan file Max. Yang lainnya hanyalah sampah.
tenpn

1
Tidak yakin seberapa konstruktif ini karena ini bukan pengalaman langsung, tetapi saya telah bekerja pada beberapa proyek yang telah menggunakan AlienBrain sebelum saya mengerjakan proyek, dan tidak menggunakannya lagi, dan tidak ada yang punya hal-hal baik untuk dikatakan tentang saya t. Ingatan saya untuk membaca tentang hal itu dan menangkap berita dari mulut ke mulut adalah bahwa itu meledak di tempat kejadian, terdengar sangat keren dan beberapa orang yang mampu membelinya mencobanya dan akhirnya menyadari itu adalah kesalahan.
Suboptimus

3

Server Yayasan Tim

dari Microsoft

  • Komersial
  • Terpusat
  • Terintegrasi dengan sangat baik dengan Visual Studio
  • Integrasi Windows Explorer yang bagus untuk pengguna non VS (mis. Artis)
  • Mendukung perubahan "Shelved", yang agak analog dengan 'stashing' in git, tetapi ia naik ke server; Anda juga dapat membuat rak ini menjadi publik, untuk memungkinkan pengguna lain mengintegrasikannya untuk Anda.
  • Sejak 2012 ia memiliki beberapa alur kerja peninjauan kode yang sangat baik yang dibangun langsung ke Visual Studio
  • Versi terbaru alat gabungan sangat bagus. Penggabungan otomatis berfungsi dengan cukup baik.
  • Mendukung file besar dan bindary dengan baik (jelas Anda tidak dapat menggabungkannya)
  • Server bangun sangat bagus
  • Mendukung check-in yang terjaga keamanannya, yang memungkinkan kualitas shelveset dievaluasi (melalui build otomatis, tes unit, analisis kode) sebelum dilakukan ke repositori.
  • Alat manajemen proyek yang sangat baik (tidak sepenuhnya fitur kontrol sumber, tetapi sangat berguna), memberikan keterlacakan dari persyaratan tingkat tinggi ke kode.

Saya telah menggunakan TFS secara luas pada proyek-proyek simulator MILSPEC, dan itu cukup bagus. Mungkin bukan yang terbaik jika Anda menggunakan Mac, meskipun ada plugin gerhana hari ini. Versi cloud-host mendukung repositori git untuk back-end sumber-kontrol.

Ini gratis untuk hingga lima pengguna di Visual Studio Online (memungkinkan sumber tertutup; tidak ada batasan ukuran repositori), yang dihosting di cloud. Jika Anda ingin meng-host-nya secara lokal, harganya bisa mahal.

Hal yang paling saya sukai tentang hal ini adalah fitur manajemen rekayasa perangkat lunak, dan fakta bahwa ia menangani file besar dan file biner dengan cukup bahagia.


1
Visual Studio Online baru gratis untuk hingga 5 pengguna dan dihosting di cloud (didukung dengan baik, dll.) Dapat melakukan TFS atau Git dengannya. Bagus untuk pengembangan game indie.
Robert Fraser
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.