[[Vorlage(Archiviert)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Rechte: Rechte von Dateien und Ordner verändern] }}} [[Inhaltsverzeichnis(1)]] = 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 [:Archiv/Spiele/Wolfenstein_Enemy_Territory: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 == * "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 == 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 [:Archiv/Spiele/Wolfenstein_Enemy_Territory:Wolfenstein: Enemy Territory]. == Informationen == * Die Anzeige von versteckten Dateien ist im Artikel [3] erklärt. * '''pk3'''-Dateien sind einfach nur umbenannte '''zip'''-Dateien. = Installation = == SDK Installation == Das SDK muss von einer Community-Seite heruntergeladen werden, z.B. [http://wolfmap.gameprophets.com/details.php?file_id=31 ET » Tools » ET 2.60 SDK (Linux)] {de} @ wolfmap.de {{{#!vorlage 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: {{{#!vorlage Befehl sudo sh et-linux-2_60-sdk_x86.run }}} Die Installation erfolgt im '''/usr/local/games/enemy-territory-sdk'''-Verzeichnis. {{{#!vorlage 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. * '''scons''' * '''gcc''' * '''libc6-dev''' == 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. * '''mingw32''' * '''mingw32-binutils''' * '''mingw32-runtime''' = Kompilierung des Quellcodes = Durch folgende Eingabe in die Konsole [2] wird in das zum Starten der Kompilierung notwendige Verzeichnis gewechselt: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl scons -c }}} Die Kompilierung der Linux Dateien wird mit folgender Eingabe in die Konsole gestartet: {{{#!vorlage Befehl scons CC=gcc CXX=g++ BUILD=release }}} {{{#!vorlage 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: {{{#!vorlage Befehl 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. {{{#!vorlage 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: {{{#!vorlage Befehl ... 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 [:Packprogramme: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: {{{#!vorlage Befehl et +set fs_game MODNAME }}} {{{#!vorlage Hinweis Alternativ dazu kann auch nach Start von W:ET eine Mod über ''"Main Menu -> Mods"'' geladen werden. }}} == Testen der Windows-Dateien == === Unter Windows === {{{#!vorlage 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: {{{#!vorlage Befehl "X:\PFAD ZU W:ET\et.exe" +set fs_game MODNAME }}} * Anschliessend lässt sich ein lokaler Mod-Server über die Verknüpfung starten. {{{#!vorlage Hinweis Alternativ dazu kann auch nach Start von W:ET eine Mod über ''"Main Menu -> Mods"'' geladen werden. }}} = Links = * [http://www.splashdamage.com/ Entwicklerhomepage] {en} * [http://www.splashdamage.com/community/ Foren] {en} * [http://wiki.splashdamage.com/index.php/Main_Page Wiki] {en} * [http://www.splashdamage.com/index.php?name=pnPHPbb2&file=viewtopic&t=6510 Compiling a mod under GNU/Linux] {en} * [http://www.splashdamage.com/index.php?name=pnPHPbb2&file=viewtopic&t=15281 Compiling for Windows under Linux - cross-scons.sh] {en} * [http://www.splashdamage.com/index.php?name=pnPHPbb2&file=viewtopic&t=7522 ET-Mod-Project-List] {en} * [twitter:splashdamage:Splash Damage] * [fb:splashdamage:Splash Damage] * [holarse:h2006/space/Wolfenstein+Enemy+Territory:Wolfenstein Enemy Territory] * [http://et.tjw.org/ets/stats/current/mb/mods.html W:ET Master Browser | most popular mods] {en} # tag: Spiele