Sie sind hier
E-Book

Erfolgreiche Spieleentwicklung

OpenGL in Space

AutorAlexander Rudolph
Verlagentwickler.press
Erscheinungsjahr2014
Seitenanzahl80 Seiten
ISBN9783868025095
FormatePUB
KopierschutzWasserzeichen
GerätePC/MAC/eReader/Tablet
Preis2,99 EUR
Die Entdeckung und Erforschung unbekannter Welten zählt zu den interessantesten Aspekten in Science-Fiction-Filmen, -Serien und Weltraumspielen. Das erste Kapitel des shortcuts vermittelt Ihnen einen Einblick, wie sich unzählige dieser fremdartigen Planeten in Echtzeit generieren und darstellen lassen. Das zweite Kapitel steht im Zeichen des heliozentrischen Weltbilds, es wird nichts Geringeres als ein vollständiges Sonnensystem erschaffen. Da kinematografische Effekte zu den Must-have-Features moderner Computerspiele gehören, geht der Autor in Kapitel 3 der Frage nach, wie sich Motion Blur, Hitzeflimmern, Depth of Field, God Rays und Lens Flares in eine bestehende Deferred Rendering Pipeline integrieren lassen. Kapitel 4 stellt abschließend eine Methode vor, mit deren Hilfe sich eine Vielzahl von 3-D-Modellen schnell und unkompliziert erzeugen lässt.

Alexander Rudolph schrieb zwei Bücher über das Thema Spieleprogrammierung mit DirectX für den Markt+Technik Verlag, eine Artikelserie über die Spieleentwicklung mit OpenGL und OpenAL und war an der Entwicklung sowohl der Grafik- wie auch der Physik-Engine für das Spiel Söldner 2 beteiligt. In regelmäßigen Abständen veröffentlicht er auf seiner Webseite spieleprogrammierung.net Artikel und Tutorials über den Einsatz von OpenCL sowie der modernen OpenGL Spezifikationen 3.x und 4.x und ist als freier Mitarbeiter im Bereich 3-D-Programmierung tätig. Seine E-Books 'Spieleentwicklung - Mathematik mit Fun-Faktor' und 'Spieleentwicklung - OpenGL mit Fun-Faktor' vermitteln Einblicke in die Welt der Spieleprogrammierung.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

1 Die Renaissance der Weltraumspiele

Weltraumspiele muten wie ein Relikt aus vergangenen Zeiten an. Von wenigen Ausnahmen einmal abgesehen – hierzu zählen die Spiele aus dem X-Universum sowie Star Trek und Eve Online – galt das Spielegenre bereits seit vielen Jahren als klinisch tot. Das dachte man zumindest so lange, bis Chris Roberts für seine Space Opera Star Citizen sage und schreibe 10 353 618 US-Dollar durch Crowdfunding einsammeln konnte. David Brabens Open-World-Spiel Elite Dangerous rangiert mit immerhin noch respektablen 1 790 361 Britischen Pfund (ca. 2 668 350 US-Dollar) weit abgeschlagen auf dem zweiten Platz.

Bei Licht betrachtet ist das prinzipielle Interesse der Menschen an solchen Spielen alles andere als überraschend. Die Faszination des Weltraums und des Universums geht sogar so weit, dass man sich nahezu täglich eine oder gar mehrere Dokumentationen über extrasolare Planeten bis hin zu schwarzen Löchern im Fernsehen anschauen kann. Tolle Bilder sind jedoch noch lange kein Garant für ein tolles Spielerlebnis. Viele Weltraumspiele sind – leider, leider und nochmals leider – schlicht und ergreifend langweilig. Missionen nach dem Schema „Fliege von Punkt A nach Punkt B und zerstöre dort die feindlichen Schiffe“ sind auf Dauer wenig motivierend, geschweige denn ein Kaufgrund. Für den langfristigen Spielspaß entscheidend ist eine lebendige Spielewelt mit einer Vielzahl von Sonnensystemen, auf deren wirtschaftliches und politisches Geschehen man aktiv Einfluss nehmen kann. Hierbei sollte es nicht darum gehen, einfach nur reich zu werden – Geld um des Geldes wegen zu scheffeln, ist auf Dauer nicht wirklich motivierend. Das langfristige Ziel muss sein, mithilfe des vielen Geldes in die politische Willensbildung eingreifen zu können. Ein Spieler sollte irgendwann dank seines Reichtums genügend Einfluss besitzen, um höchstselbst interstellare Kriege zwischen verschiedenen Völkern auslösen oder beenden zu können.

Was die technische Umsetzung betrifft, wirkten Weltraumspiele lange Zeit grafisch altbacken. Es gab keine interessanten Landschaften zu erkunden, lediglich Weltraum-Hintergrundtapeten sowie Planeten und Monde, deren Oberflächen aus der Nähe betrachtet verwaschen und unscharf wirkten. Dank Geometry Instancing ist es heutzutage jedoch problemlos möglich, volumetrische Nebelwolken und weitläufige Asteroidenfelder zu rendern, und auch die Darstellung von realistisch wirkenden Planetenoberflächen mitsamt der sie umgebenden Atmosphäre hat in den letzten Jahren enorme Fortschritte gemacht – in der diesjährigen Mai-/Juni-Ausgabe des Entwickler Magazins sind wir bereits auf die atmosphärischen Streuprozesse (Rayleigh- und Mie-Streuung von Sonnenlicht) und die daraus resultierenden Himmelsfarben eingegangen.

Planetentexturen oder prozedurale Oberflächen – das ist hier die Frage

Nicht ganz zu unrecht gelten Weltraumspiele vielen Programmierern als idealer Einstieg in die Spieleentwicklung, denn die Darstellung von texturierten Raumschiffmodellen und Planeten ist ohne Frage deutlich einfacher als die Implementierung einer vollwertigen Terrain-Engine. Über die künstlerische Seite muss man sich am Anfang ebenfalls nicht den Kopf zerbrechen, denn kostenlos verwendbare Texturen der Planeten und Monde unseres Sonnensystems findet man im Internet zuhauf. Mit den ersten Schwierigkeiten ist erst bei der Darstellung von extrasolaren Planeten zu rechnen. Früher oder später wird man gezwungen sein, die benötigten Texturen mithilfe eines Bildbearbeitungsprogramms (zum Beispiel mit dem kostenlosen GIMP) in Eigenregie zu erstellen, was insbesondere für den noch ungeübten Grafiker eine recht zeitraubende Angelegenheit ist.

Die nächsten Probleme lassen nicht lange auf sich warten. Irgendwann reift die Erkenntnis, dass sich so große Objekte wie Planeten nur sehr schwer texturieren lassen. Oberflächentexturen, die aus großer Entfernung wirklich gut aussehen, verkommen aus der Nähe betrachtet zu einem unscharfen, verwaschenen Pixelbrei. Texturen mit deutlich größerer Auflösung schaffen nur bedingt Abhilfe, denn sie beanspruchen sehr viele Ressourcen und müssen bei Bedarf dynamisch in den Grafikspeicher geladen beziehungsweise aus diesem entfernt werden – und zwar so, dass der Spieler möglichst nichts davon mitbekommt.

Sofern ein Spiel auch ohne die altbekannten Planeten (Erde, Mars, Jupiter usw.) auskommt, sollte man auf die Verwendung von klassischen Oberflächentexturen zugunsten prozeduraler Techniken verzichten. Moderne Grafikkarten bieten mehr als genügend Leistungsreserven, um Planetenoberflächen in Echtzeit zu erzeugen, die sowohl aus der Distanz wie auch aus der Nähe betrachtet gleichermaßen interessant erscheinen. Auf die genauen Details werden wir im weiteren Verlauf dieses Kapitels noch ausführlich eingehen. An dieser Stelle werfen wir zunächst einen Blick auf das den Berechnungen zugrunde liegende Funktionsprinzip:

  • Die Erzeugung der Oberflächendetails erfolgt mithilfe von geeigneten mathematischen Funktionen und/oder auf Basis der in einer Noise-(Rausch)-Textur kodierten Zufallswerte. Indem man nun diese Texturen mehrfach und mit unterschiedlich vielen Wiederholungen auf das Planetenmodell mappt, lassen sich sowohl grobe wie auch feine Oberflächendetails erzeugen. Zur Erklärung: Mit zunehmender Wiederholungsrate werden immer feinere Details sichtbar, da sich der von der Noise-Textur abgedeckte Oberflächenbereich immer weiter verkleinert.
  • Da sich eine große Anzahl unterschiedlicher Planetenoberflächen mithilfe einer weniger Noise-Texturen generieren lässt, können wir diese in Form eines Texture-Arrays (sampler2DArray) an das verwendete Shader-Programm übergeben und im Verlauf des Rendering-Prozesses auf Performance beeinträchtigende Texturwechsel verzichten.
  • Die Charakterisierung einer Planetenoberfläche (Ausprägung der Höhenverläufe, Klimazonen, Wasserflächen etc.) erfolgt mit einer mehr oder weniger großen Anzahl von Oberflächenparametern (benutzerdefinierte Shader-Parameter, so genannte uniform-Variablen).
  • Die Oberflächenberechnung in Echtzeit erfolgt innerhalb eines Fragment-Shader-Programms durch geschicktes Verknüpfen der für jeden Planeten individuell festgelegten Oberflächenparameter mit den im ersten Schritt generierten Oberflächendetails.

3-D-Planetenmodelle

Bei der wohl einfachsten Methode, ein 3-D-Planetenmodell zu definieren, unterteilt man die Kugeloberfläche in n x m Längen- und Breitengrade (beispielsweise in 10°-Schritten) und speichert die Koordinaten der Schnittpunkte der einzelnen Längen- und Breitenkreise in einem Vertex Buffer ab. Für die Darstellung dreidimensionaler bzw. prozeduraler Oberflächen ist das so erzeugte Kugelmodell jedoch ungeeignet, da die Abstände zwischen den benachbarten Vertices zu den Polen hin immer kleiner werden und schließlich gegen null streben. Um nun sicherzustellen, dass die Abstände unabhängig von den jeweiligen Vertex-Positionen stets konstant sind (alle Dreiecke, aus denen das Planetenmodell zusammengesetzt ist, haben dann die gleiche Fläche), leiten sich die in unseren Programmbeispielen dargestellten Planeten, wie in Abbildung 1.1 gezeigt, von einem würfelförmigen 3-D-Modell ab, dessen sechs Flächen aus jeweils n x n Vertices bestehen. Die Umrechnung einer zunächst flachen Würfelfläche in eine Kugelteilfläche können Sie anhand von Listing 1.1 nachvollziehen.

Abb. 1.1: Würfelbasierte 3-D-Planetenmodelle mit unterschiedlicher Vertexanzahl

for(rowNr = 0; rowNr < numVerticesPerRowORColumn; rowNr++)
{
for(columnNr = 0; columnNr < numVerticesPerRowORColumn; columnNr++)
{
VertexID = rowNr*numVerticesPerRowORColumn+columnNr;

tempVector.x = VertexArray[VertexID].PosX;
tempVector.y = VertexArray[VertexID].PosY;
tempVector.z = VertexArray[VertexID].PosZ;

D3DXVec3Normalize(&tempVector, &tempVector);

VertexArray[VertexID].PosX = tempVector.x;
VertexArray[VertexID].PosY = tempVector.y;
VertexArray[VertexID].PosZ = tempVector.z;

VertexArray[VertexID].NormalX = tempVector.x;
VertexArray[VertexID].NormalY = tempVector.y;
VertexArray[VertexID].NormalZ = tempVector.z;
}}

Listing 1.1: Umrechnung einer flachen Würfelfläche in eine Kugelteilfläche

Gasgiganten

„Reproduktion natürlicher Oberflächenmuster mithilfe von mathematischen Funktionen“ – die wissenschaftliche Erklärung dessen, womit wir uns in diesem Kapitel beschäftigen, verheißt wenig Gutes für alle Nichtmathematiker unter uns. Und in der Tat, wenn Sie sich mit den nachfolgenden Fragment-Shader-Programmen befassen, werden Sie sich des Öfteren darüber wundern, warum ausgerechnet diese oder jene Formel verwendet wird. Die Antwort darauf ist wenig spektakulär – man bastelt so lange an einer Gleichung herum, bis das Resultat optisch ansprechend ist, oder man probiert gegebenenfalls einfach etwas Neues aus. Am Beispiel der Gasgiganten lässt sich diese Vorgehensweise besonders gut veranschaulichen, da diese lediglich aus farbigen Wolkenbändern bestehen, die parallel zum Äquator den Planeten umspannen (Abb. 1.2).

Abb. 1.2:...

Blick ins Buch

Weitere E-Books zum Thema: Informatik - Algorithmen - Softwaresysteme

Softwaretechnik

E-Book Softwaretechnik
Format: PDF

Software-Projekte geraten oft in Schwierigkeiten: Zeit und Budget werden überschritten; das Projekt tritt auf der Stelle; im schlimmsten Fall wird es ohne Ergebnis abgebrochen. Manche…

Softwaretechnik

E-Book Softwaretechnik
Format: PDF

Software-Projekte geraten oft in Schwierigkeiten: Zeit und Budget werden überschritten; das Projekt tritt auf der Stelle; im schlimmsten Fall wird es ohne Ergebnis abgebrochen. Manche…

Softwaretechnik

E-Book Softwaretechnik
Format: PDF

Software-Projekte geraten oft in Schwierigkeiten: Zeit und Budget werden überschritten; das Projekt tritt auf der Stelle; im schlimmsten Fall wird es ohne Ergebnis abgebrochen. Manche…

Software Engineering

E-Book Software Engineering
Architektur-Design und Prozessorientierung Format: PDF

Das Lehrbuch behandelt alle Aspekte der Software-Entwicklung, besonders aber Methoden und Richtlinien zur Herstellung großer und qualitativ hochwertiger Softwareprodukte. Es vermittelt das zur…

Software Engineering

E-Book Software Engineering
Architektur-Design und Prozessorientierung Format: PDF

Das Lehrbuch behandelt alle Aspekte der Software-Entwicklung, besonders aber Methoden und Richtlinien zur Herstellung großer und qualitativ hochwertiger Softwareprodukte. Es vermittelt das zur…

Weitere Zeitschriften

Ärzte Zeitung

Ärzte Zeitung

Zielgruppe:  Niedergelassene Allgemeinmediziner, Praktiker und Internisten. Charakteristik:  Die Ärzte Zeitung liefert 3 x pro Woche bundesweit an niedergelassene Mediziner ...

cards Karten cartes

cards Karten cartes

Die führende Zeitschrift für Zahlungsverkehr und Payments – international und branchenübergreifend, erscheint seit 1990 monatlich (viermal als Fachmagazin, achtmal als ...

Gastronomie Report

Gastronomie Report

News & Infos für die Gastronomie: Tipps, Trends und Ideen, Produkte aus aller Welt, Innovative Konzepte, Küchentechnik der Zukunft, Service mit Zusatznutzen und vieles mehr. Frech, offensiv, ...

Deutsche Hockey Zeitung

Deutsche Hockey Zeitung

Informiert über das nationale und internationale Hockey. Die Deutsche Hockeyzeitung ist Ihr kompetenter Partner für Ihren Auftritt im Hockeymarkt. Sie ist die einzige bundesweite Hockeyzeitung ...

Deutsche Tennis Zeitung

Deutsche Tennis Zeitung

Die DTZ – Deutsche Tennis Zeitung bietet Informationen aus allen Bereichen der deutschen Tennisszene –sie präsentiert sportliche Highlights, analysiert Entwicklungen und erläutert ...

dima

dima

Bau und Einsatz von Werkzeugmaschinen für spangebende und spanlose sowie abtragende und umformende Fertigungsverfahren. dima - die maschine - bietet als Fachzeitschrift die Kommunikationsplattform ...