Versionskontrollsysteme (VCS) ermöglichen es Teams den Quellcode ihrer Projekte zu sichern und zu archivieren. Das macht es einfacher, Bearbeitungen am Repository zu überprüfen oder durchzuführen oder im Fall eines Fehlers, der den Build zerstört, frühere Versionen wiederherzustellen.
Versionskontrolle ist der systematische Prozess für das Verfolgen und Verwalten von Aktualisierungen des Quellcodes und der Assets. Versionskontrollsysteme sind für effiziente Arbeitsabläufe von grundlegender Bedeutung, da sie für Programmierer, Grafiker und andere Teammitglieder als einzige verlässliche Informationsquelle fungieren und gleichzeitig jedem die Möglichkeit geben, unabhängig zu einer gemeinsamen Codebasis beizutragen. Sie dienen auch als Sicherheitsnetz, das es ermöglicht, Codeaktualisierungen rückgängig zu machen, falls während der Entwicklung ein katastrophaler Fehler auftreten sollte.
Versionskontrollsysteme sind eine zentrale Säule von DevOps, die es Teams ermöglichen, zusammenzuarbeiten und den Quellcode eines Projekts schnell zu iterieren.
Durch den Zugriff auf einen vollständigen Projektverlauf und die Möglichkeit, Fehler rückgängig zu machen, vereinfachen Versionskontrollsysteme die Fehlerfindung und erleichtern die Wiederherstellung zuvor entfernter Funktionen.
Das Erstellen eines neuen Repositorys in Ihrem Versionskontrollsystem öffnet den Hauptzweig: Dies wird als Hauptzweig oder Stammmaster bezeichnet. Der Master-Stamm ist, wo die Haupt-Codebasis in die Pipeline kommt, wo sie dann kompiliert und dem Endnutzer bereitgestellt wird.
Also was sind Verzweigungen? Verzweigung ist der Prozess, bei dem Code aus dem Master-Stamm herausgenommen wird. Dies erlaubt den Entwicklern, ihre eigenen Änderungen am Code vorzunehmen, ohne sie dem Haupt-Code hinzuzufügen. Verzweigungen zu nutzen, bedeutet, dass Entwickler nicht über den kompletten Dateiverlauf auf einem einzelnen Server verfügen müssen, stattdessen können sie einen vollständigen Projektverlauf der im Laufe der Zeit vorgenommenen Änderungen an ihrem Code pflegen. Das Versionskontrollsystem kann dann diese separaten Verzweigungen nehmen und sie im Hauptzweig wieder zusammenführen. Falls ein Entwickler nicht bereit ist, seine Aufgabenzweige im Haupt-Code zusammenzuführen, kann er seine Änderungen in eine separate Verzweigung überführen und sie zu einem Wunschzeitpunkt im Haupt-Code zusammenführen.
Eine angemessene Verzweigungsstrategie ist unerlässlich, um Code-Konflikte und defekte Builds zu vermeiden. Glücklicherweise ermöglichen gute Versionskontrollsysteme den Teams eine einfache Synchronisation mit dem Hauptzweig und die leichte Reparatur aller potentieller Code-Konflikte – sogar nachdem der Code dem Hauptintegrationszweig hinzugefügt wurde.
Mit dezentralisierten Versionskontrollsystemen können Sie einchecken, verzweigen und zusammenführen, ohne sich mit dem Hauptserver zu verbinden. Jeder Mitwirkende arbeitet mit einem geklonten Repository, das in der Cloud gespeichert ist. Ihr Hauptvorteil besteht darin, dass die Teammitglieder unabhängig voneinander und mit hoher Geschwindigkeit arbeiten können, ohne sich um langsame Netzwerke oder VPNs kümmern zu müssen. Es ist sogar möglich, offline an einem Projekt zu arbeiten, aber zum Pushen oder Pullen von Updates ist immer noch eine Internetverbindung erforderlich
Bei dezentralisierten Versionskontrollsystemen kann es zu langen Wartezeiten kommen, wenn Sie Ihren gesamten Projektverlauf herunterladen müssen, insbesondere bei großen Projekten mit umfangreichen Änderungsverläufen. Studios, die mit großen Binärdateien arbeiten, sollten die Speichernutzung sorgfältig überwachen, da diese Dateien schnell viel Platz beanspruchen können.
Studios, die Flexibilität und potenzielle Produktivitätssteigerungen anstreben, sollten eine dezentralisierte Versionskontrolle in Betracht ziehen.
Zentralisierte Versionskontrollsysteme verwenden einen Check-in/Push-Workflow zur Verbindung mit dem Hauptserver. Jede Änderung oder Aktualisierung des Quellcodes wird automatisch als neue Version im Repository gespeichert. Zentralisierte Versionskontrollsysteme verfügen über leistungsstarke Funktionen zum Verzweigen und Zusammenführen, ohne dass das Repository auf mehrere Rechner geklont werden muss. In diesem Sinne ist es potenziell sicherer.
Zentralisierte Versionskontrollsysteme erfordern eine Netzwerkverbindung. Da die Teams an eine einzige Version des Projekts gebunden sind, die auf einem Server gespeichert ist, können Serviceunterbrechungen zu erheblichen Verzögerungen führen. Ein weiterer Nachteil der zentralisierten Versionskontrolle ist, dass sie schlecht skalierbar ist. Je mehr Entwickler an Ihrem Projekt mitarbeiten, desto weniger Möglichkeiten gibt es, Änderungen in einer stabilen Umgebung voranzutreiben, was zu Problemen wie Merge-Konflikten führen kann.
Wenn Sie an Versionskontrollsystemen interessiert sind, die einfach einzurichten und zu verwenden sind, können Sie einen zentralisierten Arbeitsablauf in Betracht ziehen.
Lokale Versionskontrollsysteme sind die einfachste Form der Versionskontrolle und werden hauptsächlich von einzelnen Entwicklern und nicht von Teams verwendet. Bei der lokalen Versionskontrolle werden alle Projektdaten auf einem einzigen Computer gespeichert, und Änderungen an Projektdateien werden als Patches gespeichert. Jeder Patch enthält nur die Aktualisierungen, die seit dem vorherigen Patch vorgenommen wurden. Wenn ein Problem mit einer bestimmten Version Ihres Projekts auftritt, müssen Sie die gesamte Sammlung von Patches untersuchen, um herauszufinden, wie die Projektdateien zu einem bestimmten Zeitpunkt aussahen, um das Problem zu diagnostizieren.
Da sie an einen Computer gebunden sind, sind lokale Versionskontrollsysteme von Natur aus weniger flexibel als ihre dezentralisierten und zentralisierten Gegenstücke. Die Zusammenarbeit zwischen Teammitgliedern ist schwierig, und wenn die Datenbank beschädigt ist, kann es schwierig, wenn nicht gar unmöglich sein, die verlorenen Informationen wiederherzustellen.
Im Allgemeinen ist es in Ordnung, mit lokaler Versionskontrolle zu beginnen, aber sobald Sie anfangen zu skalieren (schon von einem 1-Person-Team zu einem 2-Personen-Team), ist die Arbeit mit einer dezentralisierten oder zentralen Versionskontrolle besser.
Verfolgen Sie Änderungen leicht nach und führen Sie Projektübergreifend zusammen
Ermöglicht den Vergleich von Dateien und identifiziert die Unterschiede zwischen Dateien
Einfache Problembehebung aufgrund des vollständigen Änderungsarchivs, das innerhalb des VCS gespeichert ist.
Das zentrale Repository ermöglicht die nahtlose Zusammenarbeit, ohne Auswirkungen auf die individuelle Leistung oder Code-Änderungen zu haben
Sparen Sie Speicherplatz und Zeit, indem Sie Dateien nahtlos mit Entwicklern und Beteiligten teilen, ohne dass Sie ständig Kopien von Code-Anpassungen speichern müssen
Dezentrale Entwicklung ermöglicht es Entwicklern, von überall aus zu arbeiten, wo sie möchten
Agile und DevOps verfolgen dieselben Ziele – Wertschöpfung für die Kunden mittels regelmäßiger Veröffentlichungen – sie unterscheiden sich aber etwas in der Herangehensweise. Erfahren Sie, wie beide Lösungen zusammen eingesetzt werden können.
Jedes Spielestudio sucht nach Möglichkeiten, die Produktion zu beschleunigen und gleichzeitig die Kosten zu reduzieren. DevOps bietet die beste Möglichkeit, beides zu erreichen. Lernen Sie zunächst die wichtigsten Grundsätze der DevOps-Methodologie kennen.
Die Implementierung von DevOps-Verfahren optimiert die Entwicklungspipeline und steigert die Zufriedenheit des Teams und der Benutzer. Erfahren Sie mehr darüber, wie DevOps Sie unterstützen kann.
Sollten Sie zentralisiert oder dezentralisiert arbeiten? Beide Ansätze haben Vor- und Nachteile – in diesem kostenlosen E-Book erfahren Sie, welcher Ansatz zur Versionskontrolle für Ihr Team am besten geeignet ist.
Nutzen Sie verteiltes und zentralisiertes Arbeiten mit den Versionskontrollsystemen von Unity. Verwalten Sie große Binärdateien mit datei- und änderungssatzbasierten Workflows. Speichern Sie Quellcode und Assets und verfolgen Sie Änderungen mit einem sicheren Versionskontrollsystem, das für jede Engine geeignet ist.