Für die Versionskontrolle stehen in Unreal Engine verschiedene Systeme zur Verfügung. Zu den beliebtesten gehören Perforce, Git und Subversion. Diese Systeme sind in den Editor integriert, weisen jedoch geringfügige Unterschiede in ihren Funktionen auf. Oft ist die Verwendung eines externen Clients unumgänglich.
Perforce
Die ideale Wahl wäre Perforce, da es auch das System ist, das Epic Games intern verwendet. Bedauerlicherweise ist es nur für bis zu fünf Nutzer kostenlos. Außerdem ist die Client-Implementierung in Bezug auf die Benutzeroberfläche eher veraltet. Die Serverinstallation ist unkompliziert und der Betrieb benötigt wenig Wartung. Es ist ein zentrales Verwaltungssystem, im Gegensatz zu Git, welches ein verteiltes System ist.
Git
Git, als ein weit verbreitetes System, ist zwar eine Option, bringt aber für Gruppen einige Nachteile mit sich, besonders wenn die Nutzer die mit Git nicht vertraut sind. Da es ein verteiltes System ist, muss man beachten, dass ein Commit zunächst nur das lokale Repository aktualisiert. Der Server, den die Gruppe verwendet, wird erst in einem zweiten Schritt aktualisiert. Viele Nutzer vergessen diesen Schritt, was oft zu Diskrepanzen unter den Teilnehmern führt, die dann mit erheblichem Zeitaufwand behoben werden müssen. Generell ist das Aktualisieren der Daten mit einer zeitlichen Verzögerung verbunden.
Git Fails Submit Pull Push
Subversion
Das Subversion System ist dem Perforce System in seiner zentralisierten Arbeitsweise ähnlich, gilt jedoch als veraltet. In Bezug auf die Datenspeicherung zeigt es sich im Vergleich zu moderneren Systemen wie Perforce oder Git als ineffizient. Die Serverinstallation gestaltet sich relativ aufwendig, und eine direkte Entsprechung zu einem System wie GitLab existiert im Grunde nicht. Die verfügbaren Alternativen sind entweder kommerziell oder veraltet und werden nicht länger gewartet.
Es ist für alle Systeme essenziell, einen Workflow zu befolgen und dem Prinzip „Früh speichern und häufig committen“ zu folgen. Dies impliziert, dass man eine Ressource sperren sollte, um sie zu bearbeiten, und sie dann so schnell wie möglich wieder sichern und freigeben sollte. In der Unreal Engine sind alle Ressourcen referenziert, oft miteinander, wodurch man auf diese Weise die Blockierung von Teamkollegen minimiert. Beim Arbeiten mit Blueprints ist es ein Alles-oder-Nichts-Prinzip, da man nicht einzelne Zeilen eines „Codes“ ändern kann.
Was ganz gut Funktioniert für Subversion (SVN):
- Mit einem externen Client ein Update des Repository.
- Editor Öffnen und Prüfen ob der interne Client mit dem Repository verbunden ist.
- Resourcen die Angelegt werden, werden automatisch mit Add dem Repo hinzugefügt
- Resoucen die Editiert werden sollen mit „check out“ Blockieren für die Bearbeitung durch andere.
- Speichern und „Submitten“ so früh wie möglich, aber nur wenn die Änderungen keine Fehler verursachen.
- Beim beenden der Arbeit immer „alles Speichern“ und ein „Submit“. Oft werden Ressourcen indirekt bearbeitet bzw. geändert. Die Einstellung für das Automatische „check out“ für „modified Resources“ ist durchaus Sinnvoll.
Keine Änderungen machen wenn die Verbindung nicht hergestellt ist!