Spieleprogrammierung

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung.
UnrealEd, Level-Editor des Unreal Development Kit

Spieleprogrammierung ist ein Teil der Spieleentwicklung und bezeichnet den Vorgang für die Programmierung eines Computerspiels. Computerspiele werden für die verschiedensten Plattformen wie PCs, Spielkonsolen oder Smartphones entwickelt. Die meist verwendete Programmiersprache ist dabei C bzw. C++, da bei der Entwicklung von Spielen vor allem die Geschwindigkeit im Vordergrund steht. Vor allem anspruchsvolle Spiele benötigen einen möglichst direkten und effizienten Zugriff auf die Hardware des Systems, dies gilt insbesondere für die Grafikhardware. Für den PC und mittlerweile auch andere Plattformen wurden spezielle APIs für diesen Zweck entwickelt. Die beiden bekanntesten für den Zugriff auf die Grafikhardware sind DirectX und OpenGL. Da sich diese APIs jedoch nur auf das Notwendigste beschränken, entstanden im Laufe der Zeit viele Programmbibliotheken, wie z. B. Allegro, SDL, SFML, die auf DirectX oder OpenGL aufbauen.

Entwicklungsprozess[Bearbeiten]

Für ein modernes kommerzielles Computerspiel schreiben oft bis zu 30 Programmierer schätzungsweise über eine Million Zeilen Quellcode. Dies erfordert eine gute Projektplanung sowie den Einsatz von Versionsverwaltungssoftware, Bugtrackern und automatisierten Erstellungsprozessen.

Planung[Bearbeiten]

Eine professionelle Spieleprogrammierung richtet sich nach dem Game-Design-Dokument. Aufgrund diesem werden detailliertere Pläne für die Implementierung der Spielfunktionen erstellt. Die meisten Phasen der Entwicklung werden mehrmals durchlaufen, da sich in allen Phasen immer wieder Änderungen ergeben. Auf solche Änderungen schnell reagieren zu können ist von besonderer Wichtigkeit für das ganze Projekt.

Implementierung[Bearbeiten]

Der Quellcode für ein Computerspiel ist im Normalfall nach einem Schichtenmodell aufgebaut:
Am unteren Ende stehen die Treiber, sie bieten den direkten Zugriff auf die Hardware. Darüber steht eine hardwarenahe API, wie z. B. DirectX oder OpenGL die vom wohl wichtigsten Element im ganzen Spielprojekt verwendet wird, der darüberliegenden Spiel-Engine, die sich hauptsächlich aus der Grafik-Engine, einer Sound-Engine, einer möglichen Physik-Engine und weiteren Systemen für Kollision, Animation, Steuerung, Netzwerk, usw. zusammensetzt und den Kern des Spiels bildet. Eine Spiel-Engine wird meist für mehrere Spiele verwendet und ist deshalb in begrenzten Rahmen universell verwendbar. Als über der Spiel-Engine liegenden Teil kann man das Scripting-System betrachten, das eine Scriptsprache zur Verfügung stellt und Teile der Spiel-Engine verwendet, aber die nur in speziellen Bereichen eingesetzt wird. Den Abschluss bildet dann der Quellcode für die Spiele-Logik, der individuell für das jeweilige Computerspiel geschrieben wird.

Zusätzlich werden noch verschiedene Tools programmiert, die vor allem für die Erstellung von grafischen Elementen vorgesehen sind, wie z. B. ein Level-Editor, mit dem Spielewelten erschaffen werden können.

Test[Bearbeiten]

Eine erste spielbare Version des Computerspiels wird Alpha-Version genannt. Eine erste für den Release vorgeschlagene Version nennt sich Beta-Version, wobei die Definitionen dabei allerdings etwas auseinandergehen. Beide Versionen werden von professionellen Spiele-Testern auf Bugs hin geprüft, welche dann von den Programmierern ausgebessert werden, bis es letztendlich zur fertigen Release-Version (RTM-Version) kommt, auch "Going Gold" genannt.

Werkzeuge und Hilfsmittel[Bearbeiten]

Der Quellcode für ein Computerspiel kann mit jedem beliebigen Texteditor geschrieben werden und anschließend mit einem Compiler kompiliert werden. Für einen professionellen und effektiven Arbeitsprozess ist eine integrierte Entwicklungsumgebung, wie MS Visual Studio, Eclipse, Netbeans, usw., die eine Vielzahl an Hilfsmittel für das Entwickeln von Software bieten, unverzichtbar.

Programmiersprachen[Bearbeiten]

Die wichtigsten Entscheidungsfaktoren für die Wahl der zu verwendenden Programmiersprachen sind die Geschwindigkeit, der Arbeitsaufwand, die Zielplattformen und die Sprachen in den verwendeten APIs und Programmbibliotheken.

Sprache Stärken Schwächen
Assembler schnell fehleranfällig, langsame Entwicklung, schwierig für Anfänger, nicht portierbar
C hoher Bekanntheitsgrad, zahlreiche Tools keine integrierte OO, problematisch für große Projekte oder mehrere Plattformen
C++ integrierte OO, meist verwendet, zahlreiche Tools keine integrierte GC, oder Schutz vor Speicherlecks
C# sehr OO, RAD-Sprache, einfach zu verwenden hoher Speicherverbrauch
Java sehr OO, einfach zu verwenden, portabel auf Spielkonsolen generell nicht verfügbar, disassemblierbar
Eiffel, Smalltalk, Ada, etc. selten verwendet, wenige Spieleentwicklungs-Tools
Scriptsprachen wie Lua, Python, etc. oft verwendet für Gameplay-Scripting, aber nicht für den Hauptteil des Spiel-Quellcodes
Shadersprachen wie Cg, HLSL, GLSL, etc. nahezu unverzichtbar für die moderne 3D-Spieleprogrammierung, wird aber nicht für den Hauptteil des Spiel-Quellcodes verwendet

APIs und Programmbibliotheken[Bearbeiten]

Bei der Planung eines Computerspiels stellt sich die Frage, welche APIs und Programmbibliotheken man verwendet. Diese Entscheidung hängt u.a. davon ab, für welche Ziel-Platform man entwickelt und ob man ein 2D oder 3D-Spiel programmiert. Die für die 3D-Spieleprogrammierung wohl wichtigsten APIs für Windows sind OpenGL und Direct3D.

Spieleprogrammierung als Hobby[Bearbeiten]

Die meist verwendeten Plattformen für die Hobby-Entwicklung sind Betriebssysteme für den PC, da Spielprojekte für Spielkonsolen oft schwieriger und teurer in ihrer Umsetzung sind. Eine Ausnahme bietet hier z. B. Microsofts Spieleentwicklungsplatform XNA, mit der Computerspiele sowohl für Windows als auch für die Xbox einfacher entwickelt werden können. Hobby-Spielprojekte sind gut geeignet um Erfahrungen im Bereich der Spieleprogrammierung zu sammeln.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]