@@ -77,6 +77,8 @@ Zum Schluss, als das ganze Design des Prototypen stand, wurden überall noch die
### 5.2.2 Department "Entwicklung"
> Olivia/Alex: TODO
Mapgeneration
Die Umgebung sollte ein wichtiger Bestandteil des Spiels werden. Daher sollte zu Beginn des Spiels eine neue Karte generiert werden, die aus einer neuen Anordnung der vier Biome bestand. Dadurch muss sich der Spieler jedes mal auf die neuen Bedingungen einlassen und kann nicht über die Runden hinweg die Karte auswendig lernen.
Alex baute zunächst einen Prototyp für die Mapgeneration. Dieser basierte auf dem Aneinanderlegen von Kacheln die jeweils zu einem Biom gehörten. Die Kacheln werden dabei wie in der späteren Version durch einen Noise erzeugt und in eine Normalisierte Höhenkarte umgerechnet (Bsp. alles über höhe == 0.5 wird zu Sand, alles darunter wird zu Wasser).
Später entwickelte Olivia mit diesem Vorbild einen Shader, welcher einen besseren Übergang zwischen Biomen erlaubte. Grundlage ist eine Noise Textur, welche vorher in C# generiert und an den Shader übergeben wird. Über Grenzwerte wird bestimmt, welche Biom in welchem Bereich angezeigt wird.
...
...
@@ -85,6 +87,40 @@ Um die Bäume und Tiere zu generieren wird der gleiche Noise algorithmus genutzt
Damit diese nicht wie in einem Raster angeordnet sind werden sie noch um einen zufälligen Offset in x und y richtung verschoben.
Nebel
Um die Umgebung noch interessanter und wichtiger für das Spielverhalten zu machen, entschieden wir uns die Karte in Nebel zu hüllen. Die Helden können diesen Nebel temporär entfernen indem sie hindurchlaufen oder schießen.
Hierfür erstellte Olivia einen weiteren Shader. Dafür verwendete sie zwei Gradient Noise Texturen in welche verschieden stark reingezoomt wurde und mit verschieden starker Offset Änderung. So konnte der Effekt von sich bewegendem, wabernden Nebel erzielt werden. Zudem konnte man die Farbe des Nebels mithilfe von zwei Color werten von Außen beeinflussen.
Die Durchlässigkeit des Nebels (oder der Alpha Wert) wird durch verschiedene Bedingungen beeinflusst. Der Nebel soll nicht überall gleich dicht sein, daher ließ Olivia die zwei oben genannten Noise Texturen mit in die Alpha Berechnung einfließen. Das sollte allerdings nur einen leichten Einfluss haben. Die sogenannte LightMap sollte den größten Einfluss haben. Die Lightmap sorgt zum Beispiel dafür, dass dort wo die Helden stehen kein Nebel ist. Für den Shader ist die LightMap nur eine schwarz-weiße Textur, welche vom Alpha-wert des Nebels abgezogen wird. Das heißt an den Stellen wo die Textur weiß ist, ist der der Nebel nicht sichtbar.
Um die Lightmaptextur zu generieren und an den Shader zu übergeben erstellte Olivia eine CalculateFog Klasse. Hier wurde zu Spielbeginn eine neue schwarze Textur erstellt. Wir entschieden uns für eine geringe Auflösung der Textur. Das sorgte zwar für relativ eckige Übergänge zwischen Nebel und Licht, aber eine höhere Auflösung wäre mit mehr rechenaufwand verbunden.
Die Helden senden ihre Position konstant an die Klasse. Dadurch werden die Pixel in der Lightmap im Umfeld der Spieler auf weiß gesetzt. Das selbe passiert bei den Pfeilen des Rangers.
Da der Nebel sich konstant verdichten soll, muss sich die Lightmap wieder verdunkeln. Die Idee war das mit einem Compute Shader zu lösen, welche die Farbe der Pixel um einen bestimmten Wert verdunkeln sollte. Die Aufgabe wäre gut geeignet für die GPU und würde die CPU entlasten. Allerdings gab es einige Schwierigkeiten, weswegen wir die Idee letztendlich verwarfen. Zum einen musste die GPU auf einem anderen Texturformat arbeiten. Die Lightmap konnten wir allerdings nicht komplett auf das Texturformat umstellen. Das Übertragen der Werte von der einen Textur in die andere wäre aber ineffizient. Zudem ist die Kommunikation von CPU und GPU nicht schnell genug dass es sich mit den anderen Einschränkungen gelohnt hätte.
Somit ließen wir das letztendlich doch die CPU lösen.
Input / Movement
Camera
Die Kamera sollte sich erst mit dem Spieler mitbewegen, wenn dieser einen bestimmten Bereich verlassen hat.
Waves
Animations
Fahigkeiten Upgrades
GegnerAI
Multiplayer
Arbeitsschritte
-Demo Mapgenerator (mit EyeCandy) von Alex -> weiterbauen des Mapgenerators mit Shadern durch olivia
-Erstellen von Gegner Ai (was müssen die können, wann müssen die was können)