TUTORIAL 2 - UP 'N RUNNING
von SumFuka
(oder: wie verdammt noch mal kriege ich den Compiler zum Laufen?)
Ok, es ist an der Zeit die Hände schmutzig zu machen. Falls
du noch nicht über die folgenden Dinge verfügst, ist es jetzt an
der Zeit, diese zu besorgen:
quake3 (cd)
q3pointrelease_132.exe
Q3A_TA_GameSource_132.exe
Dazu brauchst du noch einen Compiler. Ich empfehle auf jeden
Fall Microsoft Visual C(++) 6.0, der im Visual Studio 6 enthalten ist. Dieser
ist industrieller Standard, und der downloadbare Quellcode enthält Projektdateien
für genau dieses Programm, damit man ohne große Umwege starten
kann. Für Schüler / Studenten [und ...innen] gibt es diese Software
zu einem ermäßigten Preis, gelegentlich wurde sie auch schon
auf Heft CDs von Computerzeitschrigten gesichtet.
1. EINSTELLUNGEN FÜR MSVC
Dein System muß noch richtig für MSVC konfiguriert werden. Wenn
du noch ein System hast, dass über eine autoexec.bat verfügt (Win
< 2000), dann musst du in die autoexec.bat folgende Zeile am Schluß
einfügen:
C:\MICROSOFT VISUAL STUDIO\VC98\BIN\VCVARS32.BAT
Wenn deine VCVARS32.BAT woanders installiert ist, muß
dies natürlich dementsprechend angepasst werden. Gibt es auf deinem
System keine VCVARS32.BAT, dann installiert MSVC neu. Als nächstes
müssen
wir einen weiteren Eintrag in die path Variable setzen. Dies wird nachher
für die Erzeugung von .qvm Dateien benötigt. Füge am Ende
deiner autoexec.bat folgende Zeile ein:
SET PATH= C:\QUAKE3\SOURCE\BIN;%PATH%
Neu booten!
Achtung Windows ME User:
Microsoft hat sich das Ziel gesetzt, Windows
ME "Dos-frei" zu erstellen,
daher führt das Neueinfügen des SET PATH=... Befehls dazu,
das die Zeile nach dem Neustart wieder verschwunden ist. Es ist also
wichtig,
den Pfad in die bereits existierende Zeile für die
Pfadzuweisung in der
autoexec.bat hinzuzufügen!
Die zum Compilen mitgelieferten Batch-Dateien
mögen unter ME auch
nicht laufen. Hier sind leicht modifizierte, die dieses Problem beheben
sollten.
Vielen Dank an no_skill für
diese Informationen! |
2. INSTALLATION
Stelle sicher, dass Quake3 mit dem neusten Point Release (1.32) perfekt läuft.
Ja, es muß unbedint auf die Version 1.32 geupdated werden, mit niedrigeren
oder mit gecrackten Versionen wird's nicht funktionieren.
Quake3 muß in c:\quake3 installiert sein, da es sonst
zu Problemen mit dem Q3AGameSource kommt. Notfalls könnte man das Problem
durch viel Anpassungsarbeiten in den darin enthaltenen .bat Dateien korrigieren,
ich empfehle aber lieber das Quake III Arena Verzechnis umzubennen.
Als nächstes installiere den Q3A_TA_GameSource_132 (durch ausführen
von Q3A_TA_GameSource_132, wer hätts gedacht :o)). Nun sollte es ein
\quake3\source Verzeichnis geben.
3. ÖFFNEN DER PROJEKTDATEIEN
Wenn du MSVC korrekt installiert habt, dann kann es gleich losgehen - mache
einen Doppelklick auf quake3\source\code\quake3sdk.dsw.
Nun solltest du das Projet im Visual Studio geöffnet
sehen. Falls du neu im Umgang mit MSVC bist: Oben links siehst du nun eine
Liste
mit Dateibäumen (quasi ein Wald *g*), die man ausklappen kann, nachdem
man unten auf "Dateien" geklickt hat. Darin findet man vier Projekte.
"game" ist für dich das wohl am Interesantesste - darin wird
definiert, wie der Server ein Spiel ablaufen lassen soll. "cgame"
beinhaltet den Quellcode für die Client Seite, wogegen "ui"
den Inhalt fürs User-Interface (Menü, HUD, Console, ...) enthält.
"q3_ui" ist eine andere Version des User-Interfaces, die aus dem
Unterschied zwischen der normalen Q3A Menüführung und der Q3 Team
Arena Menüführung enstanden ist.

Du wirst die meisten Änderungen im Bereich "Source
Files" und "Header Files" im "game" Projekt vornehmen.
Doppelklicke auf eine Quellcodedatei im Baum, und sie wird automatisch rechts
im Editor Fenster angezeigt. Spiele ein wenig herum, öffne einigen Dateien
und lese ein paar Zeilen davon (du brauchst sie aber keinesfalls jetzt schon
verstehen!).
Nun machen wir einen kleinen Ausflug in eine interessante Datei,
g_weapon.c:
/*
======================================================================
ROCKET
======================================================================
*/
Ja, das ist das Programmstück, dass bei jedem Klick auf
die linke Maustaste eine Rakete abfeuert. Das Wichtigste leitet diese Funktion
aber nur an eine andere Funktion weiter, genannt fire_rocket. Danach passt
sie den Schaden für den Fall des Einsatzes von Quad Damage an. Suche
selbst nach der fire_rocket Funktion um mehr Details zu erfahren... (Versteckter
Hinweis: du kannst z.B. von deinem source Ordner aus im Explorer
mit F3 nach enthaltenem Text suchen oder in MSVC "Bearbeiten" -> "Suchen
in
Dateien" benutzen). Funktionsdefinitionen haben
am Anfang immer
einen Rückgabetyp wie z.B. "gentity_t*", "int" oder "void" [void
= explizite Angabe, das nichts zurückgegeben wird] stehen...
findest du sie?)
4. VERZEICHNIS ZUM .DLL ERSTELLEN SETZEN
Wir wollen, dass unsere .dll Datei im quake3\source Verzeichnis erscheint.
Standardmäßig wird die qagamex86.dll in quake3\source\code\Debug_TA\qagamex86.dll
erstellt (was wir ändern werden).
Geh nun im MSVC ins Menü "Projekt" - Einstellungen.
Dort ändere zuerst oben "Einstellungen für" von "Win32
Debug TA" auf "Win32 Debug". Nun wähle von den vier
Projekten nur "game" an. Klicke nun in die Ordnerlasche Linker.
Dort änderst
du bei "Name der Ausgabedatei" den Eintrag "../Debug/qagame86x.dll"
in "../../qagame86x.dll". Damit landet unsere .dll Datei wie gewünscht
zwei Verzeichnisse tiefer, also im quake3\source.
(Solltet ihr die Fehlermeldung bekommen, dass die Datei game.dsp
schreibgeschützt ist, und daher nicht verändert werden kann, so
müsst ihr bei dieser und auch den restlichen .dsp Dateien manuell über
Windows den Schreibschutz deaktivieren.)
Nun haben wir aber erst die Projekteinstellungen geändert,
wir befinden uns selbst immer noch im Projektzustand "Win32 Debug TA".
Dies ändern wir, in dem wir auf "Erstellen - aktive Konfiguration
festlegen" gehen, und dort "game - Win32 Debug" wählen.

5. COMPILEN DES PROJEKTS
Ok. Geh ins Menü "Projekt" - "Aktives Projekt Festlegen
->2 game". Um unser "game" Projekt zu erstellen gehen
wir ins Menü "Erstellen - qagame86x.dll erstellen". Nun
bekommen wir die Meldung: "qagamex86.dll - 0 Fehler, 0 Warnung(en)".
Unsere frisch erstellte .dll Datei befindet sich nun wie geplant im \source
Verzeichnis.
6. AUSPROBIEREN DER .DLL DATEI
Ok, lass uns "quake3\quake3.exe +set fs_game source +map q3dm1 +set
vm_game 0 +set vm_ui 0 +set vm_cgame 0" starten!
Wenn alles geklappt hat sollte man nun in der Quake3 Console
(~) irgendwo eine Meldung sehen, dass die .dll Datei gefunden und geladen
wurde.Wenn die Meldung sagt, dass keine .dll Datei gefunden wurde, dann befindet
sich deine .dll Datei am flaschen Platz... wenn Quake die Datei nicht finden
kann, ist es klar, dass die Modifikation nicht ausgeführt werden kann.
Consolen-Log-Auszug:
7. ERZEUGEN VON QVM DATEIEN
Eine .qvm, oder "quake virtual machine" ist ziemlich einfach zu
erzeugen (vorausgesetzt, dass alle Umgebunsvariablen korrekt gesetzt sind,
siehe SET PATH = ...). Was ist eine .qvm? Ich stelle es mir immer
als "sicheren" Ersatz für eine .dll Datei vor. Es ist deswegen
sicherer, weil eine .qvm Datei keine verrückten sachen machen kann,
wie .dll Datei es können (z.B. das Löschen deiner Festplatte).
Das heißt
jetzt nicht, dass es 100% sicher ist (auch die Java Virtual Machine wurde
über einen Overflow des Stacks der virtuellen Maschine gehackt), aber
.qvm Dateien sind trotzdem als das sicherere Konzept anzusehen.
Lass uns nun eine eigene .qvm Datei erstellen. Öffne ein Dos-Fenster
und gehe ins quake3\source\code\game Verzeichnis. Starte die game.bat. Voila
- Im quake3\baseq3\vm befindet sich nun unsere .qvm Datei. Wer möchte
kann mit etwas Fieselei das Zielverzeichnis von \baseq3 umstellen, dies
ist
jedoch nicht unbedingt notwendig, solange wir immer dafür sorgen, dass
die Datei dann auch wieder da ist, wo sie sein sollte (nämlich in unserem
Mod-Verzeichnis\vm). Nun kann man noch cgame.bat und ui.bat aus den anderen
Verzechnissen aufrufen. Die hiermit erzeugten .qvm Dateien werden dann zum
Veröffentlichen des Mods benutzt.
Okay, jetzt ist alles eingestellt und läuft. "Reeeeeeeschpekt!".
Nun auf zu unserer ersten Modifikation...
<<
Tutorial 1 | | Tutorial
3 >>