UTzone.de

UTzone.de (https://www.utzone.de/forum/index.php)
-   UT2004 (https://www.utzone.de/forum/forumdisplay.php?f=8)
-   -   Best Practices für Mod-Entwicklung mit CVS (https://www.utzone.de/forum/showthread.php?t=4335)

Crusha K. Rool 23.03.2019 23:03

Best Practices für Mod-Entwicklung mit CVS
 
Gibt es irgendwelche Best Practices, um die Entwicklung mehrerer Mods in unterschiedlichen CVS-Repositories zu ermöglichen?

Zum einen gibt es ja die Standardordnerstruktur im Root-Verzeichnis der UT-Installation:
  • Animations
  • Maps
  • Music
  • Sounds
  • System

Jeder dieser Ordner kann potenziell einzelne Dateien enthalten, die zu einer Mod gehören. Das heißt ein Checkout einer Mod aus einem CVS müsste eigentlich ins Wurzelverzeichnis erfolgen. Dann hat man allerdings unzählige unversionierte Dateien, dazwischen die eben nichts mit der aktuellen Mod zu tun haben. Eine Ignore-Liste kann man dafür aber wahrscheinlich eher nicht pflegen.

Des Weiteren hat man als Coder noch die ganzen Packages mit dem Quellcode, die man zum Kompilieren braucht. Zum einen den Code für die ganzen offiziellen Packages, zum anderen noch den Code der eigenen Scripte. (Hier sollte es immerhin keine Probleme beim Einteilen einer Ignore-Liste geben)

Allerdings hat man prinzipiell auch das Problem, dass man beim Auschecken im Root-Ordner wahrscheinlich nicht mehr als eine Mod gleichzeitig ausgecheckt haben kann, oder irre ich mich da? Ich habe zwar gelesen, dass es prinzipiell auch einen Mod-Switch gibt, dieser scheint aber eher nur für Total Conversions gemacht zu sein und nicht für x-beliebige Mods mit Klassen, die in Maps des Basisspiels zum Einsatz kommen sollen. Die Variante, alle Assets dann in diesen Unterordner der Mod zu packen, fällt also vermutlich flach?

Ragnos 24.03.2019 09:36

Theoretisch sollte es möglich sein, jeden einzelnen Mod in einen eigenen Unterordner zu verfrachten und dort wiederum die bekannte Standard-Ordnerstruktur zu pflegen. In der UT2004.ini müssen dann entsprechend die Paths eingetragen werden, zb.:

Code:

[Core.System]
Paths=../System/*.u
Paths=../Maps/*.ut2
Paths=../Textures/*.utx
Paths=../Sounds/*.uax
Paths=../Music/*.umx
Paths=../StaticMeshes/*.usx
Paths=../Animations/*.ukx
Paths=../Saves/*.uvx
Paths=../System/*.u
Paths=../MyMod1/Maps/*.ut2
Paths=../MyMod1/Textures/*.utx
Paths=../MyMod1/Sounds/*.uax
Paths=../MyMod1/Music/*.umx
Paths=../MyMod1/StaticMeshes/*.usx
Paths=../MyMod1/Animations/*.ukx

Vollkommen ungetestet ist meine Theorie, dass auch im Pfad Wildcards funktionieren müssten. Dann würde

Code:

Paths=../*/Maps/*.ut2
Paths=../*/Textures/*.utx
Paths=../*/Sounds/*.uax
Paths=../*/Music/*.umx
Paths=../*/StaticMeshes/*.usx
Paths=../*/Animations/*.ukx

reichen damit die ini nicht bei jeder neuen Mod angepasst werden muss.
Dann sollte es auch mit dem Versionskontrollsystem deiner Wahl kein Problem mehr sein dass zu managen. Aber wie gesagt, ungetestet.

Was den Mod-Switch angeht, theoretisch sollte der wohl auch mit "kleinen" Mods funktionieren, nur hast du dann einen riesigen Wasserkopf weil lauter ini's etc. dafür angelegt werden müssen.

Ich glaube am besten wäre es noch, den gesamten UT2004 Ordner für jede Entwicklungsumgebung zu kopieren und einmalig eine Ignore-Liste dafür anzulegen. Ohnehin denke ich, es macht mehr Sinn mit einer "Vanilla" Installation zu arbeiten damit dir nicht aus versehen andere Mods reinpfuschen.

Eine echte "Best Practice" kenne ich zu dem ganzen Thema jedoch nicht. Ich weiß das Epic Submission/CVS und später (ab UE3) Perforce eingesetzt hat, jedoch mussten diese ohnehin auch den Standard-Content mit versionieren.

Crusha K. Rool 24.03.2019 10:03

Als sonstige Alternative käme mir sonst noch in den Sinn, die zu einer Mod gehörigen Dateien jeweils in einem separaten Ordner ausßerhalb der UT2004-Installation zu pflegen und dort die Checkouts/Commits vorzunehmen.
Innerhalb des Ordners gibt es dann ein Batch-Skript, das die zu einer Mod gehörenden Dateien (beispielsweise aufgelistet in einer CSV-Datei) in den UT2004-Ordner kopieren und ein weiteres Batch-Skript, das sie wieder zurück kopiert. Solange nur eine Person an der gleichen Mod arbeitet, sollte das machbar sein ohne dass man Gefahr läuft, sich verschiedene Assets in der falschen Reihenfolge zu pushen und zu pullen und somit zu überschreiben.

GreatEmerald scheint es bei einer seiner Mods zumindest so ähnlich gemacht zu haben: https://github.com/GreatEmerald/UT3Vehicles
Das Repo ist quasi nur im Ordner für das Quellcode-Package, dort liegt aber auch ein Batch-Skript, welches die restlichen Assets von externen Hostern fetcht. Dabei wären die Assets dann allerdings nicht versioniert.

Ragnos 24.03.2019 11:26

Bei Git könntest du mit Branches arbeiten. UT2004 Stanardihnalte auf die Ignore und dann einfach den Branch wechseln. Das sollte dann sogar ganz gut Multiuser-fähig sein und UT merkt davon auch nichts.

Allerdings will ich keine Aussage zur Performance mit großen Binärdaten machen, wobei sich das nach heutigen Maßstäben bei UT2004 alles noch im Rahmen befinden sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:15 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2020, vBulletin Solutions, Inc.
CopyRight-Licence © 2000 - 2018 by UTzone.de