web-dev-qa-db-fra.com

Programmation de jeux: C # ou C ++?

J'ai décidé que je voulais vraiment faire de la programmation de jeux. Donc la question est, en tant que 18 ans qui veut apprendre la programmation autodidacte, quel est le langage de programmation le plus adapté entre C # et C++? (Je dois dire que je ne me soucie pas d'Unix car je pense que Windows sera toujours le système d'exploitation le plus utilisé)

Je connais les bases du C++, mais rien sur le C #. Je sais que C++ a plus de guides de didacticiels, de DLL et d'autres trucs comme ça, alors que C # ne le fait pas, mais il est beaucoup plus facile à apprendre et à utiliser pour une seule personne pour développer un programme, mais j'ai lu même si le programme est obscurci il est facile d'en obtenir la source.

Eh bien, je veux d'abord me concentrer sur le basique, je dois dire que j'ai une préférence pour le C++ juste parce qu'il me semble plus approprié, mais je dois considérer que je travaille seul. Donc, même si j'aime ça, ce n'est peut-être pas la meilleure chose à faire.

Je ne sais vraiment pas lequel choisir, j'ai lu beaucoup de discussions sur divers sites Web et il semble que C # devienne plus populaire que C++. Mais oui, cela dit, j'ai également précisé que je voulais faire de la programmation de jeux. J'ai donc besoin de connaître de meilleurs points que simplement "C # est plus facile à cause de la gestion de la mémoire .net alors que C++ ne l'est pas" parce que je ne pouvais pas le trouver.

15
Chronix

J'apprends le C++ en programmant un jeu. Ce fut une expérience très agréable. Je vous encourage fortement à faire de même!

Cependant, maintenant que je suis un programmeur C #, je sais que j'aurais été beaucoup plus productif si C # était disponible à l'époque.

C # est le choix parfait pour apprendre le développement de jeux. Il a tout ce dont vous avez besoin pour commencer des frameworks aux livres et le langage est incroyable.

J'ai vu des dizaines de livres spécifiquement écrit sur Programmation de jeux C # et Microsoft met beaucoup d'efforts pour améliorer ses cadres, y compris DirectX et [~ # ~] xna [~ # ~] .

[~ # ~] mise à jour [~ # ~] : vous pouvez également être intéressé par this . Il s'agit d'un récent article de blog de Miguel de Icaza .

MISE À JOUR 2013-02-22 Microsoft prévoit de cesser le support XNA .

21
user2567

La plupart des sociétés de jeux utilisent C++, peut-être avec des scripts python ou d'autres langages exécutés en arrière-plan. Des trucs Direct3d en C #) mais pour la programmation de jeux, C++ est le langage MAIN.

Je vais vous donner un avertissement juste (et ne laissez pas cela vous dissuader), mais les graphiques 3D peuvent devenir extrêmement compliqués. Le nouveau Direct3D a rendu les choses un peu plus faciles qu'auparavant, mais c'est quand même un peu de maths (qui peut devenir assez déroutant) et seules les bibliothèques elles-mêmes peuvent être déroutantes.

Je commencerais par quelque chose de très simple en premier. pour les trucs 2D, SDL (Simple Directmedia Layer) est beaucoup plus facile à utiliser (pour quelque chose comme un jeu descendant) une fois que vous entrez dans la 3D, je pense PERSONNELLEMENT qu'OpenGL est plus facile à apprendre (mais ce n'est qu'une opinion). MS a quelques beaux tutoriels/exemples dans leur documentation SDK DirectX, donc ça vaut le coup d'y jeter un œil. Les tutoriels Nehe bien qu'un peu dépassés sont quand même sympas.

mais pour répondre à votre question, elles se font toutes en C++ typiquement.

12
user6791

Vous voudrez d'abord définir certaines priorités. Voulez-vous simplement créer un jeu d'abord, puis en apprendre davantage sur les aspects les plus avancés de la programmation plus tard, ou vice versa. Les deux approches ont leurs avantages et leurs inconvénients, mais elles sont toutes deux légitimes à mon avis.

Si vous souhaitez commencer à créer des jeux, je vous recommande d'apprendre le C #. Si vous connaissez déjà les bases du C++, vous ne devriez avoir aucun problème à choisir C #. Faire de C # votre outil présente des avantages. C'est un langage facile à apprendre (par rapport au C++) et c'est un "langage managé", ce qui signifie qu'il fait automatiquement la plomberie de la mémoire pour vous (quelque chose que beaucoup de débutants C++, et même pas les débutants, ont des problèmes avec ). Il vous donne également accès au framework XNA de Microsoft qui fait encore plus de plomberie fastidieuse pour vous. Cela vous laisse vous concentrer sur des choses comme le cycle de jeu et la conception, sans avoir à vous soucier (trop) de le faire fonctionner. Certes, toute cette insta-plomberie a ses frais généraux, ce qui signifie que vous ne ferez probablement pas de jeux 3D de qualité industrielle, mais vous vous lancez dans la programmation de jeux, donc je doute que vous fassiez le prochain Halo lors de vos premiers essais . :)

Voici un post mortem du gars qui a développé un jeu XNA réussi (Weapon of Choice). Il détaille comment l'utilisation de C #/XNA lui a fait gagner du temps de développement au lieu d'avoir à utiliser C++. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php

Cela étant dit, vous devez consacrer du temps à au moins savoir comment les choses fonctionnent en arrière-plan. Comment un programmeur C++ le ferait. Apprendre à créer un jeu en C++ pourrait rendre plus facile de rejoindre une autre équipe de développement de jeux (car la plupart d'entre eux travaillent en C++), si ce que vous voulez, c'est prendre pied dans l'industrie du jeu. Mais même si vous n'utilisez jamais C++, savoir comment fonctionnent les composants internes ne peut que faire de vous un meilleur programmeur, quel que soit le langage que vous utilisez.

8
System Down

La programmation du jeu brut va vous laisser assez froid. Travailler avec des appels graphiques de bas niveau en C # ou C++ est un cauchemar mineur et vous ne voulez vraiment pas reconstruire la roue du rendu des sprites 2D et encore moins des modèles 3D. Puisque vous êtes seul et que vous voulez apprendre la programmation, votre meilleur pari est de trouver un cadre qui peut vous mettre un peu en avant.

Puisque vous avez une certaine familiarité avec le langage C, ma suggestion serait de donner un coup d'œil à nity 3D . Non seulement il connaît une adoption sérieuse dans les boutiques de développement de jeux commerciaux et possède des options de plate-forme intéressantes (y compris les runtimes PC, Android, iPhone et Web), mais il a également une version gratuite très facile à utiliser et de nombreux tutoriels pour vous montrer comment passer du concept à la mise en œuvre. Le meilleur de tous (IMO), l'un des langages de script pris en charge est C #.

3
Jacob Proffitt

Je fais la promotion de C++ pour le développement de jeux. Il y a quelques obstacles supplémentaires, avec divers avantages et inconvénients, l'une des meilleures raisons étant la portabilité.

Avec C #, vous pouvez développer un peu plus ces jours-ci, et il y a à coup sûr des moteurs incroyablement excellents. Les deux sont de bons langages pour la programmation de jeux, si vous ne ciblez que les plates-formes Windows/Xbox, vous aurez surtout des raisons de vous pencher vers C #.

La langue que je pense que vous devriez apprendre le plus serait OpenCL ou CUDA, une langue GPGPU. Personnellement, je préfère OpenCL car il semble susceptible de durer plus longtemps et de se développer davantage, il s'agit essentiellement d'un style C. Il y a OpenTK qui est un bon emballage pour C++ ou C #.

Je me suis toujours demandé à quoi ressemblerait la programmation du jeu Ruby avec l'accélération matérielle ...

3
Garet Claborn

J'ai fait un jeu pour une classe il y a deux ans (j'avais 18 ans à l'époque) et nous l'avons fait en C #. Bien que j'observe que les grands programmes C # fonctionnent généralement plus lentement que les grands programmes C++, C # nécessite également beaucoup moins de travail de votre côté. La gestion de la mémoire se fait automatiquement, et pour la portée d'un premier jeu, c'est assez rapide. (Notre jeu est un RTS multijoueur 2D à part entière comme Starcraft.)

Je prendrais racine pour C # car il devrait être plus facile à gérer. Cependant, si vous voulez devenir un développeur de jeux professionnel, n'oubliez pas qu'il ne fonctionne que sur les plateformes Microsoft. (Pourtant, C # peut être un bon tremplin vers C++, et si je devais réapprendre les deux langages, j'essaierais d'abord d'apprendre C #.)

2
zneak

Je voterais en C++ - principalement parce qu'il peut être multiplateforme (selon la façon dont vous écrivez votre code, bien sûr) et aussi parce que je pense qu'il vous donne plus de connaissances sur la gestion de la mémoire - parce que vous besoin de s'en soucier. Mais comme vous ne vous souciez pas de linux/unix, si vous voulez laisser la complexité de la mémoire pour le moment, pourquoi ne pas vous concentrer en C # maintenant et apprendre aussi le C++?

1
Mauren