Quellcodeverwaltung zum Speichern aller Spielprojekte?


10

Ist es üblich, nicht nur den Quellcode, sondern alle Assets, Texturen, Grafiken, Dokumentationsdateien usw. im Git-Repository zur Versionskontrolle zu verwalten? Zum Beispiel möchte ich die alte Version der Textur zurückbekommen. Wenn es sehr schlecht ist, welche Tools verwenden Sie für die Versionskontrolle von Assets und anderen Dingen?



1
Quellcode ist alles, was Sie nicht aus dem Quellcode generieren können. Assets, Texturen, Grafiken und Dokumentationen sind ebenfalls Quellcode unter dieser Definition.
Christoffer Hammarström

Antworten:


11

Ich würde sagen, das ist eine sehr gute Praxis. Die Quellcodeverwaltung sollte für Quelle und Vermögenswerte verwendet werden. Sie können sich das wie ein Backup vorstellen. Sie möchten in der Lage sein, alles, was zum Erstellen Ihres Spiels erforderlich ist, aus der Quellcodeverwaltung wiederherzustellen.

Ich habe eine Frage zum Speichern von Assets in einem Repository verknüpft . Es gibt einige Repositories, die besser als andere zum Speichern von Kunst funktionieren. Sie ermöglichen es Ihnen, die Kunst zu "differenzieren" und zu sehen, was sich geändert hat. Andere behandeln die Assets nur als Binärdaten, daher müssen Sie sie überprüfen, um festzustellen, was anders ist. Dies bedeutet auch, dass Sie das gesamte Asset hochladen müssen, wenn es sich ändert, da das Repository nicht "wissen" (analysieren) kann, was sich zwischen den Versionen geändert hat.

Ich speichere alles im Repository. Als ich meinen neuen Laptop bekam, konnte ich mein Repository überprüfen und mein Spiel erstellen, ohne irgendwelche Assets von irgendwo anders kopieren zu müssen. Das heißt, ich speichere auch die Bibliotheken, Assets und die Quellcodeverwaltung von Drittanbietern in meinem Repository.


6

Git eignet sich nicht für Nicht-Textdateien. Das Klonen eines Git-Repos erfordert das Herunterladen aller historischen Versionen einer Datei, es sei denn, Sie verwenden eine große Dateierweiterung (nicht standardmäßig, oft nicht von GUIs unterstützt) oder spezielle Befehle (dies muss ein Git-Guru sein). Gleiches gilt für die meisten DVCS-Systeme. Für eine Textur, ein Modell oder einen Audioclip bedeutet dies, dass viele Kopien einer sehr großen Datei abgerufen werden. 1 GB Assets können leicht 200 GB historische Revisionsdaten sein, und mit git können Sie alles herunterladen, wenn Sie ein neues Repo klonen, und alle Zwischenrevisionen herunterladen, wenn Sie die neuesten Daten abrufen. Dies wird zu einem großen Engpass, wenn Sie Produktionsverzögerungen am wenigsten tolerieren können.

Subversion, Perforce usw. sind bessere Optionen für Assets, da nur die gewünschte Version heruntergeladen werden muss (normalerweise die neueste). Sie können sie nur für Assets und git für Code verwenden oder sie auch als Quelle verwenden. Perforce verfügt über einige Funktionen, mit denen es sich wie ein sehr klobiges DVCS verhält, und ist meiner Erfahrung nach besser als die SVN-Funktionalität (wenn auch viel komplexer). Aufgrund der Kosten werden Sie jedoch wahrscheinlich Subversion verwenden.

Die meisten Content-Profis benötigen DVCS kaum, und einige haben ohnehin Probleme mit den Grundlagen des klassischen VCS. Satteln Sie nicht mit git. Oder Mercurial, DARCS usw.


Guter Punkt, aber Sie können klonen, ohne den gesamten Verlauf abzurufen stackoverflow.com/questions/11497457/…
Ali

1
@Ali: Flache Klone lösen das Problem überhaupt nicht angemessen (sie deaktivieren viele Befehle, sind nicht die Standardeinstellung für die meisten GUIs usw.) und sind für die meisten Dinge außer CI-Servern und dergleichen im Wesentlichen nutzlos. Neuere Git-Lösungen wie git-lfs sind entstanden, um die Probleme zu lösen, die ich bei dem Versuch skizziert habe, inhaltsintensive Teams auf git zu bringen.
Sean Middleditch

git lfs löst das Problem der "großen Binärdatei" sehr gut.
Nepoxx

3

Es ist eine gute Praxis, selbst als Künstler, wenn Sie an einem Projekt arbeiten, gibt es in der Regel eine Form der Versionskontrolle, Dateibeschädigung oder Fehler, ohne dass Künstler der Quellcodeverwaltung dazu neigen, Revisionen zu speichern, was sowieso nur ein großes Durcheinander ist.

Ein Beispiel aus der realen Welt, das Sie sehen können, sind die offenen Filmprojekte, die mit Blender (Big Buck Bunny, Durian usw.) erstellt wurden.

Die Art-Pipeline für ein Spiel ist mehr oder weniger dieselbe, außer dass es möglicherweise einen Build-Schritt für die Assets selbst gibt, um eine Konvertierung von großen Fettdaten in ein motorspezifisches Format durchzuführen, z. B. Texturkomprimierung und Modellformatkonvertierung.

Einige Tools, wie GitHub, bieten sogar nette Bildvergleichstools und ähnliches, was viel besser ist als der Vergleich eines binären Blobs.

Da ein Assets-Repository absolut riesig sein kann, ist es meine / unsere Präferenz, ein separates Assets-Repository zu führen, das ein Submodul im Projekt-Repository ist. Sie möchten keine Gigabyte an Assets abrufen, wenn Sie beispielsweise nur die Quelle verzweigen möchten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.