1/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Projektgruppe KIMAS Half-Life 18.06.2003 Lars Tegeler.

Slides:



Advertisements
Ähnliche Präsentationen
Programmieren im Großen von Markus Schmidt und Benno Kröger.
Advertisements

Protégé für Fortgeschrittene nach dem Pizza-Tutorial
On the Criteria to Be Used in Decomposing Systems into Modules
LON-CAPA 1 Das LearningOnline Network mit Computer- Assisted Personalized Approach (LON-CAPA) Gerd Kortemeyer Michigan State University.
RIS mit Treibereinbindung, Ewest/Rau, Windows 200x Musterlösung 1 RIS (mit Treibereinbindung) Teil 1 – Was ist RIS?
Bauinformatik Grundlagen Algorithmen und Datenstrukturen in Java
Game Engine Architecture - J. Gregory
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Standortfaktoren INTERN - Ausdrucksstark präsentieren.
NATURAL Web-Integration 1 / 27/28-Feb-98 TST NATURAL Web-Integration Arbeitskreis NATURAL Süd Theo Straeten SAG Systemhaus GmbH Technologieberater Stuttgart.
Fallstudie. 2 Statistik April Dokumente Jan Mio. Dokumente Performance 3 Mio. Queries pro Tag 9. Juni 2000 Most popular search engines.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Der Einstieg in das Programmieren
Vergleich von 3D Game Engines
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
1 Analyse von Software-statisch- Darmstadt,den Presentation: Sebastian Schikowski Steve Kenfack.
UNIVERSITY OF PADERBORN Projektgruppe KIMAS Projektgruppe KIMAS Organisatorisches Andreas Goebels.
1/11 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Grundlagen 3D-Engines Projektgruppe KIMAS Grundlagen 3D-Engines Alexander Weimer.
1/16 UNIVERSITY OF PADERBORN Projektgruppe KIMAS Projektgruppe KIMAS Agenten Andreas Goebels, Alexander Weimer.
1/25 UNIVERSITY OF PADERBORN Projektgruppe KIMAS Projektgruppe KIMAS MultiAgenten-Systeme Andreas Goebels.
Introducing the .NET Framework
Seminar: Software-Produkt-Linien(SPL)
DVG Einführung in Java1 Einführung in JAVA.
Grundschutztools
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Referat zum Thema „DLL“
Semantic Media Showcase – Universität Potsdam
01 Installation / Support. © beas group 2011 / Page 2 This documentation and training is provided to you by beas group AG. The documents are neither approved.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Digitale Bibliothek Uni Freiburg. Wichtige Anbieterplattformen für elektronische Inhalte Science Direct/SciVerse (Elsevier) Metapress (u.a.SpringerLink)
BSP Binary Space Partitioning
Von Tom Wehnert & Konstantin Preißer
Delphi II - OOP IFB Fortbildung
Don`t make me think! A Common Sense Approach to Web Usability
Web-HMI einbinden SPS-Technik mit Video, Multimedia und Entertainmentsystemen kombinieren I Peter Steib.
Multiplayer & MMO Games
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
© Roland Angst, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 1.
...ich seh´es kommen !.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
Reasoner Semantische Interoperabilität
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 13 Kapitel 4 Folie 2 REST Web Services (1)
Werkzeugmaschinen Einführung © Prof. Dr. H.-J. Weber 10.11
Auslegung eines Vorschubantriebes
Komputerspiele Meine Hobbys sind Computerspiele. Ich mag, um online mit meinen Freunden zu spielen.
1 CeBIT 2008 Knowledge Management 2.0 Ulrich Kampffmeyer PROJECT CONSULT Unternehmensberatung Dr. Ulrich Kampffmeyer GmbH Breitenfelder Straße
HORIZONT 1 XINFO ® Das IT - Informationssystem Assembler HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 /
Einführung in Datenbankmodellierung und SQL
Oliver Spritzendorfer Thomas Fekete
Agenda Rückblick 2. Aufbau der Software Benutzeroberfläche 4. Ausblick
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
Visionaire - Adventure Game Engine Tipps und Konzepte zur Entwicklung eines Spiele Editors Alex Hartmann.
LOD Levels of Detail Oliver Gassner Christian Troger.
Analyseprodukte numerischer Modelle
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
o. Univ.-Prof. Dr. Dimitris Karagiannis.
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002.
3 2 1 Rot:0; Grün: 128; Blau: 128 Schriftgröße: 32
VirtualPatt 2000 Interaktives 3D-Schachspiel
Tutorial Schritt 1: Über den Link im VP gelangen Sie auf die Seite
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Noch mehr Funktionen Prof. Dr. Dörte Haftendorn, Leuphana Universität Lüneburg,
Eingereicht von:Michael Schrank Betreuung:o.Univ.-Prof. Dr. Hanspeter Mössenböck Mitbetreuung:Dipl.-Ing. Wolfgang Beer CyberStudent A Multiuser Awareness.
Arbeiten in einem agilen Team mit VS & TFS 11
 Präsentation transkript:

1/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Projektgruppe KIMAS Half-Life Lars Tegeler

2/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Überblick Half-Life Die Half-Life Welt Programmstruktur Modifikationen Bot´s

3/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Half-Life 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 ;-)

4/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Half-Life 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

5/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Überblick Half-Life Die Half-Life Welt Programmstruktur Modifikationen Bot´s

6/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Half-Life Welt 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 )

7/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Half-Life Welt 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 Echtzeitrender- systeme) Kolisionserkennung (über Bounding-Boxes, an Achsen ausgerichtet, werden nicht gedreht)

8/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Half-Life Welt 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+)

9/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Überblick Half-Life Die Half-Life Welt Programmstruktur Modifikationen Bot´s

10/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Programmstruktur 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) E rmöglicht einem Prozess eine Funktion zu benutzen die nicht zu seinem Ausführbaren Code gehört

11/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Programmstruktur Engine (Half-Life Game Executable) Server (hl.dll /mp.dll) Client-UI (cl_dll.dll) GiveFnptrsToDll() GetEntityAPI() GameDLLInit() Interaktionschema:

12/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Programmstruktur Klassendiagramme Server: Client: Vererbung Alle Objekte stammen von CBaseEntity ab (zu finden in cbase.cpp)

13/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Überblick Half-Life Die Half-Life Welt Programmstruktur Modifikationen Bot´s

14/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Modifikationen Modifikationen (Mod´s) sind Änderungen am Spielablauf, z.B. an: Waffen, Monstern, GUI, Regeln,... Der wohl bekannteste Half-Life Mod´s: Counter-Strike

15/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Modifikationen 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

16/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Modifikationen Geschwindigkeit der RPG: DropXP: Rpg.cpp (in FollowThink):... pev->velocity=pev->velocity*10;... Player.cpp (in DropPlayerItem):... CWeaponBox *pWeaponBox = (CWeaponBox *)CBaseEntity::Create(..., Koordinaten,...);...

17/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Überblick Half-Life Die Half-Life Welt Programmstruktur Modifikationen Bot´s

18/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Bot´s 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

19/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Bot´s Engine (Half-Life Game Executable) Server (hl.dll /mp.dll) Client-UI (cl_dll.dll) GiveFnptrsToDll() GetEntityAPI() GameDLLInit() Bot (bot.dll) Interaktionschema:

20/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Bot´s Der Bot wird mit FakeClient als virtueller Spieler erzeugt, zählt also als Spieler: Bot erzeugen Bot steuern BotEnt=g_engfuncs.pfnCreateFakeClient(Bot);... ClientConnect( BotEnt, BotName, , ptr); ClientPutInServer( BotEnt);... pfnRunPlayerMove( BotEnt, BlickRichtung, VorG, RechtsG, HochG, Taste, Impuls, Dauer);...

21/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Bot´s Sicht des Bot´s am Beispiel-Code for (i =1; i maxClients; i++) { edict_t *pPlayer = INDEXENT(i); vec2LOS = ( pPlayer->v.origin – pEdict->v.origin).Make2D();... flDot = Dotproduct ( vec2LOS, gpGlobals->v.forward.Make2D() ); if ( flDot > 0.50 ) { //im Sichtfeld UTIL_TraceLine{...}//Line zum Ziel } else {...}//ausserhalb des Sichtfelds }

22/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Bot´s aus den Engine-Headerdatein (common\com_model.h): 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) #define MAX_CLIENTS 32 #define MAX_EDICTS 900

23/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Bot´s 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

24/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Bot´s Unserer KimasBot:

25/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Gegenüberstellung FunktionQuakeHalf-Life Bot´s (max)???32 Entities (max) OpenGL** Direct X* Skeletal Animation System* Rendering8-bit16-bit Colored lighting* Decal System* Real-Time DSP* Maps als BSP** Datenstruktur (Bewegung, Richtung,...) Vektor Ausführbare DateienQuakeVMDLL KollisionserkennungBounding-Boxes

26/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Weitere Informationen Half-Life FAQ von Steve Cook: Half-Life programming: Gamedesign and programming resources: Botman´s Homepage:

27/26 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Half-Life Kommentare im Source Code ;-) 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?