Programier Software für die modernen Spiele

delta team

Banned
Registriert
Dez. 2011
Beiträge
536
mit welcher Software / Prgramiersprache werden den die modernen Spiele heutzutage hergestellt? :freak:

so wie für BF3 / CoD MW3 / Dirt 3

konnte leider nichts gescheites finden
http://www.gidf.de/
 
Quasi durch die Bank weg C/C++, wobei man für Gamecontent (z.B. NPCs oder KI) dann intern Skriptsprachen wie LUA benutzt.
 
Java wird vielleicht nicht ganz so häufig eingesetzt, kommt aber auch vor. Einige Spiele sind auch (teilweise oder sogar vollständig) mit Python programmiert worden. http://en.wikipedia.org/wiki/List_of_Python_software#Video_games

Wahrscheinlich ist wohl in nahezu jeder weit verbreiteten Sprache schon ein Spiel geschrieben worden, wenn auch nicht unbedingt solche Titel wie im ersten Beitrag erwähnt worden.
C und C++ mögen den Löwenanteil ausmachen, ganz allein können sie das Feld aber nicht für sich in Anspruch nehmen.


P.S. Google einfach mal nach list of games programmed in <Sprache einfügen>.
 
Spätestens auf der Serverseite wird Java auf jeden Fall interessant. ;) Aber es stimmt schon, die AAA-Titel sind clientseitig normalerweise in C++ geschrieben. Allerdings gibt es durchaus auch Firmen, die einfach nur Engines einkaufen (die in C++ geschrieben wurden) und ihrerseits nur Scripten. Da ist schon viel möglich, wenn man nichts all zu Individuelles braucht.
Mojang (Minecraft) steht z.B. auf Java und hat beim letzten Mojam fürs Humble Bundle auch in Java entwickelt und damit direkt problemlos ihre Spiele für Win, Mac und Linux verfügbar machen können. Da punktet Java eben ganz besonders. Würden das mehr Leute machen, wäre Linux nicht so arm an Spielen. Aber das erkläre mal einem BWLer.
 
Naja, mit Assembler wird man wohl kaum ganze Engines programmieren, richtig ist aber, dass Shaderprogramme für die Grafikkarte früher und auch heute noch zum Teil mit Assembler programmiert werden, oder mit assemblerartigen Sprachen.

Vereinfacht gesprochen ist C++ genau so eine Hochsprache wie auch Java, und ist daher immer "langsam". Java braucht mehr Speicherplatz ist aber nicht unbedingt immer langsamer.
 
Zuletzt bearbeitet:
F_GXdx schrieb:
Vereinfacht gesprochen ist C++ genau so eine Hochsprache wie auch Java, und ist daher immer "langsam".

Diese Aussage, auch wenn du zugibst, daß sie vereinfacht ist und das langsam in Anführungszeichen kapselst, würde ich mit Vorsicht genießen. Hochsprache heißt nicht mehr notwendigerweise langsamer als Assembler. Moderne Compiler können häufig so aggressiv optimieren, daß ein von Hand optimierter Assembler-Ansatz tatsächlich weniger performant sein kann, es sei denn der Assembler-Programmierer hat EXTREM genaue Kenntnis des jeweiligen Betriebssystems und der Hardware.
 
Shaderprogrammierung findet auch eher in GLSL/HLSL statt, das ist von Assemblerprogrammierung auch weit entfernt. Wirklich direkt in Assembler werden soweit ich weiß höchstens noch sehr kleine sehr Performancekritische Teile geschrieben. Und selbst das dürfte die Ausnahme sein.
 
Fassen wir zusammen:
Assembler ist in 99% der Fälle langsamer und unübersichtlicher als C. Weil: 1. Kann fast niemand besser optimieren als ein Compiler. 2. optimiert diese Person dann für wahrscheinlich genau einen CPU-Typ. Ein C-Compiler baut Code der auf vielen CPUs sehr gut funktioniert. 3. wer mal ein 500 Zeilen Assembler Programm gesehen hat, weiß dass man es entweder erst nach Stunden versteht oder 10x so viele Kommentare wie Code drin stehen.
Um das ganze zu relativieren: In C und C++ lässt sich ohne einen Finger krumm zu machen Assembler Code einbinden. D.h. man kann einzelne Schnipsel, von denen man weiß, dass der Compiler hier nicht alles rausholt, eben mal in Assembler schreiben und nahtlos in sein C/C++ Programm einbinden. Denn sobald man Klassen (oder in C dann eben Structs) braucht sieht ein durchschnittlicher Assembler Programmierer alt aus. Da gehört dann schon jahrelange Erfahrung dazu, um den Code gescheit zu strukturieren UND performant zu machen.
C und C++ haben aber noch einen riesigen Vorteil gegenüber den anderen Sprachen: DirectX. Nirgendwo anders lässt sich so einfach DX verwenden.

Zu Java (und teilweise auch C# und .NET): An sich lässt sich hiermit auch sehr gut ein Spiel programmieren. Allerdings ist man dann besonders bei Java auf OpenGL angewiesen, was an für sich überhaupt nicht schlimm sein muss. Insgesamt kann man aber sagen, dass es sich eher weniger lohnt, da das Spiel am Ende plattformunabhängig ist und man so natürlich immer nur den größten gemeinsamen Nenner nutzen kann und genau das schließt unter Linux verdammt viel aus, da der Großteil der Linux Nutzer die freien Treiber benutzt, die aktuell bei OpenGL 2 rumeiern, während unter Windows schon Version 4 verfügbar ist. Dann gibt es natürlich 2 Varianten für Java (ich hab mich damit nicht auseinandergesetzt, also weiß ich auch nicht welche Java wählt): 1. Es werden nur die alten Spezifikationen unterstützt und alle 'neuen' Befehle, werden in mehrere alte zerlegt. Oder 2. in der JVM ist ein Wrapper, der dann z.B. unter Linux die OpenGL4 Befehle live in OpenGL2 umsetzt. Am Ende ärgert man sich auf jeden Fall über die Performance (bei großen Spielen).

Andere Sprachen: Heutzutage gibt es fast in jeder Sprache eine Anbindung an OpenGL, also egal ob man nun C, C++, C#, Java oder auch eine funktionale Sprache wie Haskell nimmt.

Dann gibt's natürlich noch das Thema OpenGL vs. DirectX. An und für sich sehr einfach zu entscheiden: Will man auf ein riesiges (und nebenbei auch sehr sehr gut dokumentiertes) Framework zurückgreifen, mit dem man in sehr wenigen Schritten große Erfolge feiern kann, dann sollte man zu DirectX greifen. OpenGL bietet im Prinzip die selben Möglichkeiten, aber der Weg ist verdammt steinig: Die Dokumentation ist so brauchbar, aber auf keinen Fall so umfangreich und gut wie die von DirectX. Hinzu kommt, dass man viel mehr Wissen über das Geschehen auf der Grafikkarte braucht, um 'schöne Effekte' hinzubekommen. Aber der Wohl größte Kritikpunkt: Wenn man einsteigen will und Beispiele sucht ist das Internet voll von DirectX und für OpenGL findet man eher die LowLevel basics.
Ich will damit keineswegs OpenGL schlecht reden, es hat seine Berechtigung und man kann theoretisch damit mehr und performanter machen, als mit DX. Aber das Ganze kostet viel Zeit (oder man nimmt ein gutes Framework, so wie es DX praktisch gesehen auch ist). Die ganzen großen Spieleentwickler machen es einem schon schwer noch an die große Zukunft von OpenGL als Sprache für Spiele zu glauben ;)
 
Üblicherweise durch eine Engine (Beispiel: Unity, Torque, etc.). Diese sind meistens in C/C++ programmiert.
 
benneque schrieb:
Die ganzen großen Spieleentwickler machen es einem schon schwer noch an die große Zukunft von OpenGL als Sprache für Spiele zu glauben ;)

  1. OpenGL ist eine API, keine Sprache
  2. iOS
  3. Android
  4. Nintendo
  5. Symbian (auch wenn unbedeutend)
  6. PSP & Playstation (bei letzterem wird es zwar gemieden, ist aber möglich)

Ich würde nicht darauf wetten, dass OpenGL keine Zukunft hat :)
 
Dann hättest du auch gleich DirectX als 'Sprache' kritisieren sollen :D falls ich das überhaupt geschrieben hab. :D

Auf den ganzen aufgelisteten Geräten hat man aber eine exteme Abstraktion von OpenGL (außer auf der Playstation). Aber ist ja klar, dass es überall genutzt werden muss, wo nicht Microsoft drauf steht ;)

Aber zum EINFACHEN Einstieg würde ich C++ und DirectX wählen, auch wenn ich kein Fan davon bin. Fakt ist, dass die 'Großen' es alle nutzen und dass die Doku extrem gut ist.
 
Vorteil von OpenGL ist halt, dass man damit Plattformunabhängig programmieren kann. DirectX funktioniert nur unter Windows.

@delta team: Ja es wird zum größtenteil auf C++ gesetzt. Falls du aber vorhast programmieren zu lernen, weil du gerne Spiele entwickeln möchtest, rate ich dir eher zu Sprachen wie C#. C++ benutzt man in der Regel nur, wenn man wirklich das letzte bisschen Leistung aus dem System rauskitzeln will. Aber als Hobbyentwickler wird man ohnehin nie an die Grenzen des Systems, oder der Sprache selber kommen.
 
benneque schrieb:
Aber ist ja klar, dass es überall genutzt werden muss, wo nicht Microsoft drauf steht ;)

Aber zum EINFACHEN Einstieg würde ich C++ und DirectX wählen, auch wenn ich kein Fan davon bin. Fakt ist, dass die 'Großen' es alle nutzen und dass die Doku extrem gut ist.

Ich will nur klar stellen, dass es einen riesigen Markt neben Windows gibt.
Bzgl. der Empfehlung, siehe nächste Absatz.

Teddymaddy schrieb:
@delta team: Ja es wird zum größtenteil auf C++ gesetzt. Falls du aber vorhast programmieren zu lernen, weil du gerne Spiele entwickeln möchtest, rate ich dir eher zu Sprachen wie C#. C++ benutzt man in der Regel nur, wenn man wirklich das letzte bisschen Leistung aus dem System rauskitzeln will. Aber als Hobbyentwickler wird man ohnehin nie an die Grenzen des Systems, oder der Sprache selber kommen.

Jemand, der mir aus der Seele spricht :)
Wenn du schnell Ergebnisse sehen willst, lohnt sich evtl. ein Blick auf das XNA Game Studio für dich. Damit wirst du auch erstmal nicht allzu schnell an deine Grenzen stoßen.
 
Oh ja genau, das XNA hatte ich voll vergessen. Einfacher geht's nun wirklich nicht :)
Damit sind nicht nur schnelle Ergebnisse möglich, sondern auch schöne Ergebnisse!
 
holy schrieb:
  1. OpenGL ist eine API, keine Sprache
  2. iOS
  3. Android
  4. Nintendo
  5. Symbian (auch wenn unbedeutend)
  6. PSP & Playstation (bei letzterem wird es zwar gemieden, ist aber möglich)

Ich würde nicht darauf wetten, dass OpenGL keine Zukunft hat :)

Nicht zu vergessen WebGL als OpenGL ES binding für Javascript, es ist abzusehen dass das ganz ohne Spieleindustrie groß wird. Und wenn man sowieso mal von Spielen weg geht, dann findet man OpenGL überall, z.B. bei allen möglichen CAD Tools.

Aus PC-Sicht geht Microsoft mit XNA gerade in eine fragwürdige Richtung, was man schon daran sieht, dass man das aktuelle XNA nur über die Phone Developer Tools bekommt, auch wenn man gar kein WP7 hat. Man möchte den Leuten erlauben, möglichst für 3 Plattformen gleichzeitig zu programmieren (Windows, Windows Phone, Xbox). PC-spezifische Dinge wie Direct X 10 und 11 interessieren da nicht mehr.
 
Zuletzt bearbeitet:
Ja natürlich kriegt man es auch ohne die Mobile Tools.
Im Grunde ist es nichts anderes als ein Addin für das Visual Studio. Da der ganze kram 'managed' ist, wundert es auch nicht, dass der kleinste gemeinsame Nenner gewählt wurde. Das hindert dich aber nicht daran, falls du nur für den PC entwickelst, auch DirectX > 9 zu verwenden, allerdings dann nur über PInvoke bzw. Interop falls du in C++ schreibst.
 
Zurück
Oben