[Info] CK Feature - Version Control mit Perforce Integration

E

Ehemaliger Benutzer

Gast
Dieses Info - "Tutorial" wendet sich ausschließlich an fortgeschrittene User/Modder, da man sich mit der hier beschriebenen "Technik" und Software sowohl seine Sykrim Installation gründlich zerschießen, als auch mit dem Betrieb einer (Closed Source) Server Software Grundsätzlich eine zusätzliche Sicherheitslücke mit an Board holen kann.

Ein englisches Tutorial und einen Disskusionsthread findet Ihr hier:

CK Wiki - VC

und hier:

Perforce Integration in the Creation Kit


Was genau ist VC?

Version Control ist ein Feature von Bethesdas Toolkits - Construction Set, GECK oder Creation Kit - zur Erstellung und Bearbeitung von ESPs und für das gemeinsame arbeiten mehrerer "Designer" an einer Masterdatei ausgelegt. Bethesda verwendet also das gleiche Programm wie wir, nur das dabei VC aktiviert ist um während der Entwicklung von Oblivion, Fallout und Skyrim ein gemeinsames Arbeiten zu ermöglichen und ein überschreiben der Daten der einzelnen Entwickler zu verhindern. Version Control ist aus nahe liegenden Gründen in unserer Version des CK / CS /Geck deaktiviert, lässt sich allerdings mit ein paar Änderungen an der Editor INI wieder aktivieren.


Was kann man mit Version Control machen?

  • Das Mergen - zusammen kopieren - von Objekten (Forms) aller Art, ohne dass eine Änderung die andere ausschließt bzw. überschreibt.
  • Man kann gemeinsam an einer Zelle /Worldspace arbeiten.
  • Es hält jede gemachte Änderung in einem LOG fest und sperrt wenn nötig FORMS für einen Designer, wenn 2 Entwickler zufällig das gleiche Objekt bearbeiten wollen. Dass verhindert, dass die Arbeit des einen, die des anderen wieder Rückgängig macht.
  • Man muss beim Arbeiten an einer ESM nicht auf Dirty Edits in der ESP achten, da nur die Änderungen in die ESM übertragen werden, die man beim CHeckIn ausdrücklich auswählt (was für eine Formulierung :D)
  • VC ist Netzwerk basiert und versorgt so immer alle Designer mit der jeweils aktuellsten Arbeitskopie.

Was kann man mit Version Control nicht?

- Es gestattet kein Merging von Plugin-Files (Dazu war im CS noch ein eigenen Tool enthalten).
- Es kann keine gewöhnlichen Ordner/Partitionen adressieren. Es ist also nur für Moddingteams oder Modder interessant, die mit einem Masterfile arbeiten wollen.
- Es ist nichts für die "breite Masse" der Pluginersteller, da man zur Arbeit mit VC schon ein sehr fortgeschrittenes Wissen im Umgang mit dem CK / Geck / CS aufweisen sollte, um abschätzten zu können was man damit ändert und ob es überhaupt notwendig ist eine eigene Masterdatei zu verweden.

Wichtiger Hinweis

Die eigene/neue ESM darf nicht mehr als 2 andere ESMs als Masterdateien haben, da Version Control alle "FOMRID Präfixe" die größer sind als 02 auf 02 kürzt.


Teil 1 - Version Control aktivieren

Es wird ein neuer, leerer Ordner benötigt in dem das CK die Masterdatei bearbeiten sowie alle nötigen Protokolldateien und Backups ablegen kann.
Der Ordner kann sich entweder auf dem eigenen PC, auf einem Workspace im INET oder auch einem NAS befinden.

- Erstellt dort einen neuen Ordner (Beim eignen PC sollte dieser möglichst auf der obersten Ebene der Partition / HD angelegt werden) und gebt ihm einen passenden Namen

zum Beispiel: TES5VC

Erstellt in diesem einen Unterordner und nennt ihn Data.
Erzeugt einen weiteren und benennt ihn VersionBackup.
Erstellt eine Textdatei mit der Bezeichnung: ConstructionSetNetwork.ini und legt sim im Netzwerkhauptordner ab.
Gebt nun den Hauptordner (TES5VC) für den Netzwerkzugriff frei (lesen+schreiben).


Erstellt im Data Ordner eures Skyrim Verzeichnisses einen Unterordner mit dem Namen CheckInBackup.

Damit wurden alle Ordner erstellt, vergreifen wir uns nun an der *Editor.ini.

Editor INI anpassen

Wenn sie nicht schon vorhanden sind, dann fügt folgende Zeilen der Sektion [General] unmittelbar nach dem Eintrag (Zeile darunter): SLanguage = GERMAN hinzu:

SLocalBackupPath=Data\CheckInBackup
SNewVersionBackupPath=\\NetzwerkNamedesComputers\tes5vc\VersionBackup\
SLocalSavePath=Saves\
SLocalMasterPath=Data\
SNetworkMasterPath=\\NetzwerkNamedesComputers\tes5vc\Data\
bUseVersionControl=0
bUseMyGamesDirectory=0
SNetwork Path=\\NetzwerkNamedesComputers\tes5vc\

(Zwischen SNetwork und Path MUSS ein Leerzeichen sein, sonst findet das CK den Netzwerk Ordner nicht!)

Setzt anschliessend den Eintrag

bUseVersionControl=0

in der *Editor.ini auf 1 um VC zu aktivieren. Öffnet die *EditorPref.ini und fügt ganz am Ende, unter dem Eintrag

[NavMeshOverlay]
uOverlayColorPref=80808080

die Zeilen

[WhoCanMerge]
EuerBenutzterName=1

hinzu.

Kopiert jetzt die Skyrim.esm und eure Masterdatei ins Data Verzeichnis des Netzwerkordners (TES5VC\Data). Macht bevor wir fortfahren ein Backup eurer Skyrim.esm (Nur zur Sicherheit, falls ihr aus versehen in die falsche ESM versucht einzuchecken...).

Startet jetzt das CK. Das mault als erstes ==> "Unable to initialize Perforce, Check your Logs for more Information" <== dass es die Perforce COM DLL nicht finden kann => Mit Ja bestätigen, ihr habt (noch) keinen Perforce Server installiert. Dazu kommen wir weiter unten. Ladet nun eure ESM zusammen mit der von Skyrim. Das CK beschwert sich wieder:

==>TESBitArrayFile::OpenAndMapBitArrayFile could not find file "Skyrim.fud".
==> TESBitArrayFile::OpenAndMapBitArrayFile could not find file "EureMasterdatei.fud".


Continue Running Executable?

JA

"Yes to all" will disable all Warnings this session.

=> OK

Wartet bis das CK mit dem laden fertig ist und öffnet dann das Datafile Fenster. Markiert die Skyrim.esm, klickt auf Details und bestätigt die Abfrage.
Drückt anschliessend

STRG+SHIFT+B

Worauf ihr gefragt werdet:

You have chosen to create/update the bit array files for the current file.
This operation cannot be undone and may take a long time to complete.


==> Mit Ja bestätigen.

Sobald in der Fussleiste des CKs die Meldung

Updating bit arrays… Done

angezeigt wird, schließt ihr das Fenster wieder und wiederholt das Spielchen mit eurer ESM. Das CK hat damit im TES5VC/Data-Ordner die Dateien Skyrim.fud, Skyrim.fid und Skyrim.fvd sowie die drei selben Logfiles für eure ESM erstellt.
Diese Dateien werden von VC für die Datensynchronisation mit den jeweiligen Arbeitskopien und der Netzwerk Masterdatei benötigt.
Das FID-File Protokolliert dabei, welche Form-IDs benutzt wurden und das FUD-File welcher Benutzer diese IDs in Bearbeitung (CheckOut) hat.

Speichert nun und erzeugt damit eine leere ESP, damit das CK euren neuen Objekten eine Benutzer ESP und einem Benutzter für den CheckIn zuordnen kann.
Nun könnt ihr ein neues Objekt anlegen (Versucht dabei nicht eine bereits vorhandene FORM der Skyrim.esm zu verwenden) und bearbeiten.
Speichert die ESP und drückt anschließend den Knopf neben dem Datei öffnen Dialog. Markiert im offenen VC Fenster euer Objekt und klickt auf "CHeckIn". Schreibt im Protokollfenster einen Kommentar, was ihr da gerade fabriziert habt (Wenn ihr ernsthaft an einem Projekt arbeitet, solltet ihr auf jedenfall eurer Änderungen protokollieren) und markiert im nächsten Fenster eure Masterdatei als Ziel der Änderung. Beantwortet die Frage nach dem CID File mit Nein. Das CK schreibt nun eure Änderung in die ESM. Glückwunsch, erste FORM eingecheckt.

Änderungen am Projekt solltet ihr zunächst in einer *esp abspeichern und ausgiebig testen. Alle von euch erstellten und geänderten Objekte (FORMs) werden dabei in der FUD-File markiert und in der Liste des VC-Fensters mit eurem Benutzernamen als derzeitigem Bearbeiter angezeigt. Ihr könnt dabei nur einzelne Objekte/FORMS markieren oder mit "Select All" alle Änderungen auswählen. Diese markierten "lokalen" Änderungen werden in das Masterfile im Netzwerk geschrieben, indem VC sie per "Check In" in die ESM "eincheckt". Dann löscht es diese aus der FUD und "entfernt" sie ebenfalls aus der Plugindatei (*.esp). Zuvor legt es allerdings von der ESP im CheckInBackupOrdner und von der ESM im VersionBackup Ordner eine Sicherheitskopie mit Timestamp an. Zusätzlich werden die neuen Forms einer noch nicht verwendeten ID zugeordnet, indem das FID-File überprüft und die Änderungen in das Netzwerk-Masterfile integriert werden. Wenn Ihr nach dem CheckIn-Prozess das CK neu ladet/startet, kriegt ihr eine Benachrichtigung, dass sich eure lokale ESM Arbeitskopie von der auf dem Netzlaufwerk unterscheidet. Ihr könnt nun wählen ob ihr diese aktualisieren wollt oder vorläufig mit der alten fortfahrt. Nach einem Klick auf Ja, wird diese vom Netzwerk heruntergeladen und anschließend mit dem laden der restlichen Daten weitergemacht. Sollte ihr euch gegen eine Aktualisierung entscheiden, könnt ihr zwar weiterarbeiten, aber keinen CheckIn durchführen, bis ihr auf das neuere Masterfile aktualisiert habt....


Teil 2 - Perforce aktivieren

Wozu ist nun Perforce gut?

Perforce ist eine eigenständige (kommerzielle) Versions Kontroll Software und wurde (wird) von Bethesda dazu eingesetzt Ihre Assets (Modelle, Texturen etc.) im Projekt zu synchronisieren. Die Perforce Integration im CK dient dazu, die Änderungen an den Papyrus Skripten zu Protokollieren und sicherzustellen, dass alle Entwickler immer mit der aktuellsten Version der Skripte versorgt werden. Perforce ist für Gruppen mit weniger als 20 Entwicklern und Einzelpersonen "frei" verfügbar, für größere Gruppen muss (theoretisch) eine Lizenz erworben werden, wobei bei nicht kommerziellen Projekten dass vermutlich nicht so genau ausgelegt wird...

Den Perforce Server / Clienten herunterladen und installieren

Ladet euch von hier Public Perforce.com die P4Com.Dll herunter und kopiert sie in den Sykrim Ordner. Registriert die DLL bei eurer Windows Installation mittels regsvr32.exe in einer Eingabeaufforderung mit Administrator rechten.

Ladet euch nun den Perforce Server und das Client-/Administrationstool von der Perforce Webseite herunter. Stellt sicher, dass euer Benutzeraccount über Adminrechte verfügt und installiert ersteren (perforce.exe) wie in diesem Tutorial beschrieben. Allerdings überspringt ihr den "SSL" Abschnitt, da der Netzwerkteil des CK nicht dazu gedacht war eine verschlüsselte TCP Verbindung aufbauen zu müssen. Wäre auch ziemlicher Nonsens, da es ja nur im "internen" Bethsoft Netzwerk agiert (Ich zähle dazu auch eine möglicherweise vorhandene VNC Verbindung zu anderen Bethsoft / Zenimax Standorten).

Legt einen neuen, leeren Ordner auf einer Festplatte / Partition des eigenen PCs mit möglichst viel freiem Platz an und gebt ihm einen Sinnvollen Namen: z.B: p4tesdepot. In diesen wird vom Server im Anschluss euer Perforce TES-Depot einschließlich aller Protokolle etc. gespeichert.

Führt nun die P4Vinst.exe aus. Wählt im ersten Fenster das Windows Explorer Plugin ab und klickt auf "Weiter". Kontrolliert im nächsten Fenster ob der angegebene Port und der Benutzername mit dem in der Server Installation übereinstimmt und klickt wieder auf "Weiter". Nachdem die Installation abgeschlossen ist, startet Ihr das P4Admin Programm Start=>Programme=>Perforce=>P4Admin. Klickt im 1. Fenster auf OK und bestätigt die Warnung im nächsten Fenster mit "Ja". Im Administrationsfenster kontrolliert ihr ob der Standort eures Logfiles und Journals mit dem eurer Angaben während der Server Installation übereinstimmt. Klickt dann auf den TAB "Depots". Dort dürfte sich nur das während der Installation eingerichtete Default Depot befinden. Legt nun ein neues Depot an File=>New=>Depot und gebt im dem Namen TESVData. Der Name des Depots ist im CK Hardcoded und KANN NICHT ohne Eingriffe in die *.exe abgeändert werden! Ändert den Pfad in der Zeile "Storage location for versioned Files" auf den eures zuvor erstellten Ordners ab (p4tesdepot). Der Laufwerks Buchstabe muss dabei klein geschrieben und der eigentliche Pfad zum Ordner mit Slashes "/" angegeben werden. Abgeschlossen wird die Angabe mit einem "/" (Slash) und ... (3 Punkten).

Papyrus Workspace anlegen und die Dateien in den Server übertragen

Legt nun einen neuen leeren (Unter)Ordner auf einer Festplatte / Partition eurer Wahl an und benennt ihn "Papyrus".
Ruft als nächstes den P4V Clienten auf. Überspringt den Setup Wizzard mittels "Skip" und kontrolliert im nächsten Dialog die Verbindungs-Einstellungen. Belasst die Zeile WORKSPACE wie sie ist und bestätigt mit OK.
Im P4V Fenster selektiert ihr den Tab WORKSPACE und im Drop Down Menü darunter wählt ihr =>New Workspace. Nennt diesen ebenfalls "Papyrus" und gebt als Standard Speicherort (Workspace root) den gerade erstellten Ordner an. Markiert im Abschnitt "Workspace Mappings" unter "Depot Tree" das Depot Depot und klickt in der Symbol Reihe rechts auf dass mit den 3 Balken und dem roten X davor.
Stellt beim Depot TESVData sicher das unter "Client Expression" als Angabe nur //Papyrus/.. steht. Wenn dies nicht der Fall sein sollte, klickt ihr in der Symbolreihe darüber auf das letzte ganz rechts und korrigiert die Angabe von Hand. Bestätigt nun mit OK.
Navigiert im Windows Explorer nun zum Workspace Ordner und legt dort den Unterordner current an. In diesem dann einen weiteren mit dem Namen Source und darin einen letzten der scripts heissen MUSS. Erstellt im "scripts" Ordner mit Notepad eine Textdatei mit irgendeinem Inhalt. Wechselt jetzt zum P4V Fenster und selektiert den Papyrus Workspace. Drückt F5 um die Ansicht zu aktualisieren. Im WS Fenster müssten nun die gerade erstellten Ordner mitsamt der Textdatei erscheinen. Markiert die Datei und klickt in der Programm Symbol Leiste auf das Icon mit dem roten + (Mark for Add). im Log Fenster darunter sollte jetzt die Meldung "1 File marked for Add" erscheinen. Wenn stattdessen ein Gelbes Dreieck und "File is not in Client View" ausgegeben wird, dann ist beim erstellen des Workspaces etwas schief gelaufen und der Eintrag der "Client Expression" Spalte im Workspace Mappings Abschnitt muss korrigiert werden -> Connection=>Edit Current Workspace.
Klickt in der Programm Symbol Leiste nun auf das Icon mit blauen Pfeil nach rechts (Submit). Im Subfenster gebt Ihr oben einen Text für das Changelog ein, damit ihr später noch wisst warum die Testdatei sich im Repository befindet ;) und bestätigt mit OK. Gratuliere, ihr habt eure erste Datei "eingecheckt".

Schließt jetzt P4V.
Kopiert im Anschluss alle Dateien mitsamt der Unterordner (Dass müssten ~ 13 tausend Einzel Dateien und 5 Ordner sein) von Skyrim\Data\Scripts\Source in den Unterordner scripts des Papyrus-Workspaces.
Startet anschließend P4V erneut und wechselt zum Papyrus Workspace, falls das Programm dass nicht von alleine macht. Im Client View Fenster müssten nun alle gerade eben kopierten Dateien und Ordner aufgelistet werden. Markiert den Ordner [color=#ff66oo]"scripts"[/color] und macht einen Rechts klick darauf =>Mark for Add. Wartet bis P4V alle Dateien erfasst hat und führt dann einen Submit (Das Datei Symbol mit dem blauen Pfeil) durch. Vergesst dabei nicht einen sinnvollen Changelog Text einzugeben. Wenn sich alle Dateien im Depot befinden, schließt ihr das P4V Fenster.

Perforce im CK aktivieren

Öffnet die SkyrimEditor.ini und sucht die Zeilen


sScriptSourceFolder = "Data\Scripts\Source"
sScriptCompiledFolder = "Data\Scripts\"
sCompilerFolder = "Papyrus Compiler\"
bPerforceEnabled = 0

Ändert den Eintrag

bPerforceEnabled = 0

auf "1" um und schließt die Datei.

Startet das CK und bestätigt den Warnhinweis, dass der Perforce User/Workspace nicht gefunden werden konnte mit OK. Öffnet das Konfiguration's Fenster des CK und selektiert den "Perforce Tab". Stellt sicher dass in der Zeile "User" euer Benutzername steht und bei Workspace "Papyrus". Klickt auf Apply und schliesst das Fnester und das CK. Bei einem anschließenden Neustart des CK sollte kein weiterer Warnhinweis bezüglich Papyrus erscheinen. Sollte stattdessen ein Warnung mit dem Inhalt: Perforce workspace does not contain a script folder, Papyrus scripts will not be checked in or out" eingeblendet werden, dann stimmt entweder etwas mit dem Lese/Schreib rechten des CKs in bezug auf euren Papyrus Workspace nicht und/oder die Ordner current\Source\scripts sind falsch benannt bzw. sind nicht unmittelbar unter dem Perforce Workspace Root Ordner einsortiert (Papyrus\current\Source\scripts).

Wenn alles funktioniert solltet Ihr zuerst einmal ein Testprojekt angehen und euch mit der VC / Perforce Versionierungssoftware vertraut machen, bevor das erste richtige Projekt gestartet werden kann.

Ich hoffe dieser langatmige und etwas kompliziert anmutende Text erklärt wenigstens ein bisschen wie diese etwas haklige Materie zu handhaben ist.

Fragen / Verbesserungsvorschläge / Zusätzliche Infos/ Korrekturen für das Tut?

Nur her damit.

NNW
 
Zuletzt bearbeitet von einem Moderator:
Das ist ein gutes Tutorial. :)

Was man noch erwähnen könnte ist, dass die ESM nicht mehr als 2 Masterdateien haben darf/kann, da Version Control alle Präfixe die größer sind als 02 auf 02 abändert.