Im Verlauf des Praktikums sollen grundlegende Konzepte moderner Computerspiele
untersucht und einzelne, funktionelle Teilkomponenten implementiert werden.
Voraussetzungen:
Bereitschaft, sich selbstständig und intensiv in die Themenstellung einzuarbeiten
und gegebenenfalls die für die Realisierung benötigten Grundlagen zu recherchieren,
zu erlernen und zu implementieren.
Notwendige Kenntnisse:
C/C++ zur Realisierung der Aufgabe
SDL für Keyboard-Handling und Plattformunabhängigkeit
OpenGL zur Visualisierung des Spielzustandes
Grober Ablauf des Praktikums:
1) Vertraut machen mit der Architektur von Spielen und Erstellen
eines State of the Art Berichts, der die vorhandenen Lösungsansätze
der ausgewählten Aufgabe untersucht.
2) Erstellen eines Frameworks, mit dem die Aufgabe realisiert
werden soll. Hierfür gibt es prinzipiell zwei Möglichkeiten:
a) Verwendung einer (Open-Source) Game-Engine, die die benötigte Funktionalität
bereits enthält.
b) Eigenständige Implementierung einer sehr einfachen Game-Engine, die den
Spielzustand visualisiert und gegebenenfalls externe Bibliotheken für
bestimmte Aufgaben (Collision Detection, Sound...) benutzt.
3) Lösung der gewählten Aufgabe
4) Abschlussbericht und Präsentation
Überblick über die Aufgaben:
Im Folgenden werden ein paar mögliche Aufgaben skizziert. Die Beschreibung
soll nur als eine grobe Orientierung dienen und wird im Einzelfall noch (je
nach Wunsch und Vorkenntnissen) präziser definiert werden.
A) Charakter-Bewegung in einer 3D Welt
Die Navigation eines Spielecharakters durch eine 3D Umgebung ist ein relativ
komplexes Problem. Zum einen muss ein intuitives Interface zur Steuerung
des Charakters existieren. Zum anderen muss die Kollisionserkennung ein
realistisches Bewegen möglich machen.
Minimalanforderungen für die Lösung der Aufgabe:
- Interne Repräsentation und Visualisierung einer einfachen 3D Welt (kann
durchaus schwarz-weiß nur aus glatten grauen Dreiecken sein)
Eine Möglichkeit hierfür ist das Verwenden von Quake3 BSP Maps.
- Integration von Kollisionserkennung zwischen der Welt und dem Charakter
(im einfachsten Fall repräsentiert durch einen Zylinder). Zur
Kollisionserkennung kann entweder eine Open-Source Bibliothek verwendet
werden, oder sie kann selber implementiert werden.
- Die Repräsentation des Charakters kann durch die Welt navigiert werden
und es existieren mindestens folgende Aktionen:
- Gehen
- Rennen
- Springen
Weitergehende Aspekte sind z.B. die Integration eines animierten Charakters
mit Hilfe der Cal3D Bibliothek, oder komplexere Interaktionen mit der
Umgebung (vgl. z.B. Jump and Run Spiele oder Action Adventures).
B) "Physics Driven Game-Play"
Es soll ein einfaches Spiel implementiert werden, das vollständig auf
einer Physik-Engine (in unserem Fall die ODE) aufsetzt. Hierbei geht es vor allem um die Verwendung und Integration der Physik-Engine.
Als Spieleprojekt eignet sich beispielsweise eine sehr vereinfachte Version des
Spiels "The Incredible Machine".
Minimalanforderungen für die Lösung der Aufgabe:
- Erstellen eines vollständigen Game-Play Konzeptes mit den dafür notwendigen
Primitiven.
- Entwicklung eines intuitiven Benutzer-Interfaces
- Realisierung des Spiels auf Basis der Physik-Engine
C) Verwenden einer vollständigen Game-Engine
Hierbei geht es um die Untersuchung einer vollständigen Game-Engine wie
sie in kommerziellen Spielen eingesetzt werden. Eine mögliche Engine
ist z.B. die Unreal Engine.
Die Schwerpunkte sollen auf folgendem liegen:
- Welche Möglichkeiten und Einschränkungen resultieren aus der
verwendeten Engine
- Wie sieht der Content-Workflow aus
- Wie werden eigene Game-Play Elemente realisiert.
Bei der Untersuchung soll ein kleines Spiele-Projekt mit der Engine
realisiert werden (z.B. ein sehr einfaches Jump and Run).
Ein weiteres mögliches Thema ist adaptive Musik, welches jedoch zwingend
Grundkenntnisse in Musik und Musik mit dem Computer voraussetzt.
KI
Themen aus dem Bereich Künstliche Intelligenz können nach Absprache vergeben werden.