Logo gameLib.de Coding
In diesem Bereich befinden sich die gesammelten Artikel zu den Themen Programmiersprache, Algorithmen und Programmiertechniken im Allgemeinen.

Wie programmiere ich ein Spiel?

Wie fange ich an wenn ich mein eigenes Spiel programmieren möchte? Diese oft gestellte Frage von Anfängern wollen wir heute mal beantworten. Dieser Artikel ist für Menschen gedacht, die noch nie oder kaum was mit Programmierung zu tun gehabt haben.

Zunächst sollte die Fragestellung überhaupt lauten: "Wie programmiere ich überhaupt?". Eine Programmiersprache ist eine textliche Hilfestellung für den Programmierer, um Aufgaben in einer für den Menschen verständliche Sprache mittels eines Programmes in die Sprache des Computers zu übersetzen. Dieses Programm wird Compiler genannt. Das ist notwendig, da die vielen Schaltkreise in einem Computer nur mit 2 Zuständen arbeiten, nämlich 0 und 1. Der Compiler, nimmt nun die für den Menschen verständliche Sprache und übersetzt sie in Nullen und Einsen. Der genaue Ablauf der Kompilierung ist noch etwas komplexer, allerdings würde eine detailliertere Beschreibung den Rahmen des Artikels übersteigen. Die Sprache bietet dem Programmierer für die Erstellung eines Programmes gewisse Standardfunktionen zur Verfügung, wie zum Beispiel das umwandeln von Kleinbuchstaben in Großbuchstaben, oder das Zeichnen einer Linie auf den Bildschirm.

Programmiersprachen gibt es wie Sand am Meer. Viele davon sind für spezielle Einsatzgebiete geschaffen worden, einige sind allgemein gehalten. Um ein Spiel zu programmieren ist es im Grunde nicht wichtig welche dieser Programmiersprachen man wählt, kann man erst einmal Programmieren ist es im Grunde möglich mit jeder Sprache ein Spiel zu erstellen. Es empfiehlt sich jedoch mit einer allgemeinen Sprache anzufangen. Um mal ein paar Sprachen zu nennen: C, C++, Java, Basic, Perl, Cobol, Pascal. Meine persönliche Empfehlung wäre die Sprache Java, die so ziemlich alles bietet was eine moderne Programmiersprache haben sollte. Außerdem ist der Compiler für Java kostenlos erhältlich was zum Lernen ideal ist. Und in Java geschriebene Programme laufen auf fast jedem Computer.

What next? Hat man sich erst mal für eine Sprache entschieden kommt die Frage auf wie man sie denn benutzt. Man hat das Programm das die Sprache übersetzt, doch schreibt man den Text der Programmiersprache, häufig als Code bezeichnet, nicht im Compiler. Im Grunde reicht ein einfacher Texteditor wie zum Beispiel Kate, EMacs oder vi unter Linux, BBEdit unter dem Mac oder der Editor bzw. Notepad unter Windows. Allerdings ist das meist nicht sehr komfortabel zu bedienen. Manche Editoren unterstüzten Programmierer bei ihrer Arbeit, indem Sie Teile des geschriebenen Codes farbig markieren und ihn so zurechtrücken das er einfach und verständlich lesbar ist. Diese Fähigkeit eines Texteditors nennt man Syntax-Highlighting. Kate, EMacs und vi unterstzützen Syntax-Highlighting.

Um mal kurz was zu testen reicht ein Texteditor sicherlich, aber je umfangreicher der Code wird, um so schwieriger ist er auch zu verwalten. Häufig hat man auch mehr als nur eine einzige Datei in welcher Code steht. Um die Programmierarbeit zu verwalten und einfacher zu überblicken benutzt man eine Entwicklungsumgebung, häufig IDE genannt (englisch für Integrated Development Environment = integrierte Entwicklungsumgebung). Je nach Umfang bieten IDE's einen Batzen an Funktionen, welche das Leben leichter machen. Zum Beispiel das schon genannte Syntax-Highlighting. Außerdem sind IDE's mit dem Compiler der Sprache verknüpft. Das hat den Vorteil das man nicht erst eine Datei mit Code schreiben und diese dann wieder mit dem Compiler weiterverarbeiten muss, sondern man schreibt den Code in der IDE, klickt auf einen Button und es wird automatisch der geschriebene Code kompiliert und ausgeführt. Kostenlose IDE's wären DevC++, NetBeans oder Eclipse. Für erste kleine Schritte ist eine weniger umfangreiche IDE wie zum Beispiel SciTE zu empfehlen. Fängt man an größere Projekte zu schreiben wäre Eclipse eine gute Wahl.

Beim Programmieren treten sehr häufig Fehler auf, die nicht durch falsche Syntax verursacht worden sind. Solche Fehler nennt man Bugs. Um seinen eigenen Code genauer unter die Lupe zu nehmen bieten viele Compiler und IDE's einen sogenannten Debugger an. Das ist ein Programm das einen Testlauf mit Deinem Code macht und Dir genau anzeigt was während des Ablaufs passiert. Du solltest Dir unbedingt gleich von Anfang an gewöhnen einen Debugger zu benutzen, da er ein hilfreiches Tool ist welches Dir viel Zeit und Ärger erspart. Alle Programme die ich erwähnt habe kann man sich im Internet kostenlos runterladen.

Hat man sich seine Arbeitsumgebung soweit eingerichtet, geht die richtige Arbeit erst los. Nun ist Lernen angesagt. Sich in eine Programmiersprache so weit einzuarbeiten, das man sein erstes kleines Spiel schreiben kann dauert seine Zeit. Doch davon solltest Du dich nicht abschrecken lassen: Hat man erstmal die ersten kleinen Hürden überwunden macht es viel Spass Neues dazu zu lernen. Häufig wird der Fehler begangen das nur die Syntax, sozusagen die Rechtschreibung und die Grammatik einer Sprache gelernt wird. Genau so wichtig ist es aber sich über Programmiertechniken zu informieren. Ein Stichwort dafür sind Algorithmen. Ein Algorithmus ist eine bestimmte Abfolge von Code. Meistens sind diese Algorithmen unabhängig von irgendwelchen Programmiersprachen. Ein Beispiel für einen Algortihmus wäre das Lüften eines Raumes. Der Algorithmus dafür wäre:

Schritt 1: Zum Fenster gehen
Schritt 2: Fenster öffnen
Schritt 3: Warten bis der Raum gelüftet ist
Schritt 4: Fenster schliessen

Eine klare Abfolge also. Man entwickelt eigene Algorithmen in einer Programmiersprache um spezielle Probleme zu lösen. Häufig handelt es sich jedoch um Probleme die sehr oft auftreten, wie zum Beispiel das Sortieren einer Liste der besten Spieler. Das Problem eine Liste zu sortieren ist wohlbekannt und kann in Literatur und im Internet nachgeschlagen werden. Solche Probleme sollte man, während man sich eine Programmiersprache beibringt, immer wieder mal genauer anschauen und versuchen zu verstehen. Such einfach mal im Internet nach dem Begriff Sortieralgorithmen und Du wirst schnell verstehen warum es sich nicht lohnt selbst zu versuchen derart Probleme selbst zu lösen (außer Du hast ein großes Interesse an der Verbesserung von Algorithmen). Bei der Enwicklung eigener Algorithmen solltest Du in jedem Fall immer zuerst versuchen das Problem auf Papier zu lösen. Das gibt Dir ein Gefühl dafür was machbar ist und was nicht und hilft Dir gleich zu Anfang Fehler und schwere Abschnitte zu erkennen.

Neben dem logischen Teil sollest Du Dich auch ein bisschen mit der Hardware deines Computers auseinandersetzen. Das ist notwendig da Spiele sehr viel Leistung verbrauchen. Mit den Programmen die du schreibst steuerst Du durch deinen Code immer die Hardware deines Computers. Deshalb ist es nützlich zu wissen was wie funkioniert und auf was Du achten musst. Wenn Du schon ein bisschen aufwändigeren Code geschrieben hast solltest Du testweise Dein Programm mal auf einem anderen Computer laufen lassen, damit Du ein Gefühl dafür bekommst wie unterschiedlich Deine Programme auf verschiedenen PC's laufen.

Neben all den Wissensgebieten ist es auch wichtig beim Programmieren einen sauberen Code zu produzieren. Das bedeutet das Du Dir einen eigenen Stil aneignen musst wie Du den Code schreibst. Dazu gehören zum Beispiel Absätze, Einrückungen und die Vergabe von Namen. Ein Programmierstil wird auch als Notation bezeichnet. Es gibt schon unterschiedliche Vorschläge für Notationen auf die es sich lohnt einen Blick zu werfen. Ein Beispiel dafür ist die ungarische Notation. Keine Sorge, dabei muss man nicht auf Ungarisch schreiben. Zu einem guten Stil beim Programmiern gehört auch das Kommentieren Deines Codes. Zwar scheint es auf den ersten Anschein so das man sein eigenes Geschriebenes ja immer verstehen müsste, jedoch ist das selbst für sehr erfahrene Programmierer schwer eigenen Code nach bestimmter Zeit nachzuvollziehen. Viele Anfänger vernachlässigen diesen Teil, deswegen nochmals: IMMER KOMMENTARE IN DEN CODE SCHREIBEN. Das muss nicht übertrieben werden, aber an schweren Stellen und vor oder nach wichtigen Abschnitten auf jeden Fall passieren.

Nun ist einige Zeit vergangen und Du hast Dir eine Sprache angeeignet, was als Nächstes? Jetzt ist es Zeit für Dein erstes kleines Spiel. Warum kleines Spiel und nicht gleich ein Großes. Zunächst einmal musst Du die Grundprinzipien wie ein Spiel funktioniert verstanden haben um ein Großes realisieren zu können. Am besten fängst Du mit einem Spiel wie Pacman oder Tetris an. Solche Spiele haben alles was große Spiele auch haben: Steuerung, Grafik, Sound, Punkte, Gegner, künstliche Intelligenz und eine Verwaltung wie ein Startmenü, eine Bestenliste usw. Alle diese Punkte werden zusammengefasst auch Engine (englisch für Motor) genannt. Wenn Du es schaffst eine eigene kleine Engine zu schreiben, dann steht nichts mehr im Wege ein Medium-großes Projekt zu starten. Nach so etwas hast Du dann die Erfahrung für Dein richtig großes Spiel. Aber sei darauf gefasst das ein Spiel wie es im Laden steht heute nicht mehr von einer einzelnen Person programmiert wird, sondern ein mehrköpfiges Team dahintersteckt.

Wichtig bei diesem Lernprozess ist viel zu lesen. Das Internet bietet zu fast allen Themen eine riesige Auswahl. Trotzdem empfehle ich sich ein paar Bücher zuzulegen. Eine Sprachreferenz und ein Buch über Grundlagen wie ein PC oder Mac funktionieren sollte man immer Griffbereit haben.Ich hoffe ich habe damit einen guten Überblick und eine Anregung wie Du anfangen und weitermachen kannst gegeben. Fragen und Kritik wie immer in elektronischer Form an info@gamelib.de

Marco Hertwig - www.gamelib.de - 07.01.2006
Impressum

Valid XHTML 1.0 Transitional Valid CSS!