Über mich

It’s me, Mario!

Ich bin Jahrgang 1985 und habe Informatik an der Hochschule Bonn-Rhein-Sieg in Sankt Augustin studiert. Dort habe ich lange Zeit als wissenschaftlicher Mitarbeiter am Institute of Visual Computing gearbeitet. Mein größtes Projekt war FIVIS (Fahrradfahrsimulator in der immersiven Visualisierungsumgebung „Immersion Square“), wo ich unter Anderem die Simulations- und Visualisierungssoftware des Fahrradsimulators entwickelt habe. Anschließend habe ich an der Hochschule Hannover gearbeitet. Nun bin ich selbständig tätig. Zu meinen Hobbys zählen Computerspiele, Geocaching, Fotografie, Grafik/Design und Badminton. Wen mein Werdegang bezüglich der Programmierung von Spielen interessiert, der sollte weiterlesen!

Mit meinem Vater habe ich früher viele Computerspiele gespielt. Leider hatten wir keinen C64, sondern nur einen IBM-PC, aber auch dafür gab es nette Spiele. Zu meinen Lieblingsspielen gehörten Maniac Mansion, Zak McKracken, Indiana Jones, Prince of Persia und X-COM. Unser Wunsch war es aber, auch unsere eigenen Spiele zu entwickeln. Leider konnte mein Vater nicht programmieren (und er kann es auch immer noch nicht), darum kauften wir uns ein Buch namens Computerspiele selber machen. Dieses Buch war objektiv gesehen ein Reinfall, da es zum größten Teil aus einer Referenz für den Raytracer POV-Ray und diverser nicht unmittelbar spielebezogener Tools bestand. Dazu gab es noch einen Point and Click-Adventure-Generator, der aber nur knapp beschrieben war und dessen Features einen auch nicht gerade vom Hocker rissen. Mit Mühe und Not schaffte ich es, ein oder zwei Adventures zu erstellen, die aber auch nicht wirklich fertig waren. Interessanter fand ich den Raytracer und ein mitgeliefertes 3D-Modellierungsprogramm für MS-DOS namens PV3D. So machte ich Bekanntschaft mit dem Gebiet der 3D-Grafik. Das Wichtigste, was ich aus diesem Buch gelernt habe, war jedoch Folgendes: Wenn man ein individuelles Spiel genau nach seinen eigenen Vorstellungen machen will, dann ist ein Spielegenerator meist keine Lösung, sondern es führt kein Weg an der richtigen Programmierung vorbei. Das stimmt vielleicht heute nicht mehr, weil es bessere Tools wie z. B. Unity gibt.

Um eigene Spiele entwickeln zu können, musste ich also programmieren lernen. Als ich 11 oder 12 war, erzählte mir meine Mutter zufällig von der Programmiersprache BASIC, die sie früher einmal im Lochkartenzeitalter gelernt hatte. Sie hatte aber fast alles wieder vergessen und konnte sich nur noch daran erinnern, dass es so etwas wie IF oder PRINT gab. Aber immerhin kannte ich nun den Namen einer Programmiersprache, und so begann ich, damals noch ohne Internet (kaum vorzustellen), mir die Sprache QBASIC (früher immer bei MS-DOS dabei) anhand der wenigen mitgelieferten Beispielprogramme und der Befehlsreferenz anzueignen. Damit machte ich meine ersten Gehversuche auf dem Gebiet der Computerspiele und lernte gleichzeitig auch schon einiges an Englisch. Natürlich waren diese Spiele aus heutiger Sicht nichts Besonderes, und beim Anblick der Quellcodes liefe es einem kalt den Rücken herunter.

Im Jahr 1997 entdeckte ich in einem Pearl-Katalog eine Software namens PowerBASIC, die es auch heute noch gibt. Dabei handelt es sich um einen BASIC-Dialekt und eine Entwicklungsumgebung mit einem Compiler. Das war für mich damals etwas Besonderes, da ich nur QBASIC kannte, das die Programme lediglich interpretiert und nicht kompiliert. Um ein QBASIC-Programm auszuführen, brauchte man also immer den QBASIC-Interpreter. Mit PowerBASIC war ich in der Lage, alleinstehende ausführbare Programme (.exe-Dateien) zu erzeugen. Dadurch wirkten die Programme mit einem Schlag viel professioneller.

Screenshot von Blocks 1

Screenshot von Blocks 1

Also arbeitete ich weiter mit PowerBASIC. Mein erstes richtiges Spiel hieß Boulder (woraus später Blocks wurde). Es war ein Boulder Dash-ähnliches Spiel, in dem man Diamanten einsammeln und dann zum Ausgang gelangen musste. Man konnte Blöcke verschieben, die nach unten fielen, wobei die Spielfigur selbst eine bemerkenswerte Immunität gegenüber der Schwerkraft aufwies. Dieses Spielkonzept lässt sich fast beliebig erweitern, und so habe ich im Laufe der Zeit noch viele Fortsetzungen von Blocks entwickelt. Mit PowerBASIC entstanden auch noch die Spiele der Pharao-Reihe. Die ersten beiden dieser Spiele waren Jump’n’Runs, und das dritte war schließlich ein Action-Adventure nach dem Vorbild der Zelda-Spiele. PowerBASIC war jedoch in vielerlei Hinsicht beschränkt: Von Haus aus unterstützte es nur Grafikmodi bis 640×480 bei 16 Farben und ausschließlich PC-Speaker-Sound (Piepstöne), außerdem hielt das Programm an, solange Sounds abgespielt wurden. Es war nicht einmal möglich herauszufinden, ob eine bestimmte Taste gerade gedrückt war. Der Speicher war zudem auf 640 KB beschränkt. Zum Glück gab es ein paar Bibliotheken, die das änderten.

Irgendwann war klar, dass es mit PowerBASIC nicht mehr viel weiter gehen konnte. Ich wollte auch gerne Windows-Programme entwickeln. Wieder fand ich in einem Katalog eine interessant klingende Programmiersprache mit Entwicklungsumgebung: RGH Profan. Auch diese gibt es in ähnlicher Form heute noch unter dem Namen XProfan. Diese Sprache war ein seltsamer Mix aus BASIC und Pascal, aber sie erlaubte es mir, Windows-Spiele zu entwickeln. Grafisch war man jedoch relativ beschränkt, weil alle Zeichenoperationen sehr langsam waren. Trotzdem habe damit ich zwei Blocks-Spiele programmiert (Teil 2 und 3).

Die nächste Programmiersprache, die ich lernte, war C++. Wieder einmal war es ein Buch, nämlich das 1996 erschienene 3D Graphics Programming for Windows 95, das den Anstoß gab (als ich das Buch kaufte, war es aber schon veraltet). Und wieder war dieses Buch inhaltlich nutzlos für mich, da ich zu dieser Zeit kaum genug Englisch konnte, um ein Fachbuch verstehen zu können, und weil ich weder C++ noch MFC kannte. In diesem Buch ging es um 3D-Grafikprogrammierung mit DirectX 2, der ersten DirectX-Version mit Direct3D. Ich hatte nicht einmal einen Compiler, um die Beispielprogramme testen zu können. In der Stadtbibliothek fand ich jedoch ein Buch über C++, und ein Bekannter verschaffte mir den Borland C++ Builder. So begann ich ein wenig zu experimentieren und schaffte es auch, mit Direct3D RM ein paar einfache Testprogramme zu schreiben. Aber für ein 3D-Spiel reichte es noch nicht.

Screenshot von Missile

Screenshot von Missile

Erst einmal, es dürfte um das Jahr 1999 herum gewesen sein, machte ich wieder einen Abstecher in die „gute alte“ MS-DOS-Welt, nämlich mit dem 32-Bit-C++-Compiler DJGPP und der Bibliothek Allegro. Allegro bringt alles mit, was man für ein anständiges (2D-)Spiel braucht. Mit dieser Kombination habe ich einige nette Spiele programmiert, zum Beispiel Blocks 4, Animal Battle und Missile.

Screenshot von Blocks 2001

Screenshot von Blocks 2001

Da DJGPP eigentlich MS-DOS-Programme erzeugte, wurde es mit neueren Windows-Versionen immer problematischer, diese auszuführen. Also musste ich auf echte Windows-Programme umsteigen. Ein Bekannter, diesmal ein anderer, „verschaffte“ mir Microsoft Visual C++ 6. Damit begann ich nun herumzuexperimentieren und bestellte mir bei Microsoft das SDK (Software Development Kit) für DirectX 6. Damals konnte man das SDK nicht von der Webseite herunterladen, sondern bekam es per Post auf einer CD zugeschickt (zum Herunterladen wäre es damals wohl zu groß gewesen). Dank mittlerweile vorhandenem Internetzugang war es nun nicht mehr so schwer, sich in DirectX einzuarbeiten. Ich spielte mit 3D-Grafik herum und konnte mit Blocks 2001 letztendlich sogar ein 3D-Spiel fertigstellen.

Im Jahr 2002 beschloss ich ein längeres Tutorial über 3D-Spieleprogrammierung zu schreiben. Es wurde so lang, dass man daraus auch ein Buch hätte machen können. Und genau das versuchte ich dann auch und wandte mich mit einem Auszug des Texts an verschiedene Fachbuchverlage, auch an den Carl Hanser Verlag in München. Von diesem erhielt ich auch tatsächlich eine vielversprechende Rückmeldung. Der Lektor, Herr Fernando Schneider, wollte mir jedoch keine großen Hoffnungen machen, was den Erfolg des Buches anging, weil der Verlag zum damaligen Zeitpunkt noch kein einziges Buch zum Thema Spieleentwicklung veröffentlicht hatte. Ich schrieb das Buch trotzdem, was ungefähr ein Jahr dauerte. Heraus kam das ungefähr 800 Seiten starke 3D-Spieleprogrammierung. Modernes Game Design mit DirectX 9 und C++, das heute schon in der dritten Auflage existiert. Das Buch verkaufte sich wesentlich erfolgreicher als vom Verlag gedacht, und mittlerweile sind dort noch einige weitere Bücher zum Thema erschienen. So habe ich zusammen mit einem professionellen Übersetzer das Buch Game Programming Gems 4 ins Deutsche übersetzt (und später noch Agile Webentwicklung mit Rails: Pragmatisch Programmieren). Zudem entstand, ursprünglich als Support-Forum für mein eigenes Buch gedacht, die Community spieleprogrammierer.de!

Screenshot von Rollmorad Guhase 2010

Screenshot von Rollmorad Guhase 2010

Ich stellte noch ein paar Versuche an, ein größeres 3D-Spiel fertigzustellen, aber auf Grund des Umfangs eines solchen Projekts hielt ich es nie durch. Zudem würde man mit einem 3D-Spiel immer an den professionellen Spielen gemessen, zumindest technisch. Darum programmiere ich bis heute eigentlich nur noch 2D-Spiele mit dem Akzent auf dem eigentlichen Gameplay. Das heißt nicht, dass ich die technische Seite (Grafik, Sound) vernachlässige. Auch 2D-Grafik kann man hübsch und poliert aussehen lassen, jedoch mit viel weniger Zeitaufwand als bei einem 3D-Spiel.

Mit der Zeit setzte ich außerdem vermehrt auf offene Bibliotheken/APIs wie OpenGL, OpenAL, SDL oder Ogg Vorbis. In dieser Kombination entstanden Blocks 5 (das Spiel, auf das ich am meisten stolz bin), Rocket Rage und Rollmorad Guhase 2010. Die beiden zuletzt genannten Spiele habe ich zusammen mit Kommilitonen im Rahmen von zwei Lehrveranstaltungen zum Thema Spieleentwicklung programmiert. Auf Grund der begrenzten Zeit (weniger als ein Semester) sind diese Spiele zwar leider nicht fertig geworden, befinden sich aber in einem guten spielbaren Zustand.

Screenshot von Rocket Rage

Screenshot von Rocket Rage

Screenshot von Blocks 5

Screenshot von Blocks 5

Mein Ziel ist es, auch weiterhin kleinere 2D-Spiele zu programmieren, an denen man lange Spaß haben kann. Ob ich einmal in der Spieleindustrie arbeiten möchte, weiß ich nicht. Im Allgemeinen mag ich den riesigen Umfang moderner Spiele nicht. Wenn überhaupt, dann würde ich bei einem Entwickler arbeiten, der sich auf Casual Games spezialisiert hat.

16 Gedanken zu „Über mich

  1. Plourde

    I really appreciate your derivative calculator! I am learning calculus and plan to program professionally one day. You are a life saver and your work is amazing!!!

    Antworten
  2. Gerhard Ernst

    Bin von Ihrem Integralrechner mächtig beeindruckt. Große Klasse!! Die Eleganz der Mathematik hat mich immer beeindruckt und ist fast ein Hobby von mir geworden. Mit meinen 70 Jahren, ist das eine ideale Beschäftigung für die „grauen Zellen“. Benutze Ihren Integralrechner zur Kontrolle oder wenn ich nicht weiter komme. Bei der Integralrechnung kommt das mit unter schneller vor, als mir lieb ist.
    Vielen Dank für dieses wertvolle Hilfsmittel!
    Mit besten Grüßen
    Gerhard Ernst

    Antworten
  3. sonderbarerStudent

    Seit Jahren sind Ihr Integral und Ableitungsrechner meine treuen Begleiter in Schule und Uni. Vielen Dank! Ich kenne keinen Online Rechner, dessen System so gut funktioniert. Die Handhabung, Übersichtlichkeit, Lösungswege, Eingabe, Optionen zu all diesen Dingen, Richtigkeit und Vollständigkeit etc., auch bei ‚komplexen Rechnungen‘, sind alle bewundernswert gut. DANKE!

    Antworten
  4. Sungho Kim

    Hallo, I’m a freshman at Emory and I wanted to thank you for making Integral Calculator! I’m trying to catch up before finals and It helps so much.
    I’ve sent a $5 tip to show my gratitude via paypal too 🙂
    Danke schoen

    Antworten
  5. Roger

    Ich kann mich Konstantins Kommentar nur anschließen, der Ableitungs- und Integralrechner ist in meinem Studium schon (sehr) häufig eine willkommene Hilfe bei den Analysis-Rechnungen gewesen, auch für manches Integral der Bachelorarbeit war die beiden sehr hilfreich. Ich kann Ihnen gar nicht genug dafür danken.

    Antworten
  6. Konstantin

    Danke für den Ableitungs- und Integralrechner, Sie wissen gar nicht wie oft sie faulen Schülern wie mir den A*sch gerettet haben 🙂

    Antworten
  7. Ben

    Hehe, mit QBasic hab ich auch angefangen – aber nicht fuer Spiele sondern um die Modeleisenbahn anzusteuern.
    …und ich bin verdammt froh das ich so jung bin und niemals ernsthaft mit QBasic arbeiten musste 😀

    Antworten

Schreibe einen Kommentar zu allb Antworten abbrechen

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