1/38 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Unreal & Unreal Tournament Projektgruppe KIMAS...
-
Upload
rosamund-nachtigal -
Category
Documents
-
view
146 -
download
1
Transcript of 1/38 UNIVERSITY OF PADERBORN Projektgruppe KIMAS – Unreal & Unreal Tournament Projektgruppe KIMAS...
Projektgruppe KIMAS – Unreal & Unreal Tournament 1/38
UNIVERSITY OF
PADERBORN
Projektgruppe KIMAS
Unreal & Unreal Tournament
25.06.2003
Stefan Köhler
Projektgruppe KIMAS – Unreal & Unreal Tournament 2/38
UNIVERSITY OF
PADERBORNÜbersicht
• Einleitung• Geschichte
• Versionen
• Programmaufbau
• Die Unreal-Welt
• Standard-Bots – Verhalten und KI
• Modifikationen der Engine
• Eigener Bot
• Fazit
Projektgruppe KIMAS – Unreal & Unreal Tournament 3/38
UNIVERSITY OF
PADERBORNEinleitung
• Geschichte:
• entwickelt 1995 von Microprose und Legend
• Durch finanzielle Schwierigkeiten Verkauf der Lizenz 1997 an Epic
Mastergames (jetzt Epic Games), aber weiterhin Grundrechte bei
Microprose und Legend
• vollständig in C++ geschriebene 3D-Engine
• Verkauf und Vertrieb erstmals mit Unreal 1
• In der Unreal-Reihe bisher erschienen:• Unreal
• Unreal Tournament
• Unreal Championsship
• Unreal 2
• Unreal Tournament 2003
Projektgruppe KIMAS – Unreal & Unreal Tournament 4/38
UNIVERSITY OF
PADERBORNEinleitung
• Versionen
• First-Generation-Builds:
• Original Unreal-Engine
• nur Single-Player
• Second-Generation-Builds:
• auch als „Tournament-Build“ bekannt, Builds 300-451
• Erstmals bei Unreal Tounament
• Figuren wurden erstmals an Skeletten „aufgehängt“
• wurden in folgenden Spielen genutzt: • Unreal
• Unreal Tournament
• Wheel of Time
• Deus Ex
• Harry Potter
Projektgruppe KIMAS – Unreal & Unreal Tournament 5/38
UNIVERSITY OF
PADERBORNEinleitung
• Versionen
• Third-Generation-Builds:
• Sprung der Build-Nr. ab 927 (Americas Army) auf 2000+ (wg. UT2003)
• Implementierung eines neuen Partikel-Systems zur Darstellung
• komplexere Texturen
• Komplette Skelettanimation (siehe Halflife)
• erstmals Support für GameCube (ab Build 829) und X-Box (739)
• Wird derzeit von folgenden Spielen benutzt:• Unreal 2, Splinter Cell, UT2003, Raven Shield
• geplant für:• Deus Ex 2, XIII, Thief III
Projektgruppe KIMAS – Unreal & Unreal Tournament 6/38
UNIVERSITY OF
PADERBORNEinleitung
• Versionen
• Fourth-Generation-Builds:• Auch als Warefare-Builds bekannt
• Geplant bzw. in der Entwicklung
• Release erstmals mit Unreal Warefare
• Ab Build 3000+
Projektgruppe KIMAS – Unreal & Unreal Tournament 7/38
UNIVERSITY OF
PADERBORNEinleitung
• Programmaufbau:
• Eigene VM
• Soft- und Hardware-Rendering
• Modular aufgebaut austauschbare Programmteile
• client-seitiges „Sandbox“-Modell• nur sicheren System-Calls zugelassen
• andere werden abgewiesen
• Reihenfolge des Aufbaus: Anwendungen (Aktoren, etc.) Geometrie
Triangle-Setup Texturen, Schatten, etc.
Projektgruppe KIMAS – Unreal & Unreal Tournament 8/38
UNIVERSITY OF
PADERBORNÜbersicht
• Einleitung
• Die Unreal-Welt• Aufbau
• Darstellung
• Spielphysik
• Editor & Dateien
• Standard-Bots – Verhalten und KI
• Modifikation der Engine
• Eigener Bot
• Fazit
Projektgruppe KIMAS – Unreal & Unreal Tournament 9/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Aufbau:• Größe zur Zeit zwischen 6 und 75.000 Polygonen
• Maximal sinnvolle Größe bei 50.000 Polygonen
• Räume sind scheinbar nach oben offen
• 4 Arten von Objekten
• Meshes: [engl. Masche] Grundstruktur aller Objekte, die fest integriert sind
• Aktoren: alle Objekte, die reagieren können
• Pawns: (Spielsteine) Aktoren, die vom Spieler oder der KI gesteuert
werden können, z.B. Bots
• Texturen
• Animationen
• Gravitationskonstante variierbar (Richtung, Stärke)
• Ticks bei U2 / UT2003 zwischen 1/8000 und 1/20000 Sekunde, je nach CPU
Projektgruppe KIMAS – Unreal & Unreal Tournament 10/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Beispiel für eine „offene“ Map
• Darstellung:
Projektgruppe KIMAS – Unreal & Unreal Tournament 11/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Beispiel für Meshes und Aktoren:
Projektgruppe KIMAS – Unreal & Unreal Tournament 12/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Spielphysik:
• Physikengine basiert auf Karma™ von Mathengine
• Bietet Optimierungen und Lösungen für viele Plattformen
• Auch in „Black & White“ und „Raven Shield“ eingesetzt
• Seit UT 2003 volle Ausnutzung der Engine, inkl. Erweiterungen
• Mittlerweile auch Unterstützung für Fahrzeuge
• Per-Poly Kollisionsabfrage
• Kollision wird für jedes Polygon einzeln berechnet
• Kostet aber sehr viel Rechenzeit für Kollision werden einfachere Formen genommen als für Grafik
Projektgruppe KIMAS – Unreal & Unreal Tournament 13/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Spielphysik:
• Basiert auf BSP (Binary Space Partitioning)
• Unterteilt Welt durch Ebene in zwei Hälften (für jede Achse einzeln)
• Rekursives Wiederholen des Vorgangs für jede Hälfte Baumstruktur (Binärbaum)
• Für Abfrage eine Ebene suchen, die zwischen den Objekten liegt
• Für Kollisionspunkt testen, auf welcher Seite der Ebene das Polygon ist
Projektgruppe KIMAS – Unreal & Unreal Tournament 14/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Spielphysik:
• 3 Modelle für die Objekte:
• KarmaCollision Objekt besteht aus einer Menge konvexer Hüllen
• BoxCollision übliches Modell für Bots, einfache Objekte
• LineCollision für Waffenfeuer, berechnet u.a. Auftreffwinkel
• Kollisionspunkte werden in einem gewissen Radius um das Objekt berechnet
• Kollisionspunkte bleiben bestimmte Zeit „online“
• Bots werden per zylindrischer OBB modelliert (Oriented Bounding Boxes)
Projektgruppe KIMAS – Unreal & Unreal Tournament 15/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Vereinfachte Kollisionsgrenzen:
Projektgruppe KIMAS – Unreal & Unreal Tournament 16/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Vorberechnete Kollisionsgrenzen:
Projektgruppe KIMAS – Unreal & Unreal Tournament 17/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Kollisionsberechnung:
X
Richtungsvektor(& Geschwindigkeit)
Zylindermittel-punkt
(XYZ-Position)
Ebene n Ebene n+2 Ebene n+3 Ebene n+1
Projektgruppe KIMAS – Unreal & Unreal Tournament 18/38
UNIVERSITY OF
PADERBORNDie Unreal-Welt
• Editor & Dateien:
• Standardmäßiger Editor UnrealEd (z.Zt. Version 3)
• Dient zum Erstellen von Maps, Einbinden von Aktoren, etc.
• Bietet die Möglichkeit Skripte zu exportieren
• Für jede Map werden Pfade erstellt
1. Beim Editieren werden Pfadpunkte gesetzt
2. UnrealEd versucht diese zusammenzufassen wenn A von B aus erreichbar
ist, wird der Graph entsprechend erweitert
3. Resultat: komplexes Netz aus Pfaden
• Alle Meshes, die der Spieler nicht erreichen kann, werden aus der
Kollisionsabfrage entfernt (z.B. wegen Raumgrenzen)
Projektgruppe KIMAS – Unreal & Unreal Tournament 19/38
UNIVERSITY OF
PADERBORNÜbersicht
• Einleitung
• Die Unreal-Welt
• Standard-Bots – Verhalten und KI• Allgemein
• Verhalten
• KI
• Wahrnehmungen
• Schnittstelle
• Modifikationen der Engine
• Eigener Bot
• Fazit
Projektgruppe KIMAS – Unreal & Unreal Tournament 20/38
UNIVERSITY OF
PADERBORN
• Allgemein:
• Für jeden Bot ist bekannt, ob er
• ein Pawn, also ein Spieler
• ein Menschlicher Spieler
• ein Monster ist
• Maximal 16 Bots möglich
• Ebenfalls Modular aufgebaut
Standard-Bots
Projektgruppe KIMAS – Unreal & Unreal Tournament 21/38
UNIVERSITY OF
PADERBORNStandard-Bots
• Verhalten:
• Bots gehen an Pfad-Knoten entlang
• Sind keine Pfade gesetzt, wird eigene Berechnung versucht
Pfade verkürzen die Rechenzeit
• Bots, die außerhalb der Pfade sind, versuchen dorthin zurück zu kommen
• Weiterführendes Verhalten nur über Erweiterung der Bot-Klasse
• Bots sind in der Lage, Treppen, Türen, Aufzüge, etc. zu benutzen
• Pfade können kurzfristig verlassen werden, z.B. für Pickups
Projektgruppe KIMAS – Unreal & Unreal Tournament 22/38
UNIVERSITY OF
PADERBORN
• KI:
• 3 Arten von KI• Team-KI z.B. gemeinsames Ziel beim BR: Ball ins Tor bringen
• Squad-KI z.B. bei BR: Ballträger schützen
• Bots Low-Level (Navigation, Zielen, Waffen verwalten, Hitpoints, etc.)
• Manöver wie größere Sprünge über AI-Scripte:
Standard-Bots
MoveToObject
WaitForTimer
Projektgruppe KIMAS – Unreal & Unreal Tournament 23/38
UNIVERSITY OF
PADERBORN
• KI:• Auch Objekte besitzen eine kleine KI:
• Tore beim Bombing Run (Punkte geben)
• Basen bei CTF
• Domination Kontrollpunkte
• usw.
• Es gibt verschiedene vordefinierte Scripts
• Für Pawns: ChangeWeapon, FinishRotation, MoveToPoint, StopShooting, …
• Für Level: ChangeLevel, GotoAction, LeaveSequence, …
• Außerdem Skripte für Konsoleneingaben, Sounds, etc.
Standard-Bots
Projektgruppe KIMAS – Unreal & Unreal Tournament 24/38
UNIVERSITY OF
PADERBORN
• Wahrnehmungen:• Bots „sehen“ nur Netzwerk aus Knoten und Pfaden
• Sicht prinzipiell wie bei Kollision, also schauen, ob ein Objekt in der Sichtlinie liegt Kann zu Problemen führen
• Sichtweite entspricht der von Spieleren
• Wird ein anderer Actor „gesehen“, so werden überprüft:
1. Geräusche (z.B. Schüsse)
2. Spieler-Aktoren
3. Nicht-Spieler-Aktoren (nicht UT)
4. Ziel überhaupt sichtbar
• Aber: Bots sehen auch bei schlechten Sichtverhältnissen alles Sichtweite ist Modifizierbar
• Objekte werden auf gleiche Weise gesichtet
Standard-Bots
Projektgruppe KIMAS – Unreal & Unreal Tournament 25/38
UNIVERSITY OF
PADERBORN
• Schittstelle:• Bisher erbten Bots von der Klasse Pawn
• Seit UT2003 keine Änderung dieser Klasse mehr nötig Jetzt Erweiterungen des Verhaltens über Scripted Actions
• Verhalten kann auch über Mutatoren gesteuert werden:
Standard-Bots
function ModifyPlayer( Pawn Other ) { if ( Other.Controller != None ) { if ( Other.Controller.bIsPlayer && !Other.IsHumanControlled() ) { Log("Sight radius adjusted");// repEndDist is the end distance of the fog Other.SightRadius = repEndDist / 8; } }}
Projektgruppe KIMAS – Unreal & Unreal Tournament 26/38
UNIVERSITY OF
PADERBORNÜbersicht
• Einleitung
• Die Unreal-Welt
• Standard-Bots – Verhalten und KI
• Modifikationen der Engine• Voraussetzungen
• Arten von Modifikationen
• Wie modifiziert man?• Unreal-Script
• Bekannte Mods & Mutatoren
• Eigener Bot
• Fazit
Projektgruppe KIMAS – Unreal & Unreal Tournament 27/38
UNIVERSITY OF
PADERBORNModifikationen
• Der Editor UnrealEd, welcher auch für den Export der Aktoren zuständig ist
• Den UnrealScript-Compiler ucc.exe
Beides ist bei Unreal dabei
• einen Text-Editor (zum Beispiel UltraEdit, MS Developer Studio, usw.)
• Wissen, was man tut!
• z.B. etwas UnrealScript können
• Was möchte man haben
• Voraussetzungen:
Projektgruppe KIMAS – Unreal & Unreal Tournament 28/38
UNIVERSITY OF
PADERBORNModifikationen
• Mutatoren:• kleine Programmerweiterungen, sehr eingeschränkte Funktionalität
• alles was über diese Regeln hinausgeht sind Gameplay-Mods
• folgen bestimmten Regeln:
1. jeder Mutator muss mit jedem anderen Mutator funktionieren
2. Mutatoren dürfen das Gameplay nur wenig ändern
3. Mutatoren sollten Ressourcen mit anderen Mutatoren teilen
• Arten von Modifikationen:
Projektgruppe KIMAS – Unreal & Unreal Tournament 29/38
UNIVERSITY OF
PADERBORNModifikationen
• Beispiel für Mutator:
class MutNoAdrenaline extends Mutator;
function bool IsRelevant(Actor Other, out byte bSuperRelevant){
if ( Other.IsA('AdrenalinePickup') ){
bSuperRelevant = 0;return false;
} if ( Controller(Other) != None )
Controller(Other).bAdrenalineEnabled = false;return Super.IsRelevant(Other, bSuperRelevant);
}
defaultproperties{ GroupName="Adrenaline" FriendlyName="No Adrenaline" Description="Adrenaline pickups are removed from the map."}
Projektgruppe KIMAS – Unreal & Unreal Tournament 30/38
UNIVERSITY OF
PADERBORNModifikationen
• Gametypes:• Alle Gametypes sind einzigartig
keine gemeinsame Nutzung möglich
• Enthalten im Allgemeinen neue Waffen, Pickups, neue KI-Features oder
spezielle Aktoren, die nur hier funktionieren
• Keine Regeln
• Lediglich Schnittstellen müssen Beachtung finden
• Muss auf Client-Server Ausgaben reagieren können
• Arten von Modifikationen:
Projektgruppe KIMAS – Unreal & Unreal Tournament 31/38
UNIVERSITY OF
PADERBORNModifikationen
• Einfaches Beispiel:
class MyGame expands DeathMatchPlus;
Defaultproperties{ GameName="My Game"}
• Erzeugt einen neuen Gametype, der auf DeathmatchPlus basiert
• ändert in diesem Fall nur den Namen
• Alle neuen Funktionen und Variablen sind Bestandteil von „My Game“
Projektgruppe KIMAS – Unreal & Unreal Tournament 32/38
UNIVERSITY OF
PADERBORNModifikationen
• Alles andere:• Mods, die nicht über GameInfo- oder Mutatorklasse funktionieren
• Abweichende Programmregeln (sind aber auch in GameTypes möglich)
• Arten von Modifikationen:
Projektgruppe KIMAS – Unreal & Unreal Tournament 33/38
UNIVERSITY OF
PADERBORNModifikationen
• 1998 von Epic entwickelt
• Für Entwicklerteam und Third-Party-Entwickler
• Komplett auf Unreal und die 3D-Entwicklung zugeschnitten
• Ermöglicht die einfache Einbindung von z.B. Netzwerkkomponenten
• Verbindet die Vorzüge von C/C++ und Java
• Zeigerlose Umgebung mit automatischem Garbagecollector
• Vererbung und einfacher Klassengraph
• Datentypsicherheit
• Arbeitet auf Objekt- und Interaktionsebene
• UnrealScript:
Projektgruppe KIMAS – Unreal & Unreal Tournament 34/38
UNIVERSITY OF
PADERBORNModifikationen
• Insta-Gib
• Headshot
• BigHead
• …
• Verschiedene Gametypes
• Monsterrush
• Surviver
• Autorennen
• …
• Bekannte Mods:
Projektgruppe KIMAS – Unreal & Unreal Tournament 35/38
UNIVERSITY OF
PADERBORNÜbersicht
• Einleitung
• Die Unreal-Welt
• Standard-Bots – Verhalten und KI
• Modifikationen der Engine
• Eigener Bot• Kommt nächste Woche
• Fazit
Projektgruppe KIMAS – Unreal & Unreal Tournament 36/38
UNIVERSITY OF
PADERBORNFazit
• Vorteile:
• Sehr umfangreiche Schnittstelle
• Praktisch unbegrenzte Möglichkeiten beim Modifizieren, von Kleinigkeiten
bis hin zu komplexen Spielmodi
• Viele Tutorials
• Eigene Scriptsprache (nicht immer leicht verständlich)
• Objektorientiert (meistens)
• Eigener Compiler
• Sehr Stabil, da keine direkten Änderungen an der Engine gemacht werden
• Läuft auch unter Linux
Projektgruppe KIMAS – Unreal & Unreal Tournament 37/38
UNIVERSITY OF
PADERBORNFazit
• Nachteile:
• Vielleicht etwas zu umfangreich
• UnrealScript hat ab und zu Macken im Bereich OO
• Ausgabe des Compilers nicht immer nachvollziehbar
• Wenn wir Unreal nehmen, muss ich innerhalb von einer Woche meine
Ausarbeitung schreiben und den Bot mitentwickeln
Projektgruppe KIMAS – Unreal & Unreal Tournament 38/38
UNIVERSITY OF
PADERBORNQuellenverzeichnis
• „Physikengines – State of the Art, Konzepte“, B. Schmidt, M. Bader, 11/2002,
http://www.uni-ulm.de/~s_hdamme/docs/lab/Physik-StateOfTheArt.pdf
• „Unreal Developer Network“, http://udn.epicgames.com
• „Unreal Wiki –The Unreal Engine Documentation Site“,
http://wiki.beyondunreal.com
• Mathengine Karma™ und KAT, http://www.mathengine.com/karma_f.html
• „Mobile Agenten und Sicherheit“, K. Umschaden (TU Wien), 2002, http://
www.infosys.tuwien.ac.at/Teaching/Courses/AK2/vor99/t8/