Wird C ++ in der Spieleentwicklung immer noch bevorzugt? [geschlossen]

17

Ich bin ein 2D Game Programmer. Einige Programmiersprachen, in denen ich gut bin, sind C, Java, C #. Ich kenne auch Actionscript 2.0.3.0 und etwas Javascript. Ich interessiere mich für das Erlernen der Programmierung von 3D-Spielen. Bisher habe ich mich nicht mit der Forschung befasst, sondern verschiedene Foren und Artikel zur Spieleentwicklung gegoogelt und gelesen. Mir ist aufgefallen, dass die meisten Programmierer C ++ bevorzugen.Auch in einem Online-Programmierkurs habe ich festgestellt, dass sie C ++ und Visual C ++ als Startkurs bevorzugen. Der Grund, warum ich diese Frage stelle, ist, dass ich den "Stärkendifferenz" von C ++, C # und Java für die Programmierung von 3D-Spielen kennen möchte.

Enthält auch Links zu guten 3D-Programmierartikeln für den bereits 2D-Programmierer.

PS: IMHO finde ich auch C ++ kryptisch.

Vishnu
quelle
Das verstehe ich auch sehr. Also stellte sich die Frage in der Community, welche Fähigkeiten ein professioneller Spieleprogrammierer haben sollte. Ich habe ein paar nette Antworten bekommen, die sich auf C ++ als bessere Sprache für die Entwicklung von Spielen konzentrieren. überprüfen .. gamedev.stackexchange.com/questions/5552/...
GamDroid
@GamDroid: Ich bin nicht daran interessiert zu wissen, was einen professionellen 2D-Spieleprogrammierer ausmacht. Ich interessiere mich für Visual C ++ und warum wird darüber so viel geredet.
Vishnu
2
Übrigens: Visual C ++? Nicht nur C ++?
Speeder
Der Visual C ++ - Editor ist cool, aber die Sprache Visual C ++ (dh C ++ mit Win32-GUI-API und dergleichen, sowohl mit MS Visual C ++ als auch mit Borland C ++ Builder) ist ziemlich verwirrend und sollte nicht für Spiele verwendet werden (es ist auch so) aufgebläht, und die Verwendung von GDI ist langsamer als die Verwendung von SDL, um das Fenster zu steuern)
Speeder
1
@ Vish, entschuldige dich dann, zögern Sie nicht, es zu bearbeiten, um genauer zu sein, unter Berücksichtigung der Kommentare bis jetzt. Wenn Sie meinen, dass die Win32-Programmierung verwirrend ist, dann sagen Sie das.
Tetrad

Antworten:

30

Ja, C ++ ist die am häufigsten verwendete Sprache (obwohl einige Leute immer noch C verwenden).

Dafür gibt es zahlreiche Gründe. Schiere Dynamik ist eine - es ist einfach die Sprache, die seit Jahren verwendet wird, es gibt bereits eine Menge Technologie und die Leute fühlen sich damit wohl, so dass Veränderungen nicht über Nacht stattfinden werden.

Dann ist da noch die Frage der Kontrolle. Spieleentwickler sind Kontrollfreaks und wir möchten alles wissen, was in unserem Code vor sich geht. C ++ gibt uns die Kontrolle, C # und Java (um die beiden Alternativen auszuwählen, die Sie erwähnen) nehmen die Kontrolle weg. In vielerlei Hinsicht mag das eine gute Sache sein, aber Game-Codierer mögen es nicht :)

Schließlich gibt es das einfache praktische Problem, dass die SDKs für verschiedene Plattformen sehr C ++ -zentriert sind. Die Verwendung einer anderen Sprache erfordert zwangsläufig das Schreiben von Wrappern, das Cross-Compilieren auf VMs und möglicherweise (im Falle einiger Konsolenentwicklungen) das Nichtzulassen durch den Plattforminhaber (sie mögen es nicht wirklich, wenn Leute anfangen, JIT zu kompilieren).

JasonD
quelle
2
In der Mainstream-Entwicklungsbranche ja.
JasonD
2
In Bezug auf Sprachen, vor allem C ++ - es wird in absehbarer Zeit nirgendwo hingehen. Ich würde vorschlagen, dass es auch nicht schaden würde, mit Skriptsprachen vertraut zu sein - Lua, Python usw.
JasonD
8
Visual C ++ ist keine Sprache, sondern eine IDE.
SurvivalMachine
2
Ja, obwohl es wahrscheinlich die am häufigsten verwendete IDE ist, lohnt es sich, dies gleichzeitig mit dem Erlernen von C ++ kennenzulernen.
JasonD
1
@ SurvivalMachine Nun, technisch gesehen ist es ein Dialekt (es gibt viele MSVC ++ - Erweiterungen, die es im Standard nicht gibt)
Bobobobo
4

C ++ wird immer noch bevorzugt, wie Sie auf so ziemlich jeder Veröffentlichung zum Thema Spieleentwicklung sehen können. Ich persönlich benutze derzeit C für mein Eintauchen in die Spieleentwicklung, aus dem einfachen Grund, dass der von mir geschriebene C ++ - Code Vorlagenfunktionen missbraucht, RAII ausgiebig verwendet, Speicher dynamisch zuweist und andere Dinge, die Sie im Spielcode nach dem, was ich gesehen habe, einfach nicht tun sollten bisher.

Das Festhalten an C zwingt mich, minimalistisch zu sein und darüber nachzudenken, was ich tue. Es kann schwieriger sein, wenn Sie etwas, das die STL Ihnen kostenlos zur Verfügung stellt, erneut implementieren müssen, aber ich habe das Gefühl, dass ich saubereren Code schreibe und eine bessere Zeit habe, das Ding zu debuggen.

Armin Ronacher
quelle
3
RAII ist im Spielcode vollkommen akzeptabel (und sollte gefördert werden).
Stonemetal 18.11.10
1
@stonemetal: RAII fördert eine verzögerte und daher unvorhersehbare Ressourcenallokation. Ob dies gefördert werden sollte oder nicht, hängt von der Größe Ihres Spiels und Ihren Zielplattformen (und der fraglichen Ressource) ab. Im Durchschnitt würde ich es nicht fördern. Darüber hinaus wird RAII in C ++ am häufigsten für die Heap-Zuweisung verwendet, da die Stapelzuweisung durch C ++ zu schwierig wird.
3
Inwiefern fördert RAII die verspätete Zuteilung von Ressourcen? Wenn ich GLFW verwende, erstelle ich eine Klasse namens GLFWRAII, die die Init-Funktion von GLFW im Konstruktor aufruft und die Bereinigungsroutine von GLFW im Destruktor aufruft. Ich habe es am Anfang des Mains auf den Stack gelegt, es verzögert nichts und macht auch nichts Unvorhersehbares. Andere Verwendungszwecke können das Zuweisen am Anfang eines Levels und das Aufräumen am Ende eines Levels sein. Schlechtes Verwenden einer Technik macht sie nicht zu einer schlechten Technik. Nichts über RAII deutet auf eine unvorhersehbare Ressourcenzuweisung hin, außer auf eine schlechte Nutzung.
Stonemetal
Sie müssen nur vermeiden, diese Funktionen zu verwenden. Ich verwende C ++ und verwende in meinem Code niemals Vorlagen und Objekte, die Ausnahmen in ihren Konstruktoren auslösen. In C können Sie weiterhin die dynamische Zuordnung verwenden (und Sie müssen für ein 3D-Spiel). Außerdem sollten Sie so programmieren, dass es auch andere leicht verstehen - ein großes Projekt in reinem C-Code kann eine Hölle sein, auch wenn Sie es verstehen. Wenn Sie lernen, darüber nachzudenken, was Sie tun, auch wenn die Sprache Sie nicht dazu zwingt, können Sie sauberen Code auch in vielen anderen Sprachen schreiben.
Pablo Ariel
1

Ich persönlich bin kein Fan von C ++ und ich bevorzuge Java. Die meisten Leute in der Branche verwenden es jedoch und es ist die einfachste Sprache, um ohne Wrapper und virtuelle Maschinen auf andere Plattformen zu konvertieren.

Manchmal funktionieren andere Sprachen jedoch ziemlich gut für die Spieleentwicklung. Ich benutze Java mit LWJGL und es ist erstaunlich. Wenn Sie also mit 3D-Programmierung und OpenGL beginnen möchten, ohne C ++ lernen zu müssen, probieren Sie LWJGL mit Java aus, da es sehr leicht ist und ich denke, dass es sich tatsächlich um C ++ - Code handelt, der über JNI ausgeführt wird.

Vielleicht möchten Sie langfristig zu C ++ wechseln, aber Sie können mit C # oder Java beginnen und üben. Da die meisten Spielcodes aus Erfahrung mit der Sprache stammen, sollten Sie OpenGL jedoch mit einer Sprache üben, mit der Sie vertraut sind. Während Sie Grafik üben, sollten Sie auch GLSL mit OpenGL ausprobieren. Es hat eine sehr C-ähnliche Syntax

Romejanisch
quelle