Kontrol sumber untuk menyimpan semua proyek game?

10

Apakah biasa untuk mengelola tidak hanya kode sumber, tetapi semua aset, tekstur, seni, file dokumentasi, dll di bawah repositori git untuk mengontrol versi? Misalnya saya ingin mendapatkan kembali versi lama dari tekstur. Jika praktiknya sangat buruk, alat apa yang Anda gunakan untuk mengontrol versi aset dan hal-hal lain?

Edward83
sumber
1
Kode sumber adalah segalanya yang tidak dapat Anda hasilkan dari kode sumber. Aset, tekstur, seni, dan dokumentasi juga merupakan kode sumber di bawah definisi itu.
Christoffer Hammarström

Jawaban:

12

Saya akan mengatakan itu adalah praktik yang sangat bagus. Kontrol sumber harus digunakan untuk sumber dan aset. Anda dapat menganggapnya sebagai cadangan, Anda ingin dapat memulihkan dari kontrol sumber semua yang diperlukan untuk membangun game Anda.

Saya menautkan pertanyaan tentang menyimpan aset dalam repositori. Ada beberapa repositori yang berfungsi lebih baik daripada yang lain untuk menyimpan karya seni. Mereka akan memungkinkan Anda untuk "membedakan" seni dan melihat apa yang berubah. Orang lain hanya akan memperlakukan aset sebagai data biner, jadi Anda harus memeriksanya untuk melihat apa yang berbeda. Ini juga berarti Anda harus mengunggah seluruh aset saat ia berubah, karena repositori tidak akan "tahu" (menguraikan) apa yang telah berubah di antara versi.

Saya menyimpan semua yang ada di repositori. Ketika saya mendapatkan laptop baru saya, saya dapat memeriksa repositori saya dan membangun game saya, tanpa perlu menyalin aset apa pun dari tempat lain. Itu berarti saya juga menyimpan perpustakaan pihak ketiga, aset, dan kontrol sumber di repositori saya.

MichaelHouse
sumber
7

Git tidak bagus untuk file non-teks. Mengkloning git repo memerlukan pengunduhan semua versi historis file, kecuali menggunakan ekstensi file besar (non-standar, sering tidak didukung oleh GUI) atau perintah khusus (mengharuskan guru git melakukannya). Hal yang sama berlaku untuk sebagian besar sistem DVCS. Untuk tekstur, model, atau klip audio, ini berarti menarik banyak salinan file yang sangat besar. Aset 1GB dapat dengan mudah berupa data revisi historis 200GB, dan git membuat Anda mengunduh semuanya ketika Anda mengkloning repo baru, dan mengunduh semua revisi perantara saat mengambil yang terbaru. Ini menjadi hambatan besar di jalan ketika Anda paling tidak bisa mentolerir penundaan produksi.

Subversion, Perforce, dan sebagainya adalah pilihan yang lebih baik untuk aset, karena mereka hanya perlu mengunduh revisi yang diinginkan (yang terbaru, biasanya). Anda dapat menggunakannya hanya untuk aset dan menggunakan git untuk kode, atau juga menggunakannya untuk sumber juga. Perforce memiliki beberapa fitur yang membuatnya berfungsi seperti DVCS yang sangat kikuk, dan lebih baik daripada fungsi SVN (meskipun jauh lebih rumit) dalam pengalaman saya, namun biayanya berarti Anda kemungkinan akan menggunakan Subversion.

Sebagian besar profesional konten memiliki sedikit kebutuhan untuk DVCS, dan beberapa memiliki masalah bahkan dengan dasar-dasar VCS klasik. Jangan pelana dengan git. Atau Mercurial, DARCS, dll.

Sean Middleditch
sumber
poin bagus, tetapi Anda dapat mengkloning tanpa mengambil semua sejarah stackoverflow.com/questions/11497457/…
Ali
1
@ Ali: klon dangkal sama sekali tidak menyelesaikan masalah secara memadai (mereka menonaktifkan banyak perintah, bukan default untuk sebagian besar GUI, dll.) Dan pada dasarnya tidak berguna untuk sebagian besar hal selain server CI dan sejenisnya. Solusi git yang lebih baru seperti git-lfs telah muncul untuk mengatasi masalah yang saya uraikan dalam upaya untuk membawa tim yang banyak konten ke git.
Sean Middleditch
git lfs memecahkan masalah "file biner besar" dengan sangat baik.
Nepoxx
3

Ini praktik yang baik, bahkan sebagai artis ketika Anda mengerjakan proyek cenderung ada beberapa bentuk kontrol versi, korupsi file atau bug dapat terjadi, tanpa kontrol sumber, seniman cenderung melakukan revisi kecuali menyimpan yang merupakan kekacauan besar.

Contoh dunia nyata yang dapat Anda lihat dari ini adalah proyek film terbuka yang dibuat dengan Blender (Big Buck Bunny, Durian, dll)

Pipeline seni untuk game kurang lebih sama, kecuali mungkin ada langkah membangun untuk aset itu sendiri untuk melakukan konversi dari data besar ke format spesifik mesin, seperti kompresi tekstur dan konversi format model.

Beberapa alat, seperti GitHub bahkan menawarkan alat perbandingan gambar yang bagus dan serupa, yang jauh lebih baik daripada membandingkan gumpalan biner.

Karena repositori aset bisa sangat besar, preferensi saya / kami adalah menyimpan repositori aset terpisah yang merupakan submodule dalam repositori proyek. Anda tidak ingin menarik gigabytes aset saat yang Anda inginkan adalah melakukan percabangan sumber misalnya.

Casper Beyer
sumber