Allgemeines
Plant eure Zeit gut!
Es macht keinen Sinn, sich bei der 2. Abgabe in komplizierte Menüsysteme zu verstricken, ein komplexes Shader-Framework zu implementieren, oder sich tagelang mit Objekt-Loadern herumzuspielen. Die 2. Abgabe soll kein Technologie-Demo sein, sondern ein in allen Belangen (also Graphik, Steuerung, aber auch Spieldesign) einfaches Spiel. Nehmt daher lieber einfache Objekte ohne Loader, dafür können diese Objekte schon miteinander interagieren.
Entwurf der Datenstrukturen
Ihr benötigt Datenstrukturen, um die 3D Objekte, die im Spiel vorkommen sollen, zu repräsentieren. Unter OpenGL braucht man dazu üblicherweise Zugriff auf die einzelnen Eckpunkte des Objekts, auf die Texturkoordinaten sowie die Normalvektoren der einzelnen Eckpunkte.
Bei der 2. Abgabe müssen die Objekte noch nicht sehr komplex sein, ihr müsst also noch nicht unbedingt ein Dateiformat für Objektdaten erstellen (obwohl das im Hinblick auf die 3. Abgabe natürlich sinnvoll ist).
Entwurf eines Kameramodells
Da ihr die Objekte aus jeder beliebigen Position im Raum darstellen müsst, solltet ihr ein Kameramodell entwerfen, um die richtigen OpenGL-Transformationsmatrizen zu generieren, die für die Transformation der Objekte in das Bildschirmkoordinaten-System notwendig sind. Die Kamera sollte möglichst frei bewegbar sein (je nach Spieltyp).
Bewegte Objekte
Es müssen, wie in den meisten Spielen, ein paar bewegte Objekte vorkommen. Die Objekte selbst müssen noch nicht animiert sein, sich sondern nur selbst oder bei Interaktion bewegen.
Implementierung von Texture Mapping:
Jedes Objekt, das texturiert werden soll, benötigt Texturkoordinaten. Wenn ihr im 2. Abschnitt noch keine Bitmap-Dateien einlesen könnt, genügt es, wenn ihr prozedurale Texturen (z.B. Schachbrett-Muster) verwendet. Auf jeden Fall müssen die Texturen aber korrekt auf den Objekte angebracht werden.
Beleuchtung und Materialien
Einige nicht-texturierte Objekte (oder, falls alle Objekte texturiert sind, einige texturierte Objekte) müssen mit einem Material versehen werden. Dazu sind 3 Schritte erforderlich:
- Es muss zumindest eine Lichtquelle definiert sein.
- Jedem Objekt muss ein Material zugewiesen werden.
- Jedes Objekt muss mit Normalvektoren versehen werden.
Bei den Normalvektoren müsst ihr 2 Fälle berücksichtigen:
- Die darzustellende Fläche ist flach (z.B. Kanten eines Tisches):
Hier müssen für alle Eckpunkte einer Fläche dieselben Normalvektoren angegeben werden!
- Die darzustellende Fläche ist gekrümmt:
Hier sollten die Normalvektoren in den Eckpunkten der Krümmung der eigentlichen Fläche entsprechen. Das kann man z.B. durch Mitteln der Normalvektoren der angrenzenden Flächen erreichen (siehe dazu auch die entsprechenden Kapitel im Redbook).
In der 2. Abgabe müssen noch keine gekrümmten Flächen vorkommen. Gebt auch darauf acht, dass jede Lichtquelle die Darstellungsgeschwindigkeit reduziert. Versucht daher, mit so wenig Lichtquellen wie möglich auszukommen.
Spieldesign
Ganz wichtig ist, dass ihr nicht nur eine 3D-Engine abgebt. Auch die 2. Abgabe sollte schon spielbar sein. Es kann eine sehr vereinfachte Spielvariante sein (nur 1 Level, sehr einfache Objekte, keine Collision Detection/Sound, etc.), aber die Spielbarkeit geht entscheidend in die Bewertung ein.
Auch beim Spieleevent kommt ein funktionierendes Spiel bestimmt besser an, als die tollste Grafik ohne jegliches Gameplay!
Sonstige Anforderungen
- Die Objekte müssen selbstverständlich mit der richtigen Sichtbarkeit dargestellt werden (das ist in OpenGL durch den Z-Buffer trivial).
- Achtet darauf, dass euer Spiel auf unterschiedlich schnellen Rechnern ausgeführt werden kann. Außerdem braucht die Hardware für manche Blickpunkte länger zum Rendern als für andere. Die Bewegung der Objekte bzw. die Kamera-Steuerung sollte daher an die aktuelle Rendergeschwindigkeit angepasst werden (z.B. durch Messung der Zeit, die das vorige Bild zur Anzeige benötigt hat).
- Die Steuerung sollte halbwegs intuitiv sein, und vor allem mit Polling realisiert werden (siehe Tips und Tricks sowie den allgemeinen Teil).
- Vorsicht bei gekrümmten Oberflächen und Specular Lighting:
Man erwischt leicht einen zu großen spekulären Anteil bzw. Exponenten, was zur Folge hat, dass die Oberflächen sehr unrealistisch ausschauen (z.B. der Effekt, dass die Oberfläche von vielen Betrachtungswinkeln einfach weiß aussieht).
Restriktionen
Lest Euch den Punkt Restriktionen auf der Software-Seite durch, um sicherzugehen, dass alle Zusatztools, die ihr verwenden wollt, auch bei der Übung erlaubt sind!
|