Le C ++ est-il "toujours" préféré dans le développement de jeux? [fermé]

17

Je suis un programmeur de jeux 2D. Certains langages de programmation dans lesquels je suis bon sont C, Java, C #. Je connais également Actionscript 2.0,3.0 et certains javascript. Je suis intéressé à apprendre la programmation de jeux 3D. Loin des recherches que j'ai accumulées en recherchant et en lisant différents forums et articles de développement de jeux. J'ai remarqué que la plupart des programmeurs ont tendance à préférer le C ++. Également dans un cours d'enseignement de programmation de jeux en ligne j'ai remarqué qu'ils préfèrent enseigner C ++ et Visual C ++ comme cours de départ. La raison pour laquelle je pose cette question car je voudrais connaître la différence de "force" de C ++, C # et Java pour la programmation de jeux 3D.

Incluez également des liens vers de bons articles de programmation de jeux 3D pour le programmeur de jeux déjà 2D.

PS: À mon humble avis, je trouve également que C ++ est cryptique.

Vishnu
la source
J'en reçois aussi beaucoup. J'ai donc posé une question dans la communauté sur les compétences qu'un programmeur de jeux professionnel devrait avoir. J'ai obtenu de belles réponses en se concentrant sur C ++ comme meilleur langage pour développer des jeux. check .. gamedev.stackexchange.com/questions/5552/…
GamDroid
@GamDroid: Je ne suis pas intéressé à savoir ce qui fait un programmeur de jeux 2D professionnel. Je suis intéressé à connaître Visual C ++ et pourquoi en parle-t-on ainsi.
Vishnu
2
Btw: Visual C ++? Pas seulement du C ++ simple?
speeder
L'éditeur Visual C ++ est cool, mais le langage Visual C ++ (c'est-à-dire: C ++ avec l'API Win32 GUI et des trucs comme ça, à la fois avec MS Visual C ++ ou Borland C ++ Builder) est assez déroutant et ne doit pas être utilisé pour les jeux (il est trop gonflé, et utiliser GDI est plus lent que d'utiliser, disons, SDL, pour contrôler la fenêtre)
speeder
1
@Vish, excuses alors, n'hésitez pas à le modifier pour être plus précis en gardant à l'esprit les commentaires jusqu'à présent. Si vous voulez dire que la programmation Win32 prête à confusion, dites-le.
Tetrad

Réponses:

30

Oui, C ++ est le langage le plus utilisé (bien que certaines personnes utilisent toujours C).

Il y a de nombreuses raisons à cela. L'élan en est un - c'est simplement le langage qui est utilisé depuis des années, beaucoup de technologies existent déjà et les gens sont à l'aise avec cela, donc le changement ne se fera pas du jour au lendemain.

Il y a ensuite la question du contrôle. Les développeurs de jeux sont des monstres de contrôle, et nous aimons savoir tout ce qui se passe dans notre code. C ++ nous donne ce contrôle, C # et Java (pour choisir les deux alternatives que vous mentionnez) prennent le contrôle. À bien des égards, cela pourrait être une bonne chose, mais les codeurs de jeux ne l'aiment pas :)

Enfin, il y a le problème pratique simple que les SDK pour diverses plates-formes sont très centrés sur C ++. L'utilisation d'un autre langage implique inévitablement l'écriture de wrappers, la compilation croisée vers les machines virtuelles et peut-être (dans le cas d'un développement de console) ce n'est pas autorisé par le titulaire de la plateforme (ils n'aiment vraiment pas les gens qui font de la compilation JIT, pour commencer).

JasonD
la source
2
Dans l'industrie du développement grand public, oui.
JasonD
2
En termes de langages, C ++, principalement - cela ne va nulle part de sitôt. Je dirais que cela ne ferait pas de mal non plus de se familiariser avec les langages de script - Lua, Python, etc.
JasonD
8
Visual C ++ n'est pas un langage, c'est un IDE.
SurvivalMachine
2
Oui, bien que ce soit probablement l'IDE le plus utilisé, il vaut donc la peine de le savoir en même temps que l'apprentissage du C ++.
JasonD
1
@SurvivalMachine Eh bien, techniquement, c'est un dialecte (il existe de nombreuses extensions MSVC ++ qui n'existent pas dans la norme)
bobobobo
4

Le C ++ est toujours préféré, comme vous pouvez le voir sur presque toutes les publications sur le thème du développement de jeux. Personnellement, j'utilise actuellement C pour plonger dans le développement de jeux pour la simple raison que le code C ++ que j'écris abuse des fonctionnalités de création de modèles, utilise largement RAII, l'allocation de mémoire dynamique et d'autres choses que vous ne devriez pas faire dans le code de jeu d'après ce que j'ai vu jusque là.

S'en tenir à C me force à être minimaliste et à penser à ce que je fais. Cela peut être plus difficile parfois lorsque vous devez réimplémenter quelque chose que la STL vous donne gratuitement, mais à la hausse, je pense que j'écris du code plus propre et que j'ai un meilleur moment pour déboguer cette chose.

Armin Ronacher
la source
3
RAII est parfaitement acceptable (et devrait être encouragé) dans le code du jeu.
stonemetal
1
@stonemetal: RAII encourage l'allocation des ressources retardée et donc imprévisible. Que cela soit encouragé ou non dépend de la taille de votre jeu et de vos plateformes cibles (et de la ressource en question); en moyenne, je ne l'encouragerais pas. De plus, RAII en C ++ est le plus souvent utilisé avec l'allocation de tas, car l'OO de C ++ rend l'allocation de pile trop difficile.
3
De quelle manière le RAII encourage-t-il l'allocation retardée des ressources? Lorsque j'utilise GLFW, je crée une classe appelée GLFWRAII qui appelle la fonction init de GLFW dans le constructeur et appelle la routine de nettoyage de GLFW dans le destructeur. Je l'alloue sur la pile au début du main, cela ne retarde en rien quoi que ce soit et ne fait rien d'imprévisible. D'autres utilisations pourraient être d'allouer au début d'un niveau et de nettoyer à la fin d'un niveau. Une mauvaise utilisation d'une technique n'en fait pas une mauvaise technique. Rien dans le RAII ne suggère une allocation de ressources imprévisible autre qu'une mauvaise utilisation.
stonemetal
Vous devez juste éviter d'utiliser ces fonctionnalités. J'utilise C ++ et je n'utilise jamais de modèles dans mon code ni d'objets lançant des exceptions dans leurs constructeurs. En C, vous pouvez toujours utiliser l'allocation dynamique (et vous devez le faire pour un jeu 3D). En outre, vous devez coder d'une manière que quelqu'un d'autre trouve facile à comprendre - un gros projet en code C pur peut être un enfer, même si vous le comprenez. Si vous apprenez à penser à ce que vous faites même si le langage ne vous y oblige pas, vous pourrez également écrire du code propre dans de nombreux autres langages.
Pablo Ariel le
1

Personnellement, je ne suis pas fan de C ++, et je préfère Java. Cependant, la plupart des gens de l'industrie l'utilisent et c'est le langage le plus facile à convertir vers d'autres plates-formes sans wrappers et machines virtuelles.

Cependant, parfois d'autres langages fonctionnent assez bien pour le développement de jeux. J'utilise Java avec LWJGL et c'est incroyable. Donc, si vous voulez commencer avec la programmation 3D et OpenGL sans avoir à apprendre le C ++, essayez LWJGL avec Java, car il est très léger et je pense que c'est en fait du code C ++ fonctionnant via JNI.

Peut-être qu'à long terme, vous voudrez peut-être passer au C ++, mais vous pouvez commencer et vous entraîner avec C # ou Java. Parce que la plupart du code de jeu provient de l'expérience avec le langage, mais vous devriez essayer et pratiquer OpenGL avec un langage avec lequel vous êtes à l'aise. De plus, pendant que vous pratiquez les graphiques, vous devriez également essayer GLSL avec OpenGL, il a une syntaxe très semblable à C

Romejanic
la source