CG 2/3 UEBUNGEN, SS 2004
Abschnitt Nr. 2004
Wagner, Armin, 881, e9726132@stud3.tuwien.ac.at

ATTENDANT



Datenstrukturen:
================

Ich habe mich dafr entschlossen die Levelarchitektur (Wnde, Boden, Decke) und die benutzbaren
Objekte (Schlssel usw.) getrennt zu verarbeiten. Letztere werden durch Dreiecke dargestellt und
in der Datei thing.cpp und thing.h nher beschrieben.
Fr die Speicherung der Architektur benutze ich vorrbergehend noch ein eigenes Dateiformat.
In einer einfachem TXT Dateie definieren jeweils die ersten drei Zahlen einer Zeile ein Vertex,
die letzteren zwei die Texturkoordinaten. Momentan werden smtliche so gespeicherten Daten in
Vertex Arrays eingelesen und als QUADs interpretiert.
Implementiert wurde dies durch die Klasse "LevelPart", bzw. in den Dateien level.cpp, level.h
sowie der Hauptdatei attendant.cpp. Fr den dritten Abschnitt ist selbstverstndlich ein
komplexeres Format geplant, das die Bearbeitung mit 3D Software erlaubt und Sektoreinteilung ermglicht.


Entwurf eines Kameramodells:
============================

Die Klasse "Camera" ermglicht durch Zusammenspiel mit "gluLookAt" eine bewegbare Kamera.
Das Spiel soll in der FirstPersonPerspective gespielt werden, deshalb habe ich den dafr
inzwischen typischen Mouselook implementiert sowie Vorwrts-, Rckwrtsbewegungen und Strafing,
die mittels Tastatur (dafr bitte die Tasten adsw benutzen) gehandhabt werden.
Um die Berechnungen in der Klasse "Camera", sowie auch anderswo, bersichtlicher zu gestalten,
habe ich die Klasse "myVector" geschrieben.


Implementierung von Texture Mapping:
====================================

Die Klasse "ImageLoader" kann unkomprimierte 24bit TGA Bilder laden und fr
den Gebrauch vorbereiten. Die von der Klasse "LevelPart" eingelesen Texturkoordinaten
werden dann in der Funktion "displayFcn" gezeichnet.
Vertex Arrays werden zwar erst in Abgabe 3 explizit verlangt, ich habe diese aber aus Performancegrnden
(mein Computer ist >etwas< langsam) schon jetzt eingefgt und damit experimentiert.
Texturiert wurden Wnde, Decke und Boden, vorerst nur zwei verschiedene, kleine und etwas "trashige"
Texturen.


Beleuchtung und Materialien:
============================

Ein "Thing" kann aus mehreren "ThingParts" bestehen, die sich jeweils aus Dreiecken und einem Material zusammensetzen.
Die Lichtquelle befindet sich in einer oberen Ecke des Raumes.


Sonstige Anforderungen:
=======================

Die Steuerung wurde durch Polling realisiert.
Die Geschwindigkeit wird durch Klasse "Framerater" auf die Performance angepasst.
Verwendete zustzliche Libraries: GLUT.


Walkthrough:
============

Das Spiel wird ein Adventure in First Person Perspective. Der Ort der Handlung ist eine Art Hallenbad.
Bitte per Mouselook umdrehen und den kurzen Gang entlang in den beleuchteten Raum gehen.
Dort liegt in der rechten Ecke ein Schluessel (eine sich drehende Pyramide). Diesen einsammeln, indem
man einfach ueber drueber laeuft. Danach den Gang zurck zur Steinwand laufen und man hat es geschafft und
das Spiel ist zuende. (Dies ist zugegeben noch kein besonders "knackiges" Rtsel, aber ein Grundbaustein
fr wohl jedes Adventure. Mehr kommt in Abgabe 3.)
Per ESC-Taste ist ein Ausstieg jederzeit moeglich.
Die i-Taste gibt einige debug-Informationen auf das Konsolen Fenster aus.

