Archiv/Spiele/Wolfenstein Enemy Territory/Modding

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Rechte von Dateien und Ordner verändern

Inhaltsverzeichnis
  1. Einleitung
  2. Installation
  3. Kompilierung des Quellcodes
  4. Testen
  5. Links

Einleitung

Modding bezeichnet die Veränderung eines ursprünglichen Spiels. Es gibt Modifikationen (kurz Mods), die Sounds, Player- und Weapon-Skins, Texturen sowie das Gameplay oder die Spielmechanik verändern und eventuell neue Spielmodi einfügen. Desweitern ist noch die Erstellung neuer Maps (Mapping) möglich. Wird alles zusammen verändert, werden die Mods als Total Conversions bezeichnet.

In diesem Artikel geht es um das frei erhältliche Spiel Wolfenstein: Enemy Territory. Um bei Wolfenstein: Enemy Territory das Gameplay zu verändern, wird der Spielequellcode benötigt. Dieser ist als Software Development Kit (SDK) frei verfügbar. Die Programmiersprache ist C.

Wolfenstein: Enemy Territory ist für Windows, Mac und Linux erhältlich. Um die grösstmögliche Verbreitung der Mod zu erreichen, sollte also eine Quellcode Mod möglichst für alle drei Betriebssysteme erstellt werden. Die Erstellung der Windowsversion ist auch unter Linux möglich (Cross-Kompilierung), während für die Erstellung der Macversion zwingend ein Mac erforderlich zu sein scheint.

In diesem Artikel soll die Installation des Software Development Kit sowie noch benötigter Pakete, die Kompilierung der Linux-Dateien, die Cross-Kompilierung der Windows-Dateien und das anschliessende Testen erläutert werden. Die Quellcode-Dateien werden dabei aber nicht verändert.

Konventionen

Voraussetzung

Eine W:ET-Installation ist für die Kompilierung und die Cross-Kompilierung nicht zwingend notwendig. Zum Testen der Mod sollte W:ET allerdings bereits funktionstüchtig installiert sein, siehe Wolfenstein: Enemy Territory.

Informationen

Installation

SDK Installation

Das SDK muss von einer Community-Seite heruntergeladen werden, z.B. ET » Tools » ET 2.60 SDK (Linux) 🇩🇪 @ wolfmap.de

Hinweis:

Alternativ kann das Windows SDK nach Umbenennung der exe in zip auch entpackt werden (nicht getestet).

Annahme für die folgenden Befehle: et-linux-2_60-sdk_x86.run befindet sich im Homeverzeichnis (persönlicher Ordner). Gegebenenfalls muss man die Ausführechte der Datei noch setzen [3].

Die Installation wird über folgende Eingabe in die Konsole [2] gestartet:

sudo sh et-linux-2_60-sdk_x86.run 

Die Installation erfolgt im /usr/local/games/enemy-territory-sdk-Verzeichnis.

Hinweis:

Im /usr/local/games/enemy-territory-sdk-Verzeichnis befindet sich nach der Installation u.a. eine readme.txt. Leider ist eine Angabe in dieser Datei die Linux-Kompilierung betreffend falsch (Punkt 1). Das richtige Verzeichnis zum Ausführen von scons ist /usr/local/games/enemy-territory-sdk/src (siehe unten).

Zum einfacheren Arbeiten wird das gesamte /usr/local/games/enemy-territory-sdk-Verzeichnis in den persönlichen Ordner (oder ein Unterverzeichnis) kopiert. Vorschlag: /home/USERNAME/et/modding/enemy-territory-sdk

Installation fehlender Pakete für die Kompilierung der Linux Dateien

Die folgenden Pakete müssen installiert [1] sein.

Installation fehlender Pakete für die Cross-Kompilierung der Windows Dateien

Um den Cross-Compiler Mingw32 verwenden zu können, muss das entsprechende Paket, sowie die davon abhängigen Pakete, installiert werden.

Kompilierung des Quellcodes

Durch folgende Eingabe in die Konsole [2] wird in das zum Starten der Kompilierung notwendige Verzeichnis gewechselt:

cd /home/USERNAME/et/modding/enemy-territory-sdk/src 

Anschliessend wird mit folgender Eingabe in die Konsole das Verzeichnis gesäubert, wobei bei der ersten Kompilierung die Säuberung entfallen kann:

scons -c 

Die Kompilierung der Linux Dateien wird mit folgender Eingabe in die Konsole gestartet:

scons CC=gcc CXX=g++ BUILD=release 

Hinweis:

Nach der erfolgten Kompilierung sollten die Dateien in ein anderes Verzeichnis kopiert werden, um ein Überschreiben durch die Cross-Kompilierung zu vermeiden. Vorschlag: /home/USERNAME/et/modding/enemy-territory-sdk. Alternativ kann auch zuerst die Cross-Kompilierung durchgeführt werden.

Die Cross-Kompilierung der Windows Dateien wird mit folgender Eingabe in die Konsole gestartet:

scons CC=i586-mingw32msvc-gcc CXX=i586-mingw32msvc-g++ BUILD=release 

Leider werden bei beiden Kompilierungen einige Warnungen angezeigt, die aber nicht weiter tragisch zu sein scheinen.

Hinweis:

Nach der Cross-Kompilierung setzt Mingw32 Parameter so in der /home/USERNAME/et/modding/enemy-territory-sdk/src/site.conf-Datei, das auch bei einfachem Aufruf von Scons Windows .dll-Dateien kompiliert werden. Deshalb werden entsprechenden Parameter bei der Kompilierung mitgegeben.

Die erfolgreiche Kompilierung wird wie folgt in der Konsole angezeigt:

...
Install file: "build/release/cgame/libcgame.so" as "cgame.mp.i386.so"
Install file: "build/release/game/libqagame.so" as "qagame.mp.i386.so"
Install file: "build/release/ui/libui.so" as "ui.mp.i386.so"
scons: done building targets. 

Die kompilierten Dateien befinden sich in /home/USERNAME/et/modding/enemy-territory-sdk/src.

Die erzeugten .so-Dateien der Cross-Kompilierung der Windows Dateien müssen umbenannt werden.

Mit folgender Eingabe werden die Dateien dann optimiert:

strip -s *.so    ## für die Linux-Dateien
strip -s *.dll   ## für die Windows-Dateien 

und es kann danach mit file das Dateiformat der Dateien überprüft werden:

file *.so        ## für die Linux-Dateien
file *.dll       ## für die Windows-Dateien 

Die Ausgabe sollte wie folgt aussehen

cgame.mp.i386.so:  ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
qagame.mp.i386.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
ui.mp.i386.so:     ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped 

cgame_mp_x86.dll:  PE executable for MS Windows (DLL) (console) Intel 80386 32-bit
qagame_mp_x86.dll: PE executable for MS Windows (DLL) (console) Intel 80386 32-bit
ui_mp_x86.dll:     PE executable for MS Windows (DLL) (console) Intel 80386 32-bit 

Testen

Erstellen der mp_bin.pk3-Datei

Mit Hilfe eines Packprogramms wird im /home/USERNAME/et/modding/enemy-territory-sdk-Verzeichnis das mp_bin.zip-Archiv erstellt. cgame.mp.i386.so und cgame_mp_x86.dll sowie ui.mp.i386.so und ui_mp_x86.dll werden in dieses Archiv gepackt. Anschliessend wird das Archiv in mp_bin.pk3 umbenannt.

Testen der Linux-Dateien

Im versteckten /home/USERNAME/.etwolf-Verzeichnis wird das MODNAME-Verzeichnis erstellt. Die mp_bin.pk3-Datei sowie die drei erstellten .so-Dateien, werden in dieses Verzeichnis kopiert.

Mit folgender Eingabe wird ein lokaler Mod-Server gestartet:

et +set fs_game MODNAME 

Hinweis:

Alternativ dazu kann auch nach Start von W:ET eine Mod über "Main Menu → Mods" geladen werden.

Testen der Windows-Dateien

Unter Windows

Hinweis:

Die erstellten .dll-Dateien wurden, aus Ermangelung eines Windows-System, nicht getestet.

  • Im X:\PFAD\ZU\W:ET\ ein neues Unterverzeichnis MODNAME erstellen (auf gleicher Höhe wie / parallel zu etmain).

  • Die mp_bin.pk3-Datei sowie die drei .dll-Dateien werden in dieses Verzeichnis kopiert.

  • Eine bereits vorhandene W:ET-Verknüpfung kopieren.

  • Durch Rechtsklick das Kontextmenü öffnen und über Eigenschaften den Pfad wie folgt abändern:

"X:\PFAD ZU W:ET\et.exe" +set fs_game MODNAME 
  • Anschliessend lässt sich ein lokaler Mod-Server über die Verknüpfung starten.

Hinweis:

Alternativ dazu kann auch nach Start von W:ET eine Mod über "Main Menu → Mods" geladen werden.