Vermögensverwaltung, Datenbank oder Versionsverwaltung?

29

Während Sie die Assets für das Spiel entwickeln (Meshes, Texturen, Sounds, Videos), verwalten Sie sie?

  1. Zusammen mit dem Quellcode im Versionssystem aufbewahren? (Perforce, Git, etc ...)
  2. Oder eine zentrale Datenbank, die den Assets gewidmet ist und von den Redakteuren immer gern verwendet wird? (PostgreSQL, MySQL usw.)
  3. Andere?

Was sind die Vor- und Nachteile eines jeden und warum sollte man es dem anderen / den anderen vorziehen?

NocturnDragon
quelle
Gute Frage. Ich bin ziemlich gespannt, wie andere das angehen.
David McGraw
1
Für Informationen zur Versionskontrolle: gamedev.stackexchange.com/questions/480/… und gamedev.stackexchange.com/questions/245/… Ich glaube nicht, dass es sich um ein Duplikat handelt, da es sich speziell um Assets handelt
Sean James

Antworten:

22

Für viele von uns - insbesondere für kleinere Spiele - sollten sich die Assets unbedingt im selben Repository wie Ihre Quelle befinden .

Der Vorschlag, dass Assets in ein separates Repository gehören, ist nur für sehr große Assets oder für etwas größere Assets sinnvoll, wenn eine klar definierte Engine- / Datengrenze vorliegt. Es sei denn, es gibt einen bestimmten technischen Grund dafür - es ist ein schlechter Rat!

Sie möchten, dass sich Ihre Versionskontrolle wie die Versionskontrolle verhält . Sie möchten in der Lage sein, Revisionen vor- und zurückzuspulen, zu verzweigen und zusammenzuführen und trotzdem Ihr Spiel zum Laufen zu bringen. Und Ihr Code und Assets werden voneinander abhängig sind .

Beispiel: Ihr Code erwartet möglicherweise, dass er einen Parameter für einen Shader festlegen kann, und dieser Shader hängt möglicherweise von einer vorhandenen Textur ab. Oder vielleicht hängt das Datenformat Ihrer Levels von einer bestimmten Version Ihres Spielcodes ab.

Es wird mit ziemlicher Sicherheit chaotisch. Und Sie haben bessere Dinge zu tun, als zu versuchen, alles in Ordnung zu halten.


Nun, wie Mike Wagner kommentierte ( zu dieser Antwort ) - Sie wollen oder brauchen nicht alle "in Bearbeitung" -Versionen Ihrer Assets unter Versionskontrolle! Nur die endgültige / funktionierende Version, wie sie von Ihrem Code verwendet wird, reicht aus - oftmals exportieren Sie diese aus Ihrem Tool.

(Auch wenn Sie die aktuellen Versionen von Assets versionieren möchten - das ist in Ordnung. Und gut für ein separates Repository geeignet. Ich persönlich finde, dass eine gute Ordnerorganisation und ein ordnungsgemäßes Backup-System ausreichen.)

Abgesehen davon - es ist manchmal schön, die Option zu haben, nur "in Bearbeitung" Assets unter Versionskontrolle zu halten. In der Regel müssen Sie über eine Inhaltspipeline verfügen, die alle Exportschritte für Sie erledigt. Beispiel: Reduzieren Sie ein Bild mit mehreren Ebenen auf eine einzige Textur.

Andrew Russell
quelle
10

Versionierungssystem.

Mit einem Roll-Your-Own-Ansatz können Sie ein Versionsverwaltungssystem effektiv rollen. Verwenden Sie also besser ein Standardsystem, das bereits jahrelange Entwicklungs-, Code- und Testzyklen durchlaufen hat.

Bewahren Sie die Assets in einem von der Quelle getrennten Repository auf, um die Zeit für das Auschecken / Synchronisieren auf ein Minimum zu beschränken und unterschiedliche Entscheidungen darüber zu treffen, wie viel Verlauf beibehalten werden soll (obwohl der Speicherplatz billig ist, bewahren Sie alles auf, wann immer dies möglich ist. Individuelle Texturen werden nicht verwendet 't so viel über die Lebensdauer eines Projekts ändern).

Markieren Sie XML-Dateien als Binärdateien. Merge-Tools können verschachtelte Markups in der Regel nur sehr schlecht zusammenführen. Wenn das Tool der Ansicht ist, dass keine Konflikte vorliegen, können Interpreten beschädigte Markups kaum erkennen.

Wenn Sie können, lassen Sie bei jedem Commit eine Syntaxprüfung oder sogar einen Asset-Build durchführen und lehnen Sie das Commit mit einer E-Mail an die Person ab, die den Commit durchführt, wenn der Commit fehlschlägt. Dies spart viel Teamzeit.

Mondschatten
quelle
2
Vereinbarte, das Kunstvermögen und das Code-Vermögen in getrennten Repos zu halten. Sie werden möglicherweise auch feststellen, dass die Künstler eher zögern, etwas einzuchecken als die Programmierer, und nicht unbedingt, weil sie das System einschüchternd finden. Möglicherweise haben sie 30 grobe Umrisse eines Konzepts und möchten sie erst einreichen, wenn sie es auf etwas eingegrenzt haben, das ihnen gefällt. Berücksichtigen Sie dies in der Produktionspipeline. Wenn ihnen ein technischer Direktor den Hals runter atmet, um alles zu überprüfen, werden sie mehr Zeit im Repo verbringen, als Dinge auszuräumen.
Casey Wagner
1
Zum Markieren von XML-Dateien als binär: Wenn Ihr VCS separate Diff-Tools zulässt, bitten Sie es, etwas zu verwenden, das auf XML-Diffing für XML-Dateien spezialisiert ist. Dies kann dazu beitragen, seltsame Markup-Brüche zu vermeiden.
Jeff
+1 dazu. :) Assets gehören in ein eigenes Repository - wenn überhaupt in ein Repository. Verwenden Sie möglicherweise eine dedizierte Asset-Repository-Software? Speziell für diesen Zweck entwickelt, anstatt zu versuchen, es in Versionskontrollsysteme zu integrieren, die hauptsächlich für Textinhalte entwickelt wurden.
jacmoe
8

Alles in einem Repository, wenn Sie es sich in Bezug auf die Größe leisten können. Ich habe von Subversion-Repositorys in der Nähe von 1 TB gehört. Wir sind derzeit etwas unter 400 GB.

Außerdem überprüfen Künstler viel alles, einschließlich der 30 groben Umrisse eines Konzepts; Wir verwenden separate Ordnerbäume für "Quell-Assets" und "Exportiert" - diejenigen, die in das Skript zur Erstellung von Assets aufgenommen werden. Wenn Ihr Künstler morgen von einem Bus angefahren wird, müssen Sie in der Lage sein, dass am nächsten Tag jemand weiter an seinem Vermögen arbeitet und nur das Archiv durchsucht (keine Archäologie auf seinem persönlichen Computer). Es war einmal eine Zeit, in der Spiele 2D waren und Sprites aus komplexen animierten Max-Szenen vorgerendert wurden, als wir in einem RTS-Spiel eine Reihe von Einheiten mit einem etwas beschissenen und sehr inkonsistenten Aussehen (im Vergleich zu den anderen Einheiten) ausliefern mussten es handelte sich jedoch um ein erneutes Rendern mit geringfügig anderen Einstellungen für Beleuchtung und Antialiasing - da der ursprüngliche Künstler gekündigt hatte und wir seine ursprünglichen Max-Szenen nicht hatten. Don'

Unsigner
quelle
1
Lob für die Erwähnung des "Busfaktors"
Kromster sagt, dass er Monica