CG23LU - Feature Liste
- Display-Lists
Mit F4 toggeln. Display-Lists werden für die statischen Objekte in der Landschaft sowie für das Terrain verwendet.
- Mip-Mapping
Mit F5 toggeln. Nicht alle, aber die meisten Objekte verwenden Mip-Mapping, speziell beim Terrain fällt das ja auf.
- Vertex Arrays
Mit F6 toggeln. Vertex Arrays verwendet das Terrain.
- Textur-Qualitätseinstellungen
Mit F7 umschalten zwischen nearest, bilinear, und trilinear Filtering.
- FPS-Counter
Framerate wird links oben am Bild angezeigt.
- Wireframe-Modus
In den Wireframe-Modus kommt man per F2.
- Transparenz
Wir verwenden Alpha-Blending für eine Vielzahl von Effekten oder einfach der Ästhetik halber. Sh. unten.
- Frustum Culling
Frustum Culling ist mit Objekt-Boundingspheres (beim 1. Spieleevent demonstriert anhand einer absichtlich "falschen", zu kleinen Boundingsphere), und Bounding-Boxen implementiert, letzteres kommen speziell beim Traversal durch den Terrain-Octree in Verwendung.
- Octree Terrain
Ursprünglich haben wir uns für Octrees entschieden, um eventuell auch Szenen mit einem relevanten Höhenanteil zu kreieren. Allerdings blieb keine Zeit für einen Level-Editor, und so sind wir noch immer hängengeblieben an der Maßnahme, dass einfach aus einer Heightmap ein Mesh generiert wird, und dem Octree übergeben (der space-partitioned das dann).
(Inspiriert von einem Tutorial aus www.gametutorials.com)
- Video/Animierte Texturen
Die Explosionen verwenden Alpha-Blending, Billboarding, sowie Texturanimation.
- Mesh-Animation
Durch den MilkShape3D-Loader, den wir recht stark modifiziert haben, haben wir sich dynamisch verändernde Objekte. Auch das Wasser ist ein Mesh, bei dem die "Wellen" einfach nur dynamisch veränderte Vertizes sind.
- Typographisch korrekte Raster-Font-Engine
Wenn man eine Schrift-Engine in OpenGL oder was auch immer baut, die auf eine Bitmap mit dem Zeichenvorrat zugreift, macht man oft den (typographischen) Fehler, bei Schriftarten, die eigentlich variable Zeichen-Breite haben, trotzdem einen gleichen Zeichenabstand zu verwenden.
Unsere Schriftengine ist in dieser Hinsicht deutlich ästhetischer.
- Collision Response, "Sliding"
Ist derzeit nur bei Objekt-Objekt Kollisionen implementiert und nicht mit dem Terrain (deswegen ist das Terrain ziemlich "hakelig"). Basiert auf einem Artikel von www.gamedev.net.
- Rauchspuren
Manche Schüsse ziehen einen Schweif hinter sich her, auch wenn der kein Rauch ist, am deutlichsten sichtbar ist das beim blauen "Gauss Rifle" des Scorpion. Transparent sind sie, allerdings keine Billboards (obwohl wir an anderer Stelle, z.B. bei den Explosionen, Billboards eingebaut haben). Hier hatten nachgezogene Kugeln einfach den besseren Effekt.
- Wolken
Leicht zu finden, einfach das Spiel starten und die Maus nach oben bewegen.
- Wasser
Ebenfalls leicht zu finden (obwohl, ein paar Tester haben das Wasser schon übersehen...), einfach beim Spielstart um 180 Grad drehen.
- Lensflare
Wie für die Wolken: einfach den Himmel absuchen.
- Multitexturing
Das Terrain verwendet eine große "Farbtextur" (generiert mit einem selbstgeschriebenen Tool), und eine "Detailtextur".
Im Prinzip wäre es nur ein Aufwand von einigen wenigen Zeilen, Hardware-Bumpmapping einzufügen, allerdings dachten wir uns, es bringt verhältnismäßig wenig (das Terrain ist fix, und die Lichtquelle bewegt sich nicht), da ist unser "Pseudo-bumpmapping" (einfach eine Detailtextur mit einem Texture Combiner kombiniert) vermutlich genauso effektiv und performance-schonender.
- Billboarding
Wird für verschiedene Effekt angewandt, sh. oben.