Posted on Leave a comment

Spieleentwicklung

Spieleentwicklung

Viele Leute lernen Programmieren mit dem Ziel, ein eigenes Computerspiel zu entwickeln oder die Spieleentwicklung sogar zu ihrem Beruf zu machen. Ein Spiel zu programmieren ermöglicht es, seine eigene Kreativität auszuleben, Welten zu entwickeln oder eine Geschichte zu erzählen. Dazu muss man allerdings wissen wie ein Spiel überhaupt funktioniert, wie man Grafiken designed und wie man einen Spielablauf programmiert. Damit kann der Einstieg, gerade für Programmieranfänger, schwer oder herausfordernd wirken. In diesem Artikel wollen wir daher klären, wie genau die Spieleentwicklung sowohl für kleine als auch große Spiele abläuft und danach auf einige Möglichkeiten, sein eigenes Spiel zu entwickeln, eingehen.

Wie werden Spiele entwickelt?

Zur Spieleentwicklung gehören viele Aspekte wie Spieldesign und Konzeption, das Erstellen von Grafiken, das Programmieren des Spielablaufs und insbesondere für Spiele, die veröffentlicht werden sollen, natürlich auch Test, Marketing und Publikation. Die Phasen der Entwicklung eines konkreten Spiels bestehen typischerweise aus Planung, Entwicklung beziehungsweise Umsetzung und Test.

In der Planungsphase wird ein sogenanntes Game-Design-Dokument erstellt. Game-Design bezeichnet die theoretische Konzeption von Spielwelt und Regeln, auch unter Betrachtung der Zielgruppe und Marketingaspekten. Das Game-Design-Dokument beinhaltet neben den Ergebnissen dieser Konzeption zumeist Prototypen, mit denen ein grundsätzlicher Eindruck des spätere Gameplays gewonnen werden kann. Ein gutes und durchdachtes Designdokument ist notwendig, um Denkfehler in der Spiellogik frühzeitig festzustellen und zu beheben – denn später, wenn die Programmierung bereits begonnen hat, können Fehler kostspielig werden.

Die Planung sollte sich außerdem mit technischen Aspekten beschäftigen, wie der Zielplattform, der Steuerung oder ob ein Multiplayer-Modus geplant ist. Diese Informationen sind relevant für Kostenabschätzung, Zeitplan und die tatsächliche Umsetzung. Soll das Spiel verschiedene Level haben wird außerdem ein Level-Design benötigt.

Nach der Planung des Spiels erfolgt die Umsetzung, die meist den größten Teil der Zeit einnimmt. Ob die Umsetzung einem Wasserfallmodell oder der agilen Methode folgt, ist von Projekt zu Projekt unterschiedlich. Agile Methoden mit iterativem Vorgehen setzen sich in der Softwareentwicklung in den letzten Jahren allerdings immer stärker durch. Zur Umsetzung gehört das Erstellen von 3D-Modellen, Sound-Effekten, Animationen etc. und natürlich die Programmierung des Spielablaufs.

Bereits während der Programmierung werden einzelne Komponenten mit Unit-Tests getestet. Aber auch automatische Integrations- und Systemtests sollten in jedem Softwareprojekt ihren Platz haben. Bevor das Spiel auf den Markt kann werden außerdem zumeist Black Box Tests durchgeführt. Dabei wird das Spiel in seiner Gesamtheit von Entwicklern oder eigens dafür bezahlten Testern ohne Vorwissen über die einzelnen Komponenten getestet. Die Software ist also eine „schwarze Box“, deren Innenleben nicht bekannt ist.

Besteht das Spiel diese Tests, können Alpha und Beta Tests folgen. Dabei wird das Spiel von echten Spielern gespielt, die dem Hersteller Feedback geben können. Die Alpha- und Beta-Phase eines Spiels können sowohl closed (nur mit Einladung) oder open (für jeden zugänglich) sein. Sie dienen nicht nur dem Feststellen von Programmfehlern, sondern auch von Problemen im Balancing oder Usability.

Java Programmieren für Einsteiger 14.99 € Verfügbar In den Warenkorb

Wie funktioniert ein Spiel?

Konzeption, Umsetzung, Test und Veröffentlichung sind also die Phasen der Spieleentwicklung. Doch wie genau funktioniert ein Spiel selbst eigentlich?

Auf unterster Ebene eines Spiels stehen Treiber, die Zugriff auf die Hardware ermöglichen und hardwarenahe APIs (dt. Schnittstellen) wie DirectX oder OpenGL. Diese werden von einer sogenannten Game-Engine oder Spiel-Engine genutzt. Eine Spiel-Engine ist ein Framework beziehungsweise eine Art Grundgerüst, die die wichtigsten Aufgaben übernimmt und aus verschiedenen Teilen besteht. Dazu gehören:

  • Eine Graphics-Engine, die das Rendering des Spiels beziehungsweise die graphische Darstellung übernimmt. Sie hat Funktionen, mit denen Texturen, 3D-Modellen und Sprites (Bilder für Spezialeffekte) geladen, verwaltet und angezeigt werden können. Auch Animationen, Textausgabe oder Shader-Systeme gehören hierzu
  • Frameworks zu Eingabeverarbeitung
  • Eine Physics-Engine, die Berechnungen für physikalisches Verhalten ausführt. An viele Spiele werden hohe Anforderungen an realistisches Verhalten von Objekten gestellt. Da die exakte Berechnung sehr ressourcenintensiv sein kann, geht hier Effizienz über Exaktheit
  • Eine Sound-Engine
  • Frameworks für Anbindung an das Netzwerk
  • Die Bereitstellung der Game-Loop (was genau das ist, klären wir gleich)

Game-Engines sind damit das Herzstück eines jeden Computerspiels. Sie haben den Vorteil, dass der Entwickler für generische Aspekte der Spieleentwicklung, wie das Laden von Graphiken oder das Verarbeiten von Input, keinen eigenen Code schreiben muss, sondern sich auf das Framework verlassen kann. Daher kann er sich auf das Implementieren des spielspezifischen Codes konzentrieren. Game-Engines sind nicht spielspezifisch, sondern können mehr oder minder universell eingesetzt werden.

Neben dieser Programmierung müssen für ein Spiel außerdem Graphiken modelliert werden. Für 3D-Modelle kommen dabei unter anderem Drahtgittermodelle oder Modelle auf Basis von Polygonen in Frage. Außerdem werden 2D-Bilder, sogenannte Texturen, entwickelt, die dann die Oberfläche verfeinern.

Was ist die Game-Loop?

Wir sind eben schon einmal auf den Begriff der Game-Loop gestoßen. Jedes Computerspiel durchläuft die Schritte Eingabe, Verarbeitung und Ausgabe immer und immer wieder. Dieses EVA-Prinzip ist eines der Grundprinzipien der Datenverarbeitung. Im ersten Schritt macht der Nutzer eine Eingabe, beispielsweise eine Maussteuerung oder einen Tastenklick. Auch Informationen, die über das Internet von anderen Spielern kommen, müssen als Eingabe beachtet werden. Anschließend werden die Eingangsdaten verarbeitet, indem Spielregeln ausgeführt, Spieler bewegt oder Animationen berechnet werden. Die Ergebnisse werden dann als Ausgabe an den Nutzer gegeben.

In einem einfachen Puzzle oder Quizspiel müssen Verarbeitung und Ausgabe immer nur nach einer Eingabe passieren und sind nicht rechenintensiv. Bei einem animierten Spiel hingegen sollte dieser Prozess mindestens 24 Mal pro Sekunde ablaufen, damit das Spiel flüssig läuft – ohne, dass wie beim EVA-Prinzip der Ablauf durch eine Nutzereingabe ausgelöst wird. Dieser Prozess wird, da er in einer Schleife permanent durchlaufen wird, Game-Loop genannt.

Ein eigenes Spiel entwickeln

Nachdem nun die Grundzüge, wie ein Spiel funktioniert und entwickelt wird, klar sind, stellt sich die Frage wie man selbst ein eigenes Spiel entwickeln kann. Obwohl Spieleprogrammierung aus vielen einzelnen Teilen besteht, sind vorwiegend diese drei Punkte relevant:

  • Die Spielidee
  • Die Auswahl einer Programmiersprache
  • Der Auswahl einer Game-Engine

Die Spielidee und Konzeption

Insbesondere das erste Spiel, das man entwickelt, sollte nicht zu komplex sein. Wie komplex die Entwicklung sein wird, hängt zuerst einmal vom Genre ab. Ein Quiz oder 2D-Puzzle ist beispielsweise deutlich einfacher zu implementieren als ein 3D-Spiel, das Animationen und Physics benötigt. Auch die Plattform, für die das Spiel gedacht ist, ist relevant: Anforderungen an ein mobiles Spiel sind anders als an eine Konsole oder den Computer. Für die Steuerung stehen verschiedene Varianten wie Peiltasten und Tastatur, Maus, Joystick, Gamepad oder sogar Lenkräder zu Verfügung. Auch diese haben Auswirkung auf die Komplexität bei der Entwicklung.

Für ein kommerzielles Computerspieler schreiben meist mehrere Programmierer einige Millionen Zeilen Quellcode – eine große Aufgabe, die viel Planung erfordert. Und auch, wenn es für ein Einzelperson möglich ist, ein Indie-Spiel oder eine kommerzielle App zu schreiben, sollte das erste Projekte eher ein kleines Spiel mit 2D-Grafik mit dem Hauptziel, Erfahrung zu sammeln, sein. Ein zu großes oder komplexes Projekt kann nämlich schnell zu Frustration führen.

Wenn eine Spielidee gefunden wurde, sollte man sich zuerst mit der Konzeption beschäftigen und die eben beschriebenen Fragen nach Zielplattform oder Steuerung beantworten, sowie das Spielziel und gegebenenfalls die Storyline genau festlegen. Es ist sinnvoll, sich vorab Gedanken darüber zu machen, in welcher Reihenfolge einzelne Aspekte des Spiels implementiert werden müssen.

Die Auswahl der Programmiersprache

Neben dem Spielkonzept ist auch die Auswahl der Programmiersprache wichtig. Die Entscheidung hat Auswirkungen darauf, welche Game-Engine verwendet werden kann und wie komplex die Programmierung sein wird. Folgende Sprachen spielen in der Spieleprogrammierung eine Rolle:

  • Assembler, als schnelle und hardwarenahe Sprache. Ein Nachteil von Assembler ist die langsame Entwicklung, vergleichsweise wenige Tools und die Komplexität für Anfänger. Obwohl die Sprache früher sehr wichtig war, wird sie mittlerweile nicht mehr häufig für die Spieleentwicklung verwendet.
  • C ist eine bekannte Sprache mit zahlreichen Tools, aber ohne integrierte Objektorientierung.
  • C++ ist eine sehr komplexe, aber effiziente und ebenfalls hardwarenahe Sprache mit Objektorientierung. Ein Nachteil ist, dass die Sprache keine integrierte Garbage Collection und keinen Schutz vor Speicherlecks hat. Sie wird von einigen Spiel-Engines unterstützt.
  • C# ist eine objektorientierte Sprache die relativ bekannt und einfach zu verwenden ist, sie hat allerdings einen hohen Speicherverbrauch. Sie wird von ebenfalls von vielen Game-Engines unterstützt.
  • Java ist eine objektorientierte Sprache, die portabel und eine der wichtigsten Sprachen für die Android-Spieleentwicklung ist.
  • Scriptsprachen wie Python oder Lua werden häufig nur für das Scripting des Gameplays aber nicht für den Quellcode des Spiels selbst verwendet.
  • Shader-Sprachen wie Cg, HLSL, GLSL werden ebenfalls nicht für den Hauptcode verwendet, sind aber unverzichtbar um 3D-Spiele zu entwickeln.

Auswahl der Game-Engine

Nicht jede Game-Engine erfordert es, dass man tatsächlich programmieren kann. Einige Engines wie GameMaker haben ihre eigene Sprache, um ohne Programmierkenntnisse loszulegen. Für komplexere Spiele und mächtigere Engines wird man aber nicht um das Lernen einer Programmiersprache umhinkommen. Auch wenn manche Engines mehrere Sprachen unterstützen, gibt es meist eine Hauptsprache, die man für die Entwicklung nutzen sollte. Wir wollen kurz drei Engines vorstellen, die für Einsteiger und Privatpersonen geeignet sind.

GameMaker

GameMaker ist wie eben bereits erwähnt eine Engine, für die man nicht unbedingt Programmieren können muss. Die Engine hat eine klar strukturierte Benutzeroberfläche, die beispielweise das Zuweisen von Ereignissen und Aktionen über Drag and Drop ermöglicht. Zudem untertsützt es für die Entwicklung eines Spiels seine eigene Skriptsprache, die Game Maker Language. Die Engine ist gut für Einsteiger und Jump’n’Runs oder Puzzlespiele geeignet, untertsützt aber keine 3D-Spiele.

Unreal Engine

Die Unreal Engine ist eine Game-Engine für die Entwicklung von 3D-Spielen. Sie besteht aus einer Grafik-Engine, der Skriptsprache UnrealScript und Hilfsprogrammen wie einem Leveleditor. Sie hat eine Blueprint Funktion, mit der der Spielablauf als virtueller Graph modelliert werden kann. Da die Unreal Engine ansonsten nur die Sprache C++ unterstützt und einen sehr großen Funktionsumfang hat, ist die für Einsteiger nicht unbedingt geeignet, für erfahrenen Entwickler ist sie aber ein sehr mächtiges Werkzeug. Die Unreal Engine ist seit 2015 kostenfrei für Privatpersonen und Projekte mit bis zu 3.000€ Umsatz.

Unity Engine

Die Unity Engine ist ebenfalls für 3D-Spiele und außerdem für so gut wie jede Zielplattform geeignet und gilt als sehr einsteigerfreundlich. Sie unterstützt die Programmiersprachen JavaScript und C#. Insbesondere C# ist als weitverbreitete, objektorientierte Programmiersprache für die Programmierer interessant. Die Unity Engine ist für Privatpersonen kostenlos.

C# Programmieren für Einsteiger 13.90 € Verfügbar In den Warenkorb

Tutorials, Literatur und Studiengänge

Wer immer noch unsicher ist, ob er ein eigenes Spiel entwickeln kann, findet im Internet viele kostenlose Tutorials um mit verschiedenen Engines ein eigenes, kleines Spiel von vorne bis hinten zu implementieren. Der Vorteil eines solchen Tutorial ist es, dass man verschiedene Konzepte und den Umgang mit einer Game-Engine an einem praktischen Beispiel lernt und das Gelernte dann in ein eigenes Projekt übertragen kann. Ein eigenes Konzept ist dazu erstmal nicht notwendig. Zuletzt gibt es mittlerweile sogar Studiengänge und viele Bücher, die sich mit Game Development und Design beschäftigen.

Fazit

Spieleprogrammierung ist eine hervorragende Möglichkeit, seine Kreativität auszuleben und eigene Ideen umzusetzen. Gleichzeitig hilft es, die eigenen Programmierfähigkeiten zu verbessern und kann sogar zum Beruf werden.

Grundsätzlich sollte man, bevor man mit dem Programmieren beginnt, das Spielprinzip und die -idee, die Steuerung, die Zielplattform und den Spielablauf konzipieren und einen Zeitplan erstellen. Insbesondere das erste Spiel sollte nicht zu komplex sein, sondern vor allem das Ziel haben, Erfahrung zu sammeln.

Für die Umsetzung muss weiterhin eine Programmiersprache und eine Game-Engine gewählt werden. Die Game-Engine ist der zentrale Bestandteil eines jeden Spiels und bietet ein Framework um unter anderem Grafiken zu laden und anzuzeigen, Eingaben zu verarbeiten und die Game-Loop auszuführen. Dadurch muss sich der Programmierer nicht mehr mit dem Setup des Spiels beschäftigen, sondern kann sich auf den spielspezifischen Code konzentrieren. Viele Spiele benötigen für ihre Umsetzung außerdem Graphiken oder Sounds.

Gerade für Einsteiger kann es nützlich sein, erst ein Tutorial für eine Game-Engine zu machen, um die wichtigsten Konzepte kennenzulernen und dann auf das eigene Spiel zu übertragen.

Ähnliche Produkte

Schreibe einen Kommentar

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