Welche Programmiersprachen benutzen AAA Games?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

So gut wie alle großen Spiele werden mit mehreren Programmiersprachen entwickelt.

Die gängigen Engines laufen fast alle mit C++, da diese Sprache einige Performance-Vorteile durch die Pointer-Mechanik bietet. Dazu zählt die Frostbite Engine, Die Unity Engine, die Unreal Engine, die Red Engine, und zig weitere ... die kennst du sicherlich.

Die Engine bietet allerdings nur das Grundgerüst. Ein Framework welchem erst noch zur Laufzeit gesagt werden muss, was wo und wie hingezeichnet werden soll. Die Programmierung dieser Ingame-Abläufe und Spiel-Logik wird in den meisten Spielen mit Skriptsprachen oder skript-ähnlichen Programmiersprachen gemacht. Da gibt es alles mögliche. Die Unity Engine kann mit C# gesteuert werden, die Frostbite wird glaube ich mit einer Dice-eigenen Skriptsprache gesteuert, die Arma Engine mit Lua und so weiter und so fort.

Das bedeutet also vor allem für Neueinsteiger wie dich die in die Spieleentwicklung wollen, dass sie sich im Vorfeld entscheiden müssen, in welchen Bereichen sie tätig sein wollen. Die Entwickler-Teams der Engine sind meistens eine Mischung aus Mathematikern, Physikern, Informatikern und auch Hardwarespezialsiten.
Die anderen Teams weiter oben bestehen aus Designern und Programmieren.

Ich bin eher bei den Designern und Programmierern angesiedelt. Ich kann die Unity und Unreal Engine bedienen und meine Ingame-Logik programmieren. Verstehen wie die Engine in ihren Grundzügen funktioniert kann ich zwar, aber das ist weit von dem entfernt was da unten tatsächlich passiert.

Ich empfehle jedem der mit der Spieleentwicklung beginnen will und noch nicht programmieren kann, sich C# Tutorials anzugucken und nach gewisser Einarbeitungszeit sich die Unity Engine zu Gemüte zu führen. Sowohl C# als auch de Unity Engine sind einsteigerfreundlich.

LG Knom

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler mit 10 Jahren Berufserfahrung 💾
DunnoWhoAmI 
Fragesteller
 01.10.2019, 09:40

Die Physik in den Spielen wird also nicht von der Engine gegeben, oder? Also das kann man nach eigenem Ermessen implementieren..?

0
Knomle  01.10.2019, 10:35
@DunnoWhoAmI

Doch schon. Die Engine stellt die Physik und realistischen Eigenschaft der 3D Objekte bereit. Du kannst mit deiner Programmierung diese physikalischen Eigenschaften verändern, zum Beispiel die Gravitation erhöhen.

Wenn du zum Beispiel 2 Kugeln definierst dann haben diese zwei Objekte in der Engine bereits Eigenschaften. Sie können aufeinander treffen, rollen und haben eine Flugbahn wenn sie geworfen werden. Du musst dich nur noch darum kümmern das diese 2 Kugel da auftauchen wo sie für deine Spiel-Logik hingehören.

0
DunnoWhoAmI 
Fragesteller
 01.10.2019, 10:51
@Knomle

Das heißt wenn ich - und ja das ist ein sehr weiter weg dahin, ich weiss - mir als "Endziel" setze ein "revolutionäre" VR Spiel zu entwickeln, dann müsste ich eine neue Engine entwickeln, damit die Physik besser/ näher an der Realität ist, korrekt? Kann ich eine solche Engine auch mit C#/++ schreiben?

0
Knomle  01.10.2019, 11:17
@DunnoWhoAmI

Du kannst nicht einfach eine neue Engine schreiben. Da stecken tausende Mannjahre an Arbeit drin. Die Unreal Engine kann theoretisch super realistische VR Spiele darstellen. Die Hardware ist das Problem und der Markt. Es kaufen zu wenige VR Spiele weil die Brillen so teuer sind.

0
DunnoWhoAmI 
Fragesteller
 01.10.2019, 14:19
@Knomle

Das ich das nicht "einfach machen" kann ist mir klar. Mein Ziel ist es soetwas in 10+ Jahren oder so zu starten. Also nach dem Studieren etc.

Vielen Dank für die ganzen Infos =)

0
regex9  01.10.2019, 15:19
@DunnoWhoAmI

So eine Engine müsste nicht gänzlich neu sein. Gerade in deinem Fall möchtest du ja nur ein Modul umschreiben. Du kannst dafür also immer noch auf bereits bestehenden Bibliotheken aufbauen. Bevor du mit so etwas beginnst, würde ich allerdings dennoch empfehlen, erst einmal nach anderen Lösungen Ausschau zu halten. Entweder gibt es vielleicht schon nutzbare Tools, die deine Anforderungen erfüllen oder du kommst mit einer passenden Konfiguration an dein Ziel.

Kann ich eine solche Engine auch mit C#/++ schreiben?

Ja, möglich ist es.

1

Du kannst alles in jeder Programmiersprache programmieren. Jede ordentliche Programmiersprache sollte Touring vollständig sein. Manche eignen sich halt besser als andere.

Ich würde mir eine engine Oder library suchen als Anfänger. Und dann anhand der engine die Sprache auswählen. Für python gibt es pygame z.B.. das macht dir vieles leichter.

Oft wird sowas wie C++, lua oder C# benutzt. Bei League of Legends werden mindestens 7 Programmiersprachen bei der Entwicklung von verschiedenen Komponenten eingesetzt. Java und PHP Entwickler haben die auch.

Ist also nicht so dass das ein großes Team von c# Entwicklern ist, sondern das nutzt Komponenten in mehreren Programmiersprachen.

Zumeist mehrere. In der Entwicklungsphase macht es Sinn, die Arbeiten aufzuteilen und zwischen verschiedenen Programmbereichen zu unterscheiden. Während über Programmbibliotheken / eine Engine, die üblicherweise auf C/C++ basiert/-en Basisfunktionalitäten geliefert werden (Funktionen zur Wiedergabe von Sounds, zum Rendering der grafischen Elemente, u.ä.), nutzt man für die Implementation der reinen Logik oft eine andere, einfachere Sprache (z.B. Lua, C#, Python, C-ähnliche Sprachen, visuelle Programmiersprachen, ...). Für WOW wurde bspw. Lua verwendet.

Bei großen Projekten nutzt man außerdem ab und an noch weitere Programmiersprachen (z.B. Perl, Python, PowerShell Script Language, Java, Erlang, ...) für diverse Aufgaben drumherum (Serverprogrammierung, Datenverwaltung, Building). Das dürfte für dich aber weniger relevant sein.

Insofern würde ich dir empfehlen, eine der oben genannten Sprachen zum Skripting zu lernen und diese dann in Kombination mit einer Engine zu verwenden. Da nicht jede Engine für jede Sprache Support anbietet, wäre es ratsam, sich im Vorfeld etwas zu informieren (nutze die GF-Suche!). Folgend liste ich nur eine mögliche Kurzform zu den bisher genannten Sprachen:

  • Amazon Lumeryard: Lua
  • CryEngine: Lua, C#
  • Panda3D: Python
  • Unity3D: C#
  • Unreal Engine: Visual Blueprints und C++ (du solltest in dem Fall beides lernen)
Kann man damit soetwas wie ein World of Warcraft, Battlefield (...) programmieren?

Abgesehen von der Logikimplementation besteht ein Spiel noch aus anderen Elementen: Sound, Spielobjekten, einem UI (Inventar, Menü, ...). Es kann daher sein, dass du dich auch mit der Erzeugung solcher Ressourcen beschäftigen musst. Nebenher stehen noch weitere Themen wie Leveldesign oder Storytelling im Raum. Das darf keinesfalls unterschätzt oder vergessen werden. Und bei Online-Spielen sind natürlich noch zusätzliche Ressourcen für die Datenverwaltung und Kommunikation vonnöten: Server, Datenbanken. Plattformen wie AWS oder Azure könnten so etwas stemmen.

Zu guter Letzt noch ein Rat zu deinem konkreten Vorhaben, irgendwann einmal AAA-Spiele zu entwickeln: Schalte generell ein paar Gänge herunter. AAA-Spiele werden mit drei A's belegt, weil sie Riesenprojekte kennzeichnen sollen, die nicht nur hohen zeitlichen Aufwand erfordern, sondern auch viel Geld. Du hast sicherlich schon einmal den Abspann von einem EA-/Ubisoft-/...-Spiel gesehen, in dem erst einmal eine Reihe an verschiedenen Studios aufgelistet werden, mit Entwicklern verschiedener Bereiche (Audio, grafische Gestaltung, Testing, ...), alle den Senior-Titel bereits in der Berufsbezeichnung. Solltest du also jemals Spiele dieser Kategorie entwickeln, dann wohl eher nur in einem Team erfahrener Entwickler.

DunnoWhoAmI 
Fragesteller
 01.10.2019, 08:46

Wird die Physik in Spielen durch die Engine gegeben? Oder ist die nur zur grafischen Darstellung da? Welche Sprachen benötigt man um eine Engine selbst zu schreiben?

Vielen Dank für die vielen Informationen in der Antwort! War sehr hilfreich. =)

0
regex9  01.10.2019, 15:12
@DunnoWhoAmI
Wird die Physik in Spielen durch die Engine gegeben?

Wenn man eine Engine nutzt, ja. Wenn man sich alle Tools selbst zusammenwürfelt, würde ich dennoch empfehlen, eine bereits fertige Implementation zu verwenden (wie bspw. ode4j, box2d, ...).

Oder ist die nur zur grafischen Darstellung da?

Was du generell alles von einer Spiel-Engine geboten bekommen kannst, lässt sich im dazu passenden Wikipedia-Artikel nachlesen. Ansonsten verrät es die Dokumentation einer solchen natürlich ebenso.

Welche Sprachen benötigt man um eine Engine selbst zu schreiben?

Das habe ich oben bereits erwähnt. Alternativ kannst du aber natürlich auch irgendeine andere Programmiersprache einsetzen. Ob sich die gewählte Alternative wirklich eignet, verrät oft bereits die Dokumentation der Sprache (s. Einsatzzweck). PHP beispielsweise wäre eher ungeeignet für so ein Vorhaben, da die Sprache ausschließlich für die Webentwicklung konzipiert wurde.

1

C# sollte da auch ein Vorreiter sein, aber bis du WOW-Level erreichst musst du noch viel ackern.

kleinere Spiele kann man mittlerweile auch schön mit JavaScript programmieren.

Python ist geil. Aber hochauflösende Spiele wie Battlefield werden in engines und mit C erstellt

Tyldu  01.10.2019, 08:43

eher c++

1