Perforce Software entwickelt Werkzeuge für Software-, Medien- und Spieleproduktionen. In der Spieleentwicklung ist das Unternehmen vor allem durch seine Versionsverwaltung Perforce P4 bekannt. Sie kommt bei Projekten zum Einsatz, in denen neben Programmcode große Mengen an Grafiken, 3D-Modellen, Animationen, Audio und anderen Spieldaten verwaltet werden müssen.
Was ist Perforce?
Perforce Software ist ein Softwareunternehmen, dessen Produkte verschiedene Bereiche der Softwareentwicklung abdecken. Dazu zählen Versionsverwaltung, Code Reviews, automatisierte Tests und weitere Werkzeuge für Entwicklungsprozesse.
Für die Spieleentwicklung ist insbesondere Perforce P4 relevant. Die Versionsverwaltung speichert Projektdateien zentral und dokumentiert deren Änderungen. Dadurch lässt sich nachvollziehen, welche Version einer Datei aktuell ist, wer sie verändert hat und welche früheren Stände existieren.
Mit P4 Code Review bietet Perforce zusätzlich eine Oberfläche zur gemeinsamen Überprüfung von Änderungen.
Was ist eine Versionsverwaltung?
Eine Versionsverwaltung dokumentiert Änderungen an Dateien eines Projekts. Statt ältere Fassungen einfach zu überschreiben, bleiben verschiedene Entwicklungsstände nachvollziehbar.
Arbeitest du beispielsweise an der Spiellogik einer Tür, kann eine neue Änderung einen Fehler verursachen. Über die Versionsverwaltung lässt sich untersuchen, was sich gegenüber einem früheren funktionierenden Stand geändert hat.
Im Team erfüllt das System eine weitere Aufgabe: Mehrere Personen arbeiten am selben Projekt, ohne sämtliche Dateien manuell untereinander austauschen zu müssen.
Warum entstehen bei Spielen besonders viele Dateien?
Ein Spiel besteht nicht ausschließlich aus Programmcode. Zum Projekt gehören beispielsweise Texturen, 3D-Modelle, Animationen, Musik, Sprachaufnahmen, Videos, Leveldaten und Benutzeroberflächen.
Viele dieser Assets können erheblich größer sein als gewöhnliche Quellcodedateien. Als Asset bezeichnet man in der Spieleentwicklung eine Datei oder Ressource, die für das Spiel benötigt wird. Dazu kann eine einzelne Textur ebenso gehören wie ein vollständiges 3D-Modell.
Gerade umfangreiche Spieleprojekte sammeln im Verlauf ihrer Entwicklung große Datenmengen an. Eine Versionsverwaltung muss deshalb nicht nur zahlreiche Dateien, sondern auch unterschiedliche Dateiformate verwalten können.
Was ist Perforce P4?
Perforce P4 bezeichnet die Versionsverwaltungsplattform von Perforce. Früher war das zentrale Produkt unter dem Namen Helix Core bekannt. Perforce verwendet inzwischen P4 als Produktbezeichnung.
Die Dateien eines Projekts liegen in einer zentral verwalteten Struktur. Teammitglieder holen sich die benötigten Dateien auf ihren Entwicklungsrechner, bearbeiten sie und übertragen ihre Änderungen anschließend zurück.
Der zentrale Ansatz unterscheidet sich von verteilten Versionsverwaltungen wie Git. Bei Git besitzt ein Entwickler normalerweise eine vollständige Kopie des Repositorys einschließlich seiner Versionsgeschichte. P4 arbeitet stärker mit einem zentralen Server und ausgewählten Arbeitsbereichen.
Welcher Ansatz geeigneter ist, hängt vom Projekt und dessen Arbeitsabläufen ab.
Was ist ein Workspace?
Ein Workspace ist der Arbeitsbereich eines Teammitglieds auf dessen eigenem Rechner. Er legt fest, welche Dateien aus dem zentralen Projekt an welcher lokalen Stelle verfügbar sein sollen.
Nicht jeder Mitarbeiter benötigt zwangsläufig sämtliche Projektdaten. Ein Programmierer arbeitet möglicherweise hauptsächlich mit Quellcode, während ein Artist große Grafik- und Modelldateien benötigt.
Durch entsprechende Zuordnungen lässt sich festlegen, welche Teile des Projekts in einem Workspace erscheinen.
Änderungen werden in Changelists zusammengefasst
P4 organisiert Änderungen unter anderem über sogenannte Changelists. Eine Changelist fasst zusammengehörende Dateiänderungen zu einer Einheit zusammen.
Korrigierst du beispielsweise einen Fehler an einer Tür, könnten Änderungen an mehreren Skripten notwendig sein. Statt diese Dateien ohne Zusammenhang einzureichen, lassen sie sich gemeinsam in einer Changelist speichern.
Die Changelist erhält eine eindeutige Nummer und kann mit einer Beschreibung versehen werden. Dadurch lässt sich später nachvollziehen, welche Änderungen zusammengehörten und welchem Zweck sie dienten.
Große Binärdateien stellen besondere Anforderungen
Quellcode besteht überwiegend aus Text. Zwei unterschiedliche Fassungen lassen sich deshalb vergleichsweise einfach miteinander vergleichen. Bei einer Textur, einem 3D-Modell oder einer Audiodatei funktioniert das nicht auf dieselbe Weise.
Solche Dateien liegen häufig als Binärdateien vor. Ihre Änderungen lassen sich nicht sinnvoll Zeile für Zeile miteinander vergleichen.
Hinzu kommt, dass manche Assets nicht gleichzeitig von mehreren Personen bearbeitet und anschließend automatisch zusammengeführt werden können. Zwei Programmierer können Änderungen an unterschiedlichen Bereichen einer Textdatei unter Umständen zusammenführen. Bei derselben 3D-Datei ist das wesentlich schwieriger.
Warum können Dateien gesperrt werden?
Für solche Situationen unterstützt P4 das File Locking. Eine Datei kann für die Bearbeitung gesperrt werden, sodass nicht mehrere Personen gleichzeitig widersprüchliche Änderungen daran vornehmen.
Bearbeitet beispielsweise ein Leveldesigner eine Datei, die sich nicht sinnvoll mit einer zweiten Version zusammenführen lässt, kann die Sperre anderen Teammitgliedern anzeigen, dass diese Datei momentan in Arbeit ist.
File Locking ist damit kein allgemeiner Ersatz für die Versionsverwaltung. Es löst ein spezielles Problem bei Dateien, deren parallele Bearbeitung schwierig oder unmöglich ist.
P4 und Spiele-Engines
Versionsverwaltung läuft nicht zwangsläufig getrennt von der verwendeten Spiele-Engine. Unreal Engine besitzt beispielsweise eine Integration für Perforce. Dadurch lassen sich bestimmte Versionsverwaltungsfunktionen direkt aus dem Editor nutzen.
Auch bei Unity-Projekten kann P4 eingesetzt werden. Die konkrete Einrichtung hängt von Engine, Projektstruktur und den Arbeitsabläufen des Teams ab.
Eine Integration bedeutet nicht, dass Perforce Bestandteil der jeweiligen Engine ist. P4 bleibt ein eigenständiges System, das mit der Entwicklungsumgebung verbunden wird.
Was passiert bei einem Fehler?
Versionsverwaltung spielt auch beim Debugging eine Rolle. Angenommen, dein Spiel funktioniert in Build 120, stürzt in Build 121 jedoch beim Öffnen einer Tür ab.
Zunächst kannst du untersuchen, welche Änderungen zwischen beiden Entwicklungsständen vorgenommen wurden. Eine Changelist könnte beispielsweise zeigen, dass kurz zuvor die Inventarprüfung verändert wurde.
Damit ist die Ursache noch nicht bewiesen. Die Änderung bildet zunächst einen möglichen Untersuchungsbereich. Log-Dateien und ein Stack Trace können zusätzliche Hinweise liefern.
Was ist P4 Code Review?
P4 Code Review ergänzt die Versionsverwaltung um die gemeinsame Überprüfung von Änderungen. Das Produkt war früher unter dem Namen Helix Swarm bekannt.
Bei einem Code Review betrachtet eine andere Person die vorgenommenen Änderungen, bevor oder während sie in den gemeinsamen Entwicklungsstand übernommen werden. Dabei können beispielsweise Fehler, unklare Lösungen oder unbeabsichtigte Auswirkungen auffallen.
Kommentare und Diskussionen lassen sich den entsprechenden Änderungen zuordnen. Der Review-Prozess dokumentiert damit nicht nur den Programmcode, sondern auch dessen gemeinsame Prüfung.
Perforce und Sentry
Versionsverwaltung und Fehlererfassung erfüllen unterschiedliche Aufgaben. Perforce dokumentiert Änderungen am Entwicklungsprojekt. Sentry sammelt dagegen technische Informationen zu aufgetretenen Fehlern und Abstürzen.
Beide Systeme können miteinander verbunden werden. Ein erfasster Fehler lässt sich dadurch mit Informationen aus der Versionsverwaltung in Beziehung setzen. Sentry kann beispielsweise Änderungen identifizieren, die zeitlich mit dem erstmaligen Auftreten eines Fehlers zusammenfallen.
Auch hier handelt es sich zunächst um einen Hinweis. Eine verdächtige Änderung muss nicht zwangsläufig die tatsächliche Ursache eines Fehlers darstellen.
Perforce ist nicht nur für Spiele gedacht
Obwohl P4 in der Spielebranche eingesetzt wird, entwickelt Perforce seine Produkte nicht ausschließlich für Spieleentwickler. Versionsverwaltung und andere Entwicklungswerkzeuge kommen auch in weiteren Bereichen der Softwareentwicklung sowie in Medienproduktionen zum Einsatz.
Für Spiele entstehen besondere Anforderungen vor allem durch die Kombination aus Programmcode und großen Binärdateien. Genau diese Mischung erklärt, weshalb sich P4 im Zusammenhang mit Spieleproduktionen von einer reinen Quellcodeverwaltung unterscheidet.
Weitere Artikel auf Games und Lyrik
Wie sich Versionsverwaltung, Logs und Stack Traces in einen größeren Entwicklungsprozess einordnen, erfährst du in den Artikeln über Debugging in der Spieleentwicklung, Log-Dateien und Stack Traces.
Weitere Informationen zu den Produkten und ihren Einsatzbereichen findest du auf der offiziellen Website von Perforce.
