Sie sind hier
E-Book

Einführung in die Programmierung von 2-D-Spielen

AutorDanny Reinhold, Wolfgang Schmidt
Verlagentwickler.press
Erscheinungsjahr2016
Seitenanzahl84 Seiten
ISBN9783868025941
FormatePUB
KopierschutzWasserzeichen
GerätePC/MAC/eReader/Tablet
Preis2,99 EUR
Die meisten Menschen haben in ihrem Leben wohl schon einmal ein Computerspiel gespielt - und viele werden sich gefragt haben, wie diese eigentlich funktionieren. Dieser shortcut erläutert die Grundlagen der 2D-Spieleprogrammierung unabhängig von konkreten Frameworks, Technologien und Plattformen. Neben einer Einführung in die Geschichte und Theorie präsentieren die Autoren ein komplettes, spielbares 2D-Spiel im Stil der 80er und 90er Jahre zum Nachbauen. Zuletzt wird die Frage nach der Implementierbarkeit eines solchen Spiels im Browser mit JavaScript und HTML5 gestellt und anschaulich beantwortet.

Danny Reinhold bekam Anfang der 80er Jahre einen C16 geschenkt und lebt seither seine Leidenschaft als Softwareentwickler und Bastler aus. Er hat an der Universität Bremen Mathematik und Informatik studiert und ist seit 2002 als freiberuflicher Softwareentwickler mit unterschiedlichen Schwerpunkten tätig. Privat beschäftigt der begeisterte Marathon- und Ultramarathonläufer sich gerne mit ungewöhnlichen und teils auch veralteten Technologien und lernt immer gerne dazu. Wolfgang Schmidt programmiert seit 1985 Computer - angefangen mit einem Ti 99/4A und kurze Zeit später mit einem Atari 800 XL. Er studierte Informatik an der Universität Bremen und arbeitet seit fünfzehn Jahren als Softwareentwickler, hauptsächlich mit der Programmiersprache Python. In seiner Freizeit praktiziert er Zazen (Zen-Meditation) und spielt Gitarre.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

2 Implementierung auf Basis von ANSI C und der Bibliothek SDL

Nachdem wir im ersten Kapitel bereits einiges über die Geschichte und die Theorie von 2-D-Computerspielen berichtet haben, steigen wir nun in die Praxis ein und präsentieren ein komplettes spielbares 2-D-Spiel für den PC (Windows, Linux) und andere Plattformen wie Raspberry Pi, Mac OS X, iOS und Android.

In diesem Kapitel springen wir direkt in die Praxis. In diesem shortcut geht es um 2-D-Spiele im Stil der 80er- und frühen 90er-Jahre. Diese Spiele sind meist relativ einfach aufgebaut, daher haben wir uns für den Einsatz relativ einfacher Technologien entschieden. Dennoch möchten wir, dass der Code portabel ist und auf fast jedem System übersetzt und ausgeführt werden kann.

Wir haben die Programmiersprache C gewählt, für die so ziemlich überall geeignete Compiler verfügbar sind. Und um nicht lange beschreiben zu müssen, wie geeignete Makefiles aufgebaut werden oder das Projekt in einem IDE zusammengestellt werden kann, verwenden wir den TinyC-Compiler [1]. Dieser Compiler wird zwar nicht mehr aktiv weiterentwickelt, ist aber für praktisch alle Systeme verfügbar, funktioniert sehr gut, erfordert keine umfangreiche Installation und reicht für unsere Zwecke völlig aus. Wenn Sie mit einem anderen Compiler oder einer komplexeren Entwicklungsumgebung als einem Texteditor arbeiten möchten, können Sie dies selbstverständlich tun.

Einige Hauptaufgaben bei Computerspielen sind die Darstellung von Grafiken, die Ausgabe von Geräuschen und Musik sowie die Abfrage von Tastatur-, Maus-, Joystick-, Controller- oder sonstigen Eingabegeräten. Das sind auch genau die Aufgaben, die am einfachsten mit portablen, genau auf diese Aufgaben spezialisierten Bibliotheken erledigt werden können. In diesem Kapitel verwenden wir die Bibliothek SDL [2], die für alle für unsere Zwecke relevanten Systeme verfügbar ist. Diese Bibliothek nimmt uns so viel Arbeit ab, dass wir uns im Code auf die wirklich wichtigen Dinge konzentrieren können: auf das Spiel!

Bomber – ein Klassiker

In diesem Kapitel entwickeln wir Schritt für Schritt den Quelltext für ein Spiel, das wir „Bomber“ nennen. Die Idee für das Spiel ist natürlich, wie sollte es bei einem shortcut über Retro-Games auch anders sein, abgekupfert. Das erste Spiel dieser Art hieß „Canyon Bomber“, stammte von Atari und wurde 1977 veröffentlicht. Von diesem Spiel gibt es unzählige Klone, so z. B. das bekannte „City Bomber“ von 1982, zu dem Sie weitere Details im Wikipedia-Artikel „City Bomber“ nachlesen können [3].

Die Spielidee ist denkbar simpel: Ein Flugzeug fliegt von links nach rechts über den Bildschirm. Im unteren Bereich ist die Skyline einer Stadt zu sehen. Durch Drücken der Space-Taste kann eine Bombe abgeworfen werden. Wenn die Bombe ein Haus trifft, wird es zerstört. Ziel ist es natürlich, alle Häuser der Skyline zu zerstören. Fliegt das Flugzeug rechts aus dem Bildschirm heraus, so erscheint es links wieder – allerdings etwas tiefer. Schritt für Schritt näher sich das Flugzeug also dem Boden. Falls es so tief kommt, dass es ein Haus berührt, ist das Spiel beendet.

Einrichten der minimalen Entwicklungsumgebung unter Windows

Die Einrichtung der „Entwicklungsumgebung“ unter Windows besteht aus einigen einfachen Schritten:

  1. Herunterladen des Tiny-C-Compilers [4]. Laden Sie die aktuelle Version tcc-0.9.26-win64-bin.zip herunter. Falls Sie ein 32-Bit-System verwenden, laden Sie tcc-0.9.26-win32-bin.zip herunter. Analoges gilt auch bei den Bibliotheken.
  2. Entpacken Sie die Datei. Hierbei entsteht das Verzeichnis \tcc\. Kopieren Sie dieses Verzeichnis an einen beliebigen Ort, z. B. nach C:\games.
  3. Laden Sie die SDL [2] herunter. Achten Sie dabei darauf, dass Sie mindestens die Version 2.0.4 herunterladen. Verwenden Sie nicht Version 1.2, da sie nicht kompatibel zu Version 2.x ist! Laden Sie auch die „Development Libraries“ herunter, sie beinhalten sowohl die Include-Dateien als auch die DLLs und die LIB-Dateien, die Sie für die Verwendung der Bibliothek benötigen. Die gewünschte Datei ist SDL2-devel-2.0.4-VC.zip.
  4. Laden Sie die SDL2-TTF-Bibliothek [5] herunter. Wir verwenden sie zur plattformunabhängigen Anzeige von Texten. Auch hierbei benötigen Sie die „Development Libraries“ mit dem Namen SDL2_ttf-devel-2.0.14-VC.zip.
  5. Entpacken Sie diese beiden Bibliotheken bzw. die heruntergeladenen ZIP-Dateien in ein beliebiges Verzeichnis, z. B. c:\games\tcc\games\SDL2-2.0.4 bzw. c:\games\tcc\games\SDL2_ttf-2.0.14.
  6. Laden Sie die Bibliothek SDL2_mixer herunter [6] und installieren Sie sie analog zu SDL2_ttf.
  7. Erstellen Sie ein Verzeichnis für den Quelltext des Spiels, z. B. c:\games\bomber.
  8. Laden Sie sich passende Geräusche für einen Schuss und eine Explosion herunter und legen Sie sie unter den Namen Glass_Break-stephan_schutze-958181291.wav bzw. shot.wav in das Verzeichnis c:\games\bomber. Sie können die Dateien natürlich auch beliebig anders benennen; dann müssen Sie lediglich die entsprechende Zeile im Quelltext anpassen. Beachten Sie bitte, dass die von uns als Beispiele ausgewählten Sounddateien lediglich zu Demonstrationszwecken dienen und nicht für kommerzielle Zwecke genutzt werden dürfen.
  9. Erzeugen Sie in diesem Verzeichnis eine Datei setenv.bat mit einem Inhalt gemäß Listing 2.1. Beachten Sie hierbei, dass die Pfade den von Ihnen gewählten Verzeichnissen entsprechen müssen. Bei 32-Bit-Systemen verwenden Sie jeweils die Unterverzeichnisse \x32\ anstelle von \x64\. Prüfen Sie doppelt, ob die Verzeichnisse bei Ihnen unter genau diesen Pfaden zu finden sind – beim Entpacken der Bibliotheken schleichen sich da leicht eine oder zwei weitere Ebenen ein.
  10. Erstellen Sie ein Verzeichnis für den Quelltext des Spiels, z. B. c:\games\bomber. Anstelle eines Makefiles oder einer umfangreichen Entwicklungsumgebung verwenden wir hier ein kleines Skript zum Übersetzen unseres Quelltexts. Erstellen Sie dazu eine Datei build_bomber.bat im Verzeichnis c:\games\bomber mit folgendem Inhalt:
    tcc -o bomber.exe -DSDL_MAIN_HANDLED -I%SDLBASE%\include
    -I%SDLTTFBASE%\include -I%SDLMIXERBASE%\include -L%SDLLIB%
    -L%SDLTTFLIB% -L%SDLMIXERLIB% bomber.c -lSDL2 -lSDL2_ttf -lSDL2_mixer
  11. Laden Sie den Zeichensatz Millennia.otf [7] herunter und legen Sie ihn in das Verzeichnis c:\games\bomber. Beachten Sie bitte, dass es sich hierbei nicht um einen Open-Source-Zeichensatz handelt! Er ist kostenlos und Sie können ihn für Ihre Tests und die ersten Gehversuche verwenden. Sollten Sie aber tiefer in das Thema Spieleprogrammierung einsteigen wollen, sollten Sie entweder Zeichensätze kaufen oder tatsächlich freie Zeichensätze verwenden.
set BASE=c:\games
set TCCBASE=%BASE%\tcc
set GAMELIBS=%TCCBASE%\games
set SDLBASE=%GAMELIBS%\SDL2-2.0.4
set SDLLIB=%SDLBASE%\lib\x64
set SDLTTFBASE=%GAMELIBS%\SDL2_ttf-2.0.14
set SDLTTFLIB=%SDLTTFBASE%\lib\x64
set SDLMIXERBASE=%GAMELIBS%\SDL2_mixer-2.0.1
set SDLMIXERLIB=%SDLMIXERBASE%\lib\x64

set PATH=%PATH%;%SDLLIB%;%SDLTTFLIB%;%SDLMIXERLIB%;%TCCBASE%

Listing 2.1

Einrichten der minimalen Entwicklungsumgebung unter Linux

Unter Linux benötigen Sie dieselben Tools, Bibliotheken, Zeichensätze und Sounddateien wie unter Windows. Sie können diese entweder ebenfalls von denselben Webseiten herunterladen wie die Windows-Versionen, oder Sie verwenden den Paketmanager Ihrer jeweiligen Linux-Distribution zur Installation. Falls Sie den Paketmanager verwenden oder feststellen, dass z. B. die SDL bereits auf Ihrem System installiert ist, achten Sie genau auf die Versionsnummer. Verwenden Sie keine ältere Version als 2.0.4 – es kann sonst zu Inkompatibilitäten kommen. Listing 2.2 zeigt, wie die Bibliotheken mit dem Paketmanager apt installiert werden können. Den Zeichensatz und die Sounddateien müssen Sie dennoch manuell herunterladen.

sudo apt-get install build-essential
sudo apt-get install libsdl2-dev
sudo apt-get install libsdl2-gfx-dev
sudo apt-get install libsdl2-image-dev
sudo apt-get install libsdl2-mixer-dev
sudo apt-get install libsdl2-net-dev
sudo apt-get install libsdl2-ttf-dev

Listing 2.2

Unter Windows übersetzen wir den Quelltext mit dem Skript build_bomber.bat. Unter Linux können Sie ein ähnliches Skript erstellen und es build_bomber.sh nennen (Listing 2.3). Das Listing zeigt, wie der GCC verwendet werden kann, weil dies unter Linux eine sehr natürliche Wahl für den C-Compiler ist. Falls Sie den TinyC-Compiler verwenden möchten, können Sie das Listing ganz einfach anpassen.

rm *.exe
rm *.o
gcc -c bomber.c -I/usr/local/include/SDL2

gcc -o bomber.exe bomber.o -lSDL2 -lSDL2_ttf

Listing 2.3

Ein erster Test

Listing 2.4 zeigt das Grundgerüst einer einfachen SDL-Anwendung, die auch plattformunabhängige Zeichensätze lesen und Texte ausgeben kann. Mit diesem Listing können Sie sehr einfach testen, ob der Compiler und die Bibliotheken korrekt eingerichtet sind. Öffnen Sie hierzu eine Kommandozeile (cmd.exe unter Windows bzw. die Shell Ihrer Wahl unter Linux) und gehen Sie in das Verzeichnis /bomber/. Führen Sie dort...

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

aufstieg

aufstieg

Zeitschrift der NaturFreunde in Württemberg Die Natur ist unser Lebensraum: Ort für Erholung und Bewegung, zum Erleben und Forschen; sie ist ein schützenswertes Gut. Wir sind aktiv in der Natur ...

Burgen und Schlösser

Burgen und Schlösser

aktuelle Berichte zum Thema Burgen, Schlösser, Wehrbauten, Forschungsergebnisse zur Bau- und Kunstgeschichte, Denkmalpflege und Denkmalschutz Seit ihrer Gründung 1899 gibt die Deutsche ...

Correo

Correo

 La Revista de Bayer CropScience para la Agricultura ModernaPflanzenschutzmagazin für den Landwirt, landwirtschaftlichen Berater, Händler und am Thema Interessierten mit umfassender ...

Demeter-Gartenrundbrief

Demeter-Gartenrundbrief

Einzige Gartenzeitung mit Anleitungen und Erfahrungsberichten zum biologisch-dynamischen Anbau im Hausgarten (Demeter-Anbau). Mit regelmäßigem Arbeitskalender, Aussaat-/Pflanzzeiten, Neuigkeiten ...

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 ...

DSD Der Sicherheitsdienst

DSD Der Sicherheitsdienst

Der "DSD – Der Sicherheitsdienst" ist das Magazin der Sicherheitswirtschaft. Es erscheint viermal jährlich und mit einer Auflage von 11.000 Exemplaren. Der DSD informiert über aktuelle Themen ...