Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
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.
"Wolfenstein: Enemy Territory" wird mit W:ET abgekürzt
"Software Development Kit" wird mit SDK abgekürzt
MODNAME = vom User zu vergebener Name der Mod
USERNAME = Name des Users
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.
Das SDK muss von einer Community-Seite heruntergeladen werden, z.B. ET » Tools » ET 2.60 SDK (Linux) @ wolfmap.de
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.
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
Die folgenden Pakete müssen installiert [1] sein.
scons
gcc
libc6-dev
Um den Cross-Compiler Mingw32 verwenden zu können, muss das entsprechende Paket, sowie die davon abhängigen Pakete, installiert werden.
mingw32
mingw32-binutils
mingw32-runtime
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
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.
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.
cgame.mp.i386.so in cgame_mp_x86.dll
qagame.mp.i386.so in qagame_mp_x86.dll
ui.mp.i386.so in ui_mp_x86.dll
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
Für die Linux-Dateien:
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
Für die Windows-Dateien:
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
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.
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
Alternativ dazu kann auch nach Start von W:ET eine Mod über "Main Menu -> Mods" geladen werden.
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.
Alternativ dazu kann auch nach Start von W:ET eine Mod über "Main Menu -> Mods" geladen werden.
Diese Revision wurde am 19. Oktober 2011 17:22 von frustschieber erstellt.