Microsoft PowerPoint _ HalfLife_20030618_ppt

Transcrição

Microsoft PowerPoint _ HalfLife_20030618_ppt
UNI VE R SI T Y
OF
P ADE R BO R N
Projektgruppe KIMAS
Half-Life
18.06.2003
Lars Tegeler
Projektgruppe KIMAS – Half-Life
Überblick
1/26
UNI VE R SI T Y
OF
P ADE R BO R N
Half-Life
Die Half-Life Welt
Programmstruktur
Modifikationen
Bot´s
Projektgruppe KIMAS – Half-Life
2/26
1
Half-Life
UNI VE R SI T Y
OF
P ADE R BO R N
1997 von Valve Software entwickelt
von Sierra On-Line vertrieben
Modifikation der Quake Engine
basiert auf Quake 1
mit Teile von Quake 2
und eigenen Erweiterungen
„Einige“ der Verantwortlichen z.B. Gabe
Newell kamen von Microsoft ;-)
Projektgruppe KIMAS – Half-Life
Half-Life
3/26
UNI VE R SI T Y
OF
P ADE R BO R N
Skeletal Animation System
Rendering (16-bit color, colored lighting)
Monster AI
Decal System
Real-Time DSP
DLL´s
Direct X
Single/Multiplayer-Sourcen frei verfügbar
Binaries der Engine nur unter Microsoft Windows
Projektgruppe KIMAS – Half-Life
4/26
2
Überblick
UNI VE R SI T Y
OF
P ADE R BO R N
Half-Life
Die Half-Life Welt
Programmstruktur
Modifikationen
Bot´s
Projektgruppe KIMAS – Half-Life
Half-Life Welt
5/26
UNI VE R SI T Y
OF
P ADE R BO R N
Die Half-Life Welt besteht aus zwei Arten
von Objekten:
1. Solids
(Wände, Decken, ..., ohne Funktion)
2. Entities
• Point-based ( statisch, aber auch Monster )
• Brush-based ( dynamisch )
Projektgruppe KIMAS – Half-Life
6/26
3
Half-Life Welt
UNI VE R SI T Y
OF
P ADE R BO R N
Gleicher Aufbau wie in Quake:
Vektoren (für Richtungen, etc.)
Maps
(Positionierung der Solids und Entities, werden im
Editor erzeugt und nach .bsp kompiliert)
Binary Space Partitioning
(schnelle Datenstruktur für Echtzeitrendersysteme)
Kolisionserkennung
(über Bounding-Boxes, an Achsen ausgerichtet,
werden nicht gedreht)
Projektgruppe KIMAS – Half-Life
Half-Life Welt
7/26
UNI VE R SI T Y
OF
P ADE R BO R N
Skeletal Animation System
Knochen werden bewegt
Polygon-Netze um die
Knochen werden durch die
Bewegung verformt
Berechung der Modelle zur
Laufzeit
Größere Flexibilität
wesentlich höhere Anzahl
von Polygonen (6000+)
Projektgruppe KIMAS – Half-Life
8/26
4
Überblick
UNI VE R SI T Y
OF
P ADE R BO R N
Half-Life
Die Half-Life Welt
Programmstruktur
Modifikationen
Bot´s
Projektgruppe KIMAS – Half-Life
Programmstruktur
9/26
UNI VE R SI T Y
OF
P ADE R BO R N
Code in C++
Server - hl.dll (bzw. mp.dll)
Steuern der Entities (Monster, Waffen, ...)
Client - cl_dll.dll
Enthält das gesamte UserInterface
DLL (Dynamic Link Library)
Ermöglicht einem Prozess eine Funktion zu
benutzen die nicht zu seinem Ausführbaren Code
gehört
Projektgruppe KIMAS – Half-Life
10/26
5
UNI VE R SI T Y
OF
P ADE R BO R N
Programmstruktur
Interaktionschema:
S e r ve r
(h l. d ll /m p . d ll)
C lie n t -UI
(c l_ d ll. d ll)
G iv e F n p t r s To Dll()
G e t E n t it y AP I()
G a m e DLLIn it ()
E n g in e
(Ha lf-Life G a m e E x e c u t a b le )
Projektgruppe KIMAS – Half-Life
Programmstruktur
11/26
UNI VE R SI T Y
OF
P ADE R BO R N
Klassendiagramme
Server:
http://www-math.upb.de/~tegeler/kimas/server_class_diagram.png
Client:
http://www-math.upb.de/~tegeler/kimas/client_class_diagram.png
Vererbung
Alle Objekte stammen von CBaseEntity ab
(zu finden in cbase.cpp)
Projektgruppe KIMAS – Half-Life
12/26
6
Überblick
UNI VE R SI T Y
OF
P ADE R BO R N
Half-Life
Die Half-Life Welt
Programmstruktur
Modifikationen
Bot´s
Projektgruppe KIMAS – Half-Life
Modifikationen
13/26
UNI VE R SI T Y
OF
P ADE R BO R N
Modifikationen (Mod´s) sind Änderungen am
Spielablauf, z.B. an:
Waffen, Monstern, GUI, Regeln, ...
Der wohl bekannteste
Half-Life Mod´s:
Counter-Strike
Projektgruppe KIMAS – Half-Life
14/26
7
Modifikationen
UNI VE R SI T Y
OF
P ADE R BO R N
Was benötigt man um aktuelle Half-Life
Mod´s zu erstellen?
C++ Compiler (der DLL´s erstellen kann die mit
den von Microsoft Visual C++ kompatibel sind,
z.B. MingW32, MSVC++ 6.0, ...)
SDK 2.3 (Standart oder Full)
Half-Life 1.1.1.0
Projektgruppe KIMAS – Half-Life
Modifikationen
15/26
UNI VE R SI T Y
OF
P ADE R BO R N
Geschwindigkeit der
RPG:
R p g . c p p (in F o llo wTh in k):
...
p e v->ve lo c ity=p e v->ve lo c ity*1 0 ;
...
DropXP:
P la ye r. c p p (in Dro p P la ye rIte m ):
...
CW e a p o n Bo x *p W e a p o n Bo x =
(CW e a p o n Bo x *)C Ba s e E n tity::C re a te ( . .. , Ko o rd in a te n , . ..);
...
Projektgruppe KIMAS – Half-Life
16/26
8
Überblick
UNI VE R SI T Y
OF
P ADE R BO R N
Half-Life
Die Half-Life Welt
Programmstruktur
Modifikationen
Bot´s
Projektgruppe KIMAS – Half-Life
Bot´s
17/26
UNI VE R SI T Y
OF
P ADE R BO R N
Half-Life bietet keine Schnittstelle für Bot´s
Deshalb Implementierung durch:
Einbettung des Bot´s in ein Mod
DLL´s ausnutzen, und eine Bot.dll
zwischen die Engine und dem Server
(hl.dll) zu mogeln
Projektgruppe KIMAS – Half-Life
18/26
9
UNI VE R SI T Y
OF
P ADE R BO R N
Bot´s
Interaktionschema:
S eBrovte r
(h l.(dblol /tm
. d pll.)d ll)
C lie n t -UI
(c l_ d ll. d ll)
G iv e F n p t r s To Dll()
G e t E n t it y AP I()
G a m e DLLIn it ()
E n g in e
(Ha lf-Life G a m e E x e c u t a b le )
Projektgruppe KIMAS – Half-Life
Bot´s
19/26
UNI VE R SI T Y
OF
P ADE R BO R N
Der Bot wird mit FakeClient als virtueller
Spieler erzeugt, zählt also als Spieler:
Bot erzeugen
Bo tE n t=g _ e n g fu n c s .p fn C re a te F a ke C lie n t(“Bo t“);
...
C lie n tC o n n e c t( Bo tE n t, “Bo tNa m e “, “1 2 7 .0 .0 .1 “, p tr);
C lie n tP u tIn S e rve r( Bo tE n t);
Bot steuern
...
p fn R u n P la ye rMo ve ( Bo tE n t , Blic kR ic h tu n g , Vo rG , R e c h ts G ,
Ho c h G , Ta s te , Im p u ls , Da u e r);
...
Projektgruppe KIMAS – Half-Life
20/26
10
UNI VE R SI T Y
OF
P ADE R BO R N
Bot´s
Sicht des Bot´s am Beispiel-Code
fo r (i =1 ; i <=g p G lo b a ls ->m a xC lie n ts ; i++)
{
e d ic t_ t *p P la ye r = INDE XE NT(i);
ve c 2 LO S = ( p P la ye r->v.o rig in – p E d ic t->v.o rig in ).Ma ke 2 D();
...
flDo t = Do tp ro d u c t ( ve c 2 LO S , g p G lo b a ls ->v. fo rwa rd .Ma ke 2 D() );
if ( flDo t > 0 .5 0 ) {
//im S ic h tfe ld
UTIL_ Tra c e Lin e { . . . }
}
e ls e
{ ...}
//Lin e z u m Zie l
//a u s s e rh a lb d e s S ic h tfe ld s
}
Projektgruppe KIMAS – Half-Life
Bot´s
21/26
UNI VE R SI T Y
OF
P ADE R BO R N
aus den Engine-Headerdatein
(common\com_model.h):
# d e fin e MAX_ C LIE NTS 3 2
# d e fin e MAX_ E DIC TS 9 0 0
es können also nur 32 Bots erzeugt
werden! (bei Quake gab es keine genaue
aussage)
und 900 Entities insgesamt (ca. genau
soviele wie in Quake)
Projektgruppe KIMAS – Half-Life
22/26
11
Bot´s
UNI VE R SI T Y
OF
P ADE R BO R N
Und wenn „32“ Agenten nicht genug sind?
Bot als eignende Entity programmieren
Keine weitern Einschränkungen
größer Programmieraufwand
Bot als Monster programmieren
evtl. Einschränkung durch das erben von
CMonster
ca. genau so viel wie bei üblichen Bot
implementationen
Projektgruppe KIMAS – Half-Life
Bot´s
23/26
UNI VE R SI T Y
OF
P ADE R BO R N
Unserer KimasBot:
Projektgruppe KIMAS – Half-Life
24/26
12
UNI VE R SI T Y
OF
P ADE R BO R N
Gegenüberstellung
Funktion
Quake
Half-Life
Bot´s (max)
???
32
Entities (max)
1024
900
OpenGL
*
*
Direct X
*
Skeletal Animation System
*
Rendering
8-bit
16-bit
Colored lighting
*
Decal System
*
Real-Time DSP
*
Maps als BSP
*
*
Datenstruktur (Bewegung, Richtung,
...)
Vektor
Vektor
Ausführbare Dateien
QuakeVM
DLL
Kollisionserkennung
Bounding-Boxes
Bounding-Boxes
Projektgruppe KIMAS – Half-Life
Weitere Informationen
25/26
UNI VE R SI T Y
OF
P ADE R BO R N
Half-Life FAQ von Steve Cook:
http://www.planethalflife.com/hlsdk2/sdk2_articles.htm
Half-Life programming:
http://www.planethalflife.com/hlprogramming/tutorials.asp
Gamedesign and programming resources:
http://www.resourcecode.de
Botman´s Homepage:
http://www.planethalflife.com/botman/
Projektgruppe KIMAS – Half-Life
26/26
13
Kommentare im Source Code ;-)
UNI VE R SI T Y
OF
P ADE R BO R N
TOP3
3: // this is the most hacked, evil,
bastardized thing I've ever seen.
2: // this is not a hack or temporary fix,
this is how things should be.
1: // Huh?
Projektgruppe KIMAS – Half-Life
27/26
14

Documentos relacionados