Oyun projesinin her şeyi depolamak için kaynak kontrolü?


10

Sadece kaynak kodunu değil, sürüm kontrolü için git deposu altındaki tüm varlıkları, dokuları, sanatı, dokümantasyon dosyalarını vb. Yönetmek normal midir? Mesela eski doku versiyonunu geri almak istiyorum. Çok kötü bir uygulama varsa, varlıkların ve diğer şeylerin sürüm kontrolü için hangi araçları kullanıyorsunuz?



1
Kaynak kodu, kaynak koddan oluşturamadığınız her şeydir. Varlıklar, dokular, sanat ve dokümantasyon da bu tanımın altındaki kaynak kodudur.
Christoffer Hammarström

Yanıtlar:


12

Çok iyi bir uygulama olduğunu söyleyebilirim. Kaynak ve varlıklar için kaynak kontrolü kullanılmalıdır. Bunu bir yedek gibi düşünebilirsiniz, oyununuzu oluşturmak için gereken her şeyi kaynak kontrolünden geri yüklemek isteyebilirsiniz.

Ben bir sorum bağlantılı bir depoda varlıklarını saklamak ilgili. Sanatı depolamak için diğerlerinden daha iyi çalışan bazı depolar var. Sanatı "dağıtmanıza" ve nelerin değiştiğini görmenize izin verecekler. Diğerleri sadece varlıkları ikili veri olarak ele alır, böylece neyin farklı olduğunu görmek için kontrol etmeniz gerekir. Bu aynı zamanda deponun sürümler arasında nelerin değiştiğini "bilmesi (ayrıştırması) mümkün olmayacağı için, değiştiğinde tüm varlığı yüklemeniz gerektiği anlamına gelir.

Her şeyi depoda saklıyorum. Yeni dizüstü bilgisayarımı aldığımda, başka bir yerden herhangi bir varlığı kopyalamaya gerek kalmadan veri havuzumu kontrol edip oyunumu oluşturabildim. Bu, üçüncü taraf kütüphanelerini, varlıkları ve kaynak kontrolünü de depomda sakladığım anlamına gelir.


7

Git, metin olmayan dosyalar için mükemmel değildir. Git kopyasını kopyalamak, büyük bir dosya uzantısı (standart olmayan, genellikle GUI'ler tarafından desteklenmez) veya özel komutlar (yapmak için bir git guru olmayı gerektirir) kullanmadığı sürece bir dosyanın tüm geçmiş sürümlerinin indirilmesini gerektirir. Aynı şey çoğu DVCS sistemi için de geçerlidir. Doku, model veya ses klibi için bu, çok büyük bir dosyanın birçok kopyasını çekmek anlamına gelir. 1 GB'lık varlıklar kolayca 200 GB geçmiş revizyon verisi olabilir ve git, yeni bir repo klonladığınızda hepsini indirmenizi ve en son yakalarken tüm ara düzeltmeleri indirmenizi sağlar. Bu, üretim gecikmelerini en az tolere edebildiğinizde yolda büyük bir darboğaz haline gelir.

Subversion, Perforce, vb. Varlıklar için daha iyi seçimlerdir, çünkü bunlar sadece istenen revizyonu indirmeyi gerektirirler (genellikle en son). Bunları yalnızca varlıklar için kullanabilir ve kod için git'i veya kaynak için de kullanabilirsiniz. Perforce, çok karmaşık bir DVCS gibi davranmasına izin veren bazı özellikler içeriyor ve deneyimimde SVN işlevselliğinden (çok daha karmaşık olsa da) daha iyi, ancak maliyet, Subversion kullanacağınız anlamına geliyor.

Çoğu içerik uzmanının DVCS'ye çok az ihtiyacı vardır ve bazılarının klasik VCS'nin temellerinde bile sıkıntıları vardır. Git ile eyerleme. Veya Mercurial, DARCS, vb.


iyi bir nokta, ama tüm geçmişi getirmeden klonlayabilirsiniz stackoverflow.com/questions/11497457/…
Ali

1
@Ali: sığ klonlar sorunu yeterince çözmez (birçok komutu devre dışı bırakır, çoğu GUI için varsayılan değildir, vb.) Ve CI sunucuları ve benzerlerinin yanı sıra çoğu şey için işe yaramaz. Git-lfs gibi daha yeni git çözümleri, içeriğe ağır ekipleri git'e sokmak için özetlediğim sorunları ele almak için ortaya çıktı.
Sean Middleditch

git lfs "büyük ikili dosya" sorununu çok iyi çözer.
Nepoxx

3

İyi bir uygulama, bir proje üzerinde çalışırken bir sanatçı olarak bile, sürüm kontrolü, dosya bozulması veya hatalar meydana gelme eğilimi var, kaynak kontrol sanatçıları revizyon yapmak eğilimindedir zaten büyük bir karmaşa budur.

Bunun gerçek örneği, Blender (Big Buck Bunny, Durian, vb.) İle yapılan açık film projeleri.

Bir oyun için sanat boru hattı aşağı yukarı aynıdır, ancak varlıkların kendilerinin doku yağlama ve model formatı dönüştürme gibi büyük yağ verilerinden motora özgü formata bir miktar dönüşüm yapmaları için bir oluşturma adımı olabilir.

GitHub gibi bazı araçlar, güzel bir görüntü karşılaştırma araçları ve benzerleri sunar, bu da ikili bir blob'u karşılaştırmaktan çok daha iyidir.

Bir varlık deposu kesinlikle çok büyük olabileceğinden, benim / tercihimiz proje deposunda bir alt modül olan ayrı bir varlık deposu tutmaktır. İstediğiniz tek şey, örneğin kaynağı dallandırmak olduğunda gigabaytlık öğeleri aşağı çekmek istemezsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.