Wasser, Glas und Skyboxes

Spark

Diese Woche beziehen sich die Fragen zur Spark Engine auf Glas- und Wasseroberflächen, sowie auf Sky Boxen beim Leveldesign. Die Fragen stammen von Usern der NS2-Community und werden regelmäßig von Max McGuire beantwortet.

Graham: Werden wir Wasser und Glas sehen? Falls ja, wird es eine simple Implementierung wie in der HL1 Engine werden?

Extrem sauberes Glas sieht man gar nicht!

Wasser in der HL1 Engine

Lichtdurchlässige Oberflächen gehören zu den nervigsten Dingen für einen Grafik-Programmierer. Das Problem liegt darin, dass die meisten etablierten und getesteten Techniken für das Erzeugen von Bildern auf dem Monitor nicht gut funktionieren wenn man durch etwas hindurchsehen kann. Dies trifft besonders auf deferred Renderern wie der Spark Engine. Einer der Nachteile, wenn man Engine und Spiel parallel entwickelt ist, dass es immer Engine Funktionen geben wird, die man erst gegen Ende der Entwicklung einbauen kann. Idealerweise sind das die weniger wichtigen Funktionen, deren Fehlen niemanden aufhält. Da Glasoberflächen in der Welt von Natural Selection 2 nicht sehr verbreitet sind, hatte ihre Abwesenheit bis jetzt keinen Einfluss auf die Spielbarkeit und das Aussehen des Spiels. Daher wurden Glasoberflächen noch nicht implementiert. Das soll sich aber noch ändern.

Wasser in Far Cry

Wasser wird es in der ersten Version von NS2 nicht geben. Für ein kleines Entwicklerteam ist es sehr wichtig, unter den Mammutaufgaben nur die wichtigsten auszuwählen und Wasser ist einfach nicht wichtig genug um so viel Entwicklungszeit zu rechtfertigen. Eventuell wird es nach dem Release eine Wasserimplementierung für Modder geben.

Deferred Renderer

Da vermutlich nicht jedem klar ist, was ein Deferred Renderer, bzw. Deferred Rendering ist:

Deferred Shading Beispiel

Dabei handelt es sich um eine Technik, bei der man die Schattenwürfe eines Raumes in viele kleine „Schattenprozesse“ zerlegt. Dann muss nicht die GPU alle Prozesse übernehmen, sondern einige der Teilschatten können auch von der CPU übernommen werden (die eigentlich nicht perfekt für geometrische Berechnungen ist). Das ist deshalb wichtig, weil bei PC- und Konsolenspielen die GPU der Flaschenhals ist, während die CPU noch Reserven frei hat. Dazu kommt, dass viele der Teilschatten auf die gleiche Art und Wiese berechnet werden. Dann wird ein Vektor durch den Raum gelegt über alle identischen Schattenwürfe und man muss sie nur einmal berechnen. Und die Ergebnisse der Teilschattenberechnungen sind eine Art Textur. Diese müssen dann nur noch übereinander gelegt werden und ergeben (sehr ressourcenschonend) den fertigen Schatten.

Zu diesem auch als Deffered Shading oder Deffered Lighting könnte man noch viel mehr erzählen aber ich bin keine Spieleentwickler (nicht mal 3D Programmierer) und möchte hier nicht mehr Halbwissen verbreiten als unbedingt nötig. Spiele mit dieser Technik sind unter anderem Killzone 2, LittleBigPlanet, inFamousm Stalker: Shadow of Chernobylm Dead Space, Tabula Rasa, Crackdown, Grand Theft Auto IV und CryEngine 3. Speziell Sony motiviert PS3 Entwickler zur Nutzung dieser Technik.

Matthew: Wie werden Skyboxes in Natural Selection 2 gehandhabt? Müssen mir eine Box um unsere Maps legen?

Eine Skybox ist eine verbreitetet Technik um den Himmel oder andere Sehr weit entfernte Objekte darzustellen. Dafür nimmt eine große Box und legt den Himmel als Textur auf die Innenseiten. Dann wird die Box so gerendert, dass der Spieler immer in ihrem Zentrum steht. Das ist wichtig um zu verhindern, dass ein Spieler sich den Wänden der Box nähert , was die Illusion ruinieren würde.

Die Source Engine unterstützt „3D Skyboxes“, die nach dem gleichen Prinzip funktionieren, jedoch neben Texturen auch Objekte enthalten können. Das können zum Beispiel weit entfernte Gebäude sein. Theoretisch könnte man diese auch als Textur auf die Innenseiten der Skybox malen aber dadurch das sie gerendert und geometrisch korrekt beleuchtet werden, wirken sie viel plastischer. Außerdem sind so dynamische Lichter, Partikel, Animationen und andere Dinge möglich, die eine statische Textur nicht leisten kann.

Mit diesem Wissen im Hinterkopf haben wir entschieden die Skyboxen für unsere Engine mit dem Cinematic Editor Tool zu gestalten. Dieses Tool wurde bis jetzt noch nicht veröffentlicht und es sind nur wenige Details bekannt. Es war ursprünglich dafür gedacht Filmsequenzen (wie den Teaser) in der Game Engine zu rendern, wird jedoch mitlerweile auch für andere Aufgaben wie Partikeleffekte und Ingame-Filmchen genutzt. Im Cinematic Editor können Kameras, Models, Lichter und Partikelemitter platziert und konfiguriert werden um Animationen zu erzeugen. Einige Objekte können auch mit Ereignissen wie Animationen, Sounds oder Kamerawackeln belegt werden.

Cinematic Editor

Die Skyboxen in Spark werden also Videos mit dem Spieler im Zentrum sein. Das bedeutet, dass ein Skybox alle möglichen Dinge enthalten kann. Dieses Feature wurde erst vor kurzem in implementiert und ist noch nicht in aller Tiefe erforscht wurden. Für Modder sollte das aber eine sehr gute Grundlage sein. Wenn ein „Sky Cinematic“ fertig ist, kann man ihn einfach als spezielles Objekt in den Editor einfügen.

In Kürze wird es weitere Details zum Cinematic Editor geben.

Fragen

Fragen können per E-Mail an max@unknownworlds.com geschickt werden. Natürlich auf Englisch! Oder hier auf Deutsch stellen und ich sammle und übersetze die Fragen dann.

Quellen

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>