Spieleprogrammierung (Welche Sprache ist die Beste?)

8 Antworten

Mit den Programmiersprachen ist es wie mit Fremdsprachen: manche sind einfach universeller?! Obwohl weltweit die meisten Menschen Chinesisch sprechen, ist die Welthandelssprache inzwischen eher Englisch. Vor einigen Jahrhunderten war dies eher Spanisch oder Portugiesisch oder gar Latein und Griechisch. In den allgemeinbildenden Schulen wurden wir auch jahrelang mit beispielsweise Englisch „traktiert“. M.a.W. es gibt keine „beste“ Sprache. Gäbe es die, wären die Erfinder von Programmiersprachen arbeitslos.

Wenn man sich Sprachen wie C, C++, Objective-C und Java ansieht, fällt auf, dass sie ähnliche Probleme mit gleichen Schlüsselwörtern lösen. Alle Sprachen kennen if, while, do-while, for … Dabei ist die „deklarative Sprache“ C die „Mutter“ der nachfolgend genannten „objekt-orientierten Programmiersprachen“.

Leider muß man immer wieder auch auf „LOW-LEVEL-GEDÖNS“ zurückgreifen. Jede der oben genannten Compiler-Sprachen (auch der Byte-Code eines Java-Compilats!) muß irgendwann an die Maschine angepasst werden, auf der das Programm laufen soll. Von daher ist es u.a. nicht verkehrt, auch etwas über das Low-Level-Gedöns zu wissen und es ggf. auch einsetzen zu können …

Speziell für die Spieleprogrammierung gibt es natürlich ebenfalls einiges an Fachliteratur, aber wenn man die grundlegenden Werke von Kernighan/Ritchie, Stroustrup, Hillegas etc. kennt, sollte man mit jeder der Sprachen ein Spiel programmieren können. Strukturen oder Klassen muss man in jedem Fall generieren – wie diese dann mit „Leben“ ausgestattet werden, ist das eigentliche Problem der Programmierung. Diese Fragen müssen immer wieder neu beantwortet werden …

Ein Spiele Programmierer würde dir jetzt C++ antworten , kann man sicher auch als Anfänger so durchziehen, es gibt ja auch leichtere Bücher wie "C++ für Spiele Programmierer" . C++ hat den Ruf recht schwer zu sein und ich würde da sogar zustimmen (mehr oder weniger) , dadurch hat man aber auch riesig viele Möglichkeiten . Als Anfänger solltest du trotzdem die Finger davon lassen . Generell ist Python zwar nicht so toll, der Interpreter ist aber recht dankbar , daher würde auch ich zu Python raten , vor allem kann man damit auch schon kleinere Spiele entwickeln . Am besten liest du ein Buch , sollte es aber wirklich ein Kurs sein und dein Englisch ist recht gut , dann solltest du auf coursera.org einen Blick auf den Python Kurs der Rice University werfen . Das ist zwar ein Anfängerkurs , aber die Projekte die man umsetzen muss sind kleinere Acradespiele wie zum Beispiel Pong oder Asteroids

Die Frage hatte ich mir 1988 auch gestellt. Da es damals lediglich die Auswahl zwischen C, BASIC und Modula II gab, entschied ich mich, eine eigene Sprache zu schreiben.

Das hat den Vorteil, dass Du nur diejenigen Befehle entwickelst, die Du effektiv benötigst.

Wenn Du dann auf Grafikkarten etc zugreifen willst, ist es von Vorteil, Deine Sprache in C oder sonstwie Maschinennah zu programmieren, damit Deine eigenen Befehle auch rasch auf die Maschine zugreifen können. Ich hatte damals noch Assembler-Routinen entwickelt, um Hintergrundbilder besser komprimieren zu können als GIF und JPG.

Java hat zusätzlich den Vorteil, dass es auf allen gängigen Plattformen läuft. Wenn Du die Sprache z. B. als Interpret schreibst, empfehle ich Java oder gerade Javascript, damit Dein Spiel auch im Browser laufen kann.

Nun das ist doch von weiteren Faktoren abhängig. Reden wir von einem nativen Spiel für Android Devices, dann wäre die Antwort Java. Reden wir von nativen IPhone/IPad Spielen dann wäre es Objective-C.

Wollen wir platformübergreifend Mobile Devices und den PC treffen, dann bietet sich HTML5 an.

Reden wir von regulären PC Spielen, dann ist wohl C++ das Werkzeug der Wahl. Weiter kommt es natürlich auf das Spiel an. Kleine Arcarde Games wirst du auch Problemlos in Pyhton, Java oder C# umsetzen können. Reden wir von aufwändigen Games, dann spielt C++ eben seine Geschwindigkeit als Vorteil klar aus.

Neben der Sprache gibt es aber noch viele weitere Elemente. Sei es Basics der Spieleprogrammierung wie die Gameloop, das Erstellen von Grafiken und Sounds, die müssen ja auch woher kommen, Techniken wie Tilemapping, Tilescrolling, Raycasting und co. Dann sollten natürlich die Mathekenntnisse entsprechend sein. Gleichungen und Trigometrie, als auch das Arbeiten von Vektoren sind da nunmal der Hauptbestandteil.

Weiter stellt sich dann die Frage ob du auf einer Engine aufsetzt oder dir selbst eine schreibst. Alles von Grund auf zu machen mag möglich sein bei einen 2D Platformer ala Mario aber selbst sowas wird als gute Umsetzung mehre Monate bis Jahre dauern. Du solltest also nicht davon träumen im Alleingang das nächste Battlefield zu programmieren, an so Games sitzen 200-300 Mann starke Teams über Jahre und das sind welche der besten ihres Faches.

Soll das ganze Netzwerkfähig sein usw. kommen natürlich nochmal etliche Kenntnisse über Protokolle und Datenübertragung dazu. Methoden um das Spiel trotz "Lücken" flüssig erscheinen zu lassen (Interpolation) usw.

Auch wird heutzutage nicht alles wirklich in einer Sprache reingecodes, sondern es werden eigene Tools dafür erstellt. Bei einfachen Games sind dies z.B. die Mapeditoren, für komplexere Sachen reden wir von sowas wie dem Unreal Development Kit.

Also wenn du dir von "ein wirkliches gutes Spiel" mehr versprichst als ein 2D Platformer, dann darfst du schon einige Jahre an Arbeit investieren und selbst dann darfst du dich eher an Indiespiele orientieren, nicht an Triple A Titeln, so einen wirst du während deiner kurzen Verweilzeit auf diesen Planeten nicht fertigstellen können, abgesehen davon dass die Technik bei der Fertigstellung einige hundert Jahre alt wäre und dies keiner mehr als "wirklich gutes Spiel" betiteln würde.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

Für Spiele wird stets ein Wachstum erstrebt und große Spiele mit guter Grafik, Sound, Physik, Content und Gameplay erfordern eine Menge Resourcen & Berechnungen, womit Performance ein groß geschriebenes Wort in der Entwicklung ist.

Python ist eine anfängerfreundliche Skriptsprache, aber sicherlich nichts, womit ernsthaft Spiele geschrieben werden, da die Installation des schweren Interpreters notwendig ist und die Sprache selbst in eine ganz andere Richtung als Geschwindigkeit geht.

Java hat sich die letzten 5 Jahre in seiner Ausführungsgeschwindigkeit merklich verbessert, ist jedoch noch weit von der Ausführung reinen Maschinencodes entfernt, ineffizient bei Low-Level Algorithmen und geplagt von verbuggten Bibliotheken im Spieleentwicklungsbereich. Für den Anfang und einfache Werke jedoch nutzbar und eine weit bessere Wahl als Python!

C++ ist die Sprache für Spieleentwickler, wegen des resultierenden, gut optimierten Maschinencodes, übersichtlicher Quelltexte durch mächtige Sprach-Elemente und sehr aktiver Community, welche neben großer Hilfsbereitschaft auch die besten Spiele-Engines hervorbringt.

Für die Spieleentwicklung im Internet ist mit HTML5 der Schritt weg vom langsamen, 'dreckigen' Flash getan und mit WebGL der Knackpunkt, die Grafik, entschärft wurden. Gemeinsam mit der über die letzten 2 Jahre deutlich verbesserten Performance von Javascript und der Serverkommunikation über Ajax lassen sich heute schon Browser-Spiele programmieren, deren Qualität an Toptitel wie Battlefield 2 und FarCry heranreichen.

Zusammenfassend lässt sich sagen, es gibt keine beste Sprache, aber für das gewünschte Ergebnis massig schlechte Kandidaten.