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

======================================================================
*/

void Weapon_RocketLauncher_Fire (gentity_t *ent) {


gentity_t *m;
m = fire_rocket (ent, muzzle, forward);
m->damage *= s_quadFactor;
m->splashDamage *= s_quadFactor;

// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta );
// "real" physics

}

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:

C:\Quake3/baseq3

----------------------
8742 files in pk3 files
Loading dll file qagame.
------- Game Initialization -------
gamename: baseq3
gamedate: Dec 17 2002
0 teams with 0 entities
12 items registered
-----------------------------------

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 >>