Sie sind hier
E-Book

Erfolgreiche Spieleentwicklung

Minecraft-Welten erschaffen

AutorAlexander Rudolph
Verlagentwickler.press
Erscheinungsjahr2015
Seitenanzahl119 Seiten
ISBN9783868025491
FormatePUB
KopierschutzWasserzeichen
GerätePC/MAC/eReader/Tablet
Preis3,99 EUR
Der Open-World-Megaseller Minecraft schwimmt nach wie vor auf einer Hypewelle. Alexander Rudolph befasst sich im ersten Kapitel dieses shortcuts mit effizientem Speichermanagement und Dingen wie Ray Casting oder Datenkompression. Im zweiten Kapitel richtet der Autor sein Augenmerk auf die Parallelisierung der Programmabläufe und die ruckelfreie Darstellung mittels OpenGL-Rendering-Techniken der Minecraft-Welt. Anhand einer Demoanwendung werden die wichtigsten Programmabläufe erläutert. Nach dem theoretischen ersten und dem praxisorientierten zweiten Teil wird es im dritten Kapitel kreativ: Dieses befasst sich mit der prozeduralen Landschaftsgestaltung, dem Geheimnis der Zufallszahlen und der Noise-Funktionen (Rauschen). Im vierten Kapitel widmet sich der Autor schließlich den Landschafts- und Vegetationsdarstellungen im Wechsel der Jahreszeiten.

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 der Grafik- und 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 Entwicklung eines Minecraft-Klons – Grundlegende Spielmechaniken

Der Hype um den Open-World-Megaseller Minecraft ist nach wie vor ungebrochen. Was aber verbirgt sich unter der Motorhaube eines solchen Spiels? Bevor wir uns zu einem späteren Zeitpunkt mit fortgeschrittenen Themen wie der Landschaftsgenerierung oder der Implementierung von komplexen Beleuchtungsmodellen widmen werden, müssen wir uns zunächst mit den grundlegenden Spielmechaniken auseinandersetzen. Am Beispiel einer „einfachen“ Demoanwendung erörtern wir die wichtigsten Programmabläufe, befassen uns mit einem effizienten Speichermanagement und zeigen, wie sich blockbasierte Spielewelten in Echtzeit modifizieren lassen.

Als am 17. Mai 2009 die erste Version von Minecraft (Classic) das Licht der Welt erblickte, hatte wohl noch niemand zu träumen gewagt, dass sich Microsoft fünf Jahre später die für die Entwicklung verantwortliche Spieleschmiede Mojang für sage und schreibe 2,5 Milliarden Dollar einverleiben würde. Ganz im Gegenteil, nicht wenige Spieler und Entwickler hatten das Spiel geradezu belächelt, denn im Vergleich zu den detailreichen Umgebungen, wie man sie aus zahlreichen Triple-A-Spielen kennt, wirkten die blockbasierten Landschaften anfangs noch ein wenig – drücken wir es mal freundlich aus – gewöhnungsbedürftig (Abb. 1.1 und 1.2).

Wer sich mit der puristisch wirkenden Darstellung nicht zufriedengeben möchte, dem steht es heutzutage zwar frei, die Spielewelt mittels diverser High-Resolution-Texture-Packs oder Shader-Modifikationen (Beispiel: Sonic Ether’s Unbelievable Shaders) optisch aufzuwerten, natürlich wirkende Formen lassen sich auf diese Weise jedoch nicht ins Spiel integrieren.

Abbildung 1.1: Blockbasierte Spielewelt (frühe Demoprogrammversion)

Abbildung 1.2: Ein weiteres Beispiel für eine blockbasierte Spielewelt, entnommen aus einer frühen Demoprogrammversion

Aber warum eigentlich sollte man dies überhaupt wollen? Selbst die schönste Umgebung wirkt auf Dauer eintönig und langweilig, wenn man sie nicht nach den eigenen Vorstellungen formen und verändern kann. Andererseits: Stören sich Kinder etwa an der begrenzten Formenvielfalt bei Bauklötzen und Legosteinen? Oder hält es sie gar vom Spielen ab? Nein, natürlich nicht, ganz im Gegenteil! Zu viele Formen hemmen die Kreativität und bremsen ein jedes Bauvorhaben aus. Anstatt einfach mal drauf loszubauen, denkt man viel zu häufig darüber nach, ob man lieber den einen oder doch lieber den anderen Typ Stein verwenden sollte.

Aber gilt das zuvor Gesagte denn ausschließlich für Kinder? Zugegeben, auf den ersten Blick scheint Minecraft kein Spiel für Erwachsene zu sein. Es ist weder ein Sport-, Kriegs-, Handels- oder Strategiespiel, geschweige denn ein Egoshooter. Doch der Wettkampfgedanke wird in vielen Spieletiteln zuweilen mächtig überstrapaziert. Gleiches gilt für die Actionsequenzen. Es muss nicht jedes Mal gleich alles explodieren. Nicht immer bedarf es eines Gegners, den es zu besiegen gilt. Es soll auch schon mal vorkommen, dass ein Spieler auf der Suche nach Entspannung ist. Und am Beispiel von Minecraft wird mehr als deutlich, dass Entspannung keinesfalls mit Langeweile gleichzusetzen ist. Spiele ohne übergeordnetes Spielziel können gleichzeitig entspannend wie auch abwechslungsreich sein. An einem Tag möchte man als Spieler vielleicht lediglich ein bislang unbekanntes Höhlensystem erkunden, während an anderen Tagen der Nachbau einer kompletten Stadt oder eines Fantasy-Settings (beispielsweise Mittelerde) auf dem Programm steht.

Minecraft aus der Perspektive eines Programmierers

An der Tatsache, dass ein Spiel wie Minecraft eine große Spielerschaft über einen langen Zeitraum hinweg in den Bann zu ziehen vermag, bestand wohl spätestens einige Monate nach der Veröffentlichung der ersten, noch unfertigen Version keinerlei Zweifel mehr. Das Minecraft-Virus befällt jedoch keinesfalls nur Gamer. Nicht zuletzt durch die Vielzahl von YouTube-Videos, die einem das Potenzial dieses Spiels offenbaren, wird man als Programmierer geradezu angestachelt, sich auch einmal mit den technischen Aspekten des Programms zu befassen. Insbesondere für angehende Spieleprogrammierer stellt Minecraft ein interessantes Anschauungsobjekt dar, zeigt es doch, was ein Soloentwickler so alles auf die Beine stellen kann (zur Erklärung, am Anfang der Entwicklung handelte es sich zunächst um ein „nerdiges“ Ein-Mann-Projekt).

Die Fertigkeiten der Spieleentwicklung erlernt man am besten anhand von praktischen Beispielen. Weltraumspiele gelten in diesem Zusammenhang gemeinhin als besonders anfängerfreundliche Projekte, um sich mit den Grundlagen der Spielmechanik und der 3-D-Programmierung vertraut zu machen. Die wirklichen Herausforderungen, die etwa in der Darstellung von detaillierten, abwechslungsreichen Planetenoberflächen, weitläufigen Asteroidenfeldern oder volumetrischen Nebelwolken bestehen, kann man sich hingegen für einen späteren Zeitpunkt aufsparen. Doch ist diese Vorgehensweise wirklich so klug? Die Gefahr, dass man sich auf diese Weise in eine Sackgasse programmiert, ist jedenfalls nicht von der Hand zu weisen. Dinge, wie eine performante Szenendarstellung oder ein effizientes Speichermanagement sollten nicht auf die lange Bank geschoben werden. Gerade in diesen Bereichen kann man bei der Entwicklung eines Minecraft-Klons eine Menge lernen. Betrachten wir zum Einstieg einmal eine relativ kleine blockbasierte Welt mit einer Länge und Breite von jeweils 2 000 und einer Höhe von 256 Metern. Sofern nun die einzelnen Blöcke eine Kantenlänge von jeweils einem Meter besitzen, bietet unsere Spielewelt genügend Raum für 1 024 Milliarden Blöcke (2 000*2 000*256). Würde man nun beispielsweise für die Beschreibung der jeweiligen Blockeigenschaften (hierzu zählen selbstverständlich auch Luft- und Wasserblöcke) eine einzelne 1-Byte-Variable vom Datentyp unsigned __int8 verwenden (die Position eines Blocks in der Spielewelt ergibt sich aus der Position im zugehörigen unsigned __int8-Array), so kämen wir in der Summe auf einen Gesamtspeicherbedarf von 1 024 GB. Es ist daher abzusehen, dass wir bei deutlich größeren Welten unweigerlich mit einem Speicherproblem zu kämpfen hätten. Für die Lösung dieses Dilemmas bieten sich nun zwei Vorgehensweisen an, die selbstverständlich auch miteinander kombiniert werden können. Beim Datenstreaming lädt man lediglich die Daten der sichtbaren Bereiche der Spielewelt von der Festplatte in den Hauptspeicher, während man die nicht mehr benötigten Daten im Gegenzug aus dem Hauptspeicher entfernt. Um die hierbei anfallenden Datenmengen sowohl auf der Festplatte als auch im Hauptspeicher zu begrenzen, bietet sich darüber hinaus der Einsatz eines geeigneten Kompressionsverfahrens an.

Eine möglichst performante (ruckelfreie) Darstellung der blockbasierten Spielewelt ist ebenfalls alles andere als trivial und ohne Einbeziehung moderner Rendering-Techniken so gut wie unmöglich. In diesem Zusammenhang sind der Einsatz von Geometry Instancing zur Verringerung der Anzahl der erforderlichen Render-Aufrufe (Draw Calls) oder die Verwendung von Texture Arrays zur Vermeidung unnötiger Texturwechsel praktisch alternativlos. Auch die vorausgehenden Sichtbarkeitsberechnungen sind nicht ganz ohne. Im ersten Schritt müssen wir zunächst die Oberflächenblöcke identifizieren, die im Unterschied zu den von allen sechs Seiten vollständig verdeckten inneren Blöcken zumindest potenziell sichtbar sind. Im Anschluss daran können wir die jeweils sichtbaren Flächen (es können unter keinen Umständen alle sechs Flächen gleichzeitig sichtbar sein) der Oberflächenblöcke ermitteln und darstellen.

Darüber hinaus bietet einem die Entwicklung eines Minecraft-Klons die Möglichkeit, sich mit einer Vielzahl von weiteren Aspekten der Spieleentwicklung auseinanderzusetzen. Fassen wir zusammen:

  • Das Ziel der Entwicklung besteht in der Erschaffung einer mittels Ray Casting dynamisch veränderbaren, blockbasierten Spielewelt mit dynamischen Tag-Nacht-Wechseln, unterschiedlichen Wetterverhältnissen sowie einer realistischen Himmelsdarstellung samt volumetrischer (dreidimensionaler) Wolken.
  • Die Generierung der Landschaften, Höhlensysteme und Vegetationszonen erfolgt mithilfe unterschiedlicher prozeduraler Techniken.
  • Der Spieler hingegen ist für alles Architektonische verantwortlich – von der Errichtung des ersten Gebäudes bis hin zur Planung und dem Bau ganzer Städte.
  • Damit sich eine derart komplexe Spielewelt ruckelfrei darstellen lässt, verteilen wir die hierfür erforderlichen Berechnungen (Datenstreaming, Datenkompression, Sichtbarkeitstests usw.) auf mehrere Worker-Threads (Stichwort: Parallelisierung).
  • Darüber hinaus nutzen wir unser Demoprogramm im weiteren Verlauf als eine Art Testumgebung für die Implementierung verschiedener komplexer Beleuchtungsmodelle.

Datenkompression – der Schlüssel zur Effizienz

Kennen Sie eventuell den im Jahr 1999 erschienenen ­Science-Fiction-Film The 13th Floor oder vielleicht die im Jahr 1964 veröffentlichte Romanvorlage Simulacron-3 des Autors Daniel F. Galouye? Im Film erschaffen Computerwissenschaftler eine Simulation der Stadt Los Angeles, die so lebensecht wirkt, dass selbst die Bewohner denken, sie seien real und würden im Jahr 1937 leben. Was anfangs noch als großer Triumph der Wissenschaft gefeiert wurde, entwickelt sich für die Wissenschaftler im weiteren Verlauf des Films zu einem regelrechten Albtraum, denn auch sie müssen erkennen, dass ihre eigene...

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

FESTIVAL Christmas

FESTIVAL Christmas

Fachzeitschriften für Weihnachtsartikel, Geschenke, Floristik, Papeterie und vieles mehr! FESTIVAL Christmas: Die erste und einzige internationale Weihnachts-Fachzeitschrift seit 1994 auf dem ...

Berufsstart Gehalt

Berufsstart Gehalt

»Berufsstart Gehalt« erscheint jährlich zum Sommersemester im Mai mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

Card Forum International

Card Forum International

Card Forum International, Magazine for Card Technologies and Applications, is a leading source for information in the field of card-based payment systems, related technologies, and required reading ...

DULV info

DULV info

UL-Technik, UL-Flugbetrieb, Luftrecht, Reiseberichte, Verbandsinte. Der Deutsche Ultraleichtflugverband e. V. - oder kurz DULV - wurde 1982 von ein paar Enthusiasten gegründet. Wegen der hohen ...

building & automation

building & automation

Das Fachmagazin building & automation bietet dem Elektrohandwerker und Elektroplaner eine umfassende Übersicht über alle Produktneuheiten aus der Gebäudeautomation, der Installationstechnik, dem ...

VideoMarkt

VideoMarkt

VideoMarkt – besser unterhalten. VideoMarkt deckt die gesamte Videobranche ab: Videoverkauf, Videoverleih und digitale Distribution. Das komplette Serviceangebot von VideoMarkt unterstützt die ...