C # a-t-il un avenir dans le développement de jeux?


18

J'ai récemment appris que le MMO Minecraft est propulsé par Java à partir d'une récente interview sur CVG.co.uk sur une éventuelle collaboration entre deux anciens et maintenant concurrents. Dans l'interview, il a dit sans détour que le fondateur de Minecraft est un codeur Java et qu'il est un codeur C ou C ++, ils sont donc incompatibles les uns avec les autres. Il sera donc difficile de collaborer sur de futurs projets.

Cela m'a fait penser, si Java pouvait le faire? Quel avenir pour le langage C # et la plateforme .Net très populaires de MS en ce qui concerne les jeux ou le développement de jeux grand public?



3
Tout dépend des performances dont vous avez besoin, Minecraft est correct dans un langage managé, mais pour les jeux graphiques haut de gamme, le C ou C ++ ou d'autres langages natifs sont préférés

19
Minecraft n'est pas vraiment un MMO.
DeadMG

3
@ Guillaume86: Le code instable peut actuellement surpasser le code natif, et les Jits s'améliorent tout le temps. De plus, les langages gérés produisent des programmes beaucoup plus robustes. Donc, à la fin, C ++ perd son avantage de performance et il est beaucoup plus difficile d'écrire des programmes robustes (ce qui signifie des temps de développement plus longs et plus de coûts)
Martin

4
Un JIT peut battre du code natif mal écrit, pas des boucles internes étroitement optimisées et réglées. Accordé même avec C #, vous avez la possibilité d'écrire ces segments sensibles en C / C ++ si vous le voulez vraiment.
coderanger

Réponses:


22

Vous devriez vérifier XNA . Une plate-forme pour créer des jeux pour Windows, Xbox 360 et Windows Mobile 7. Tout en C # et .NET.


11

Je travaille dans le développement de jeux professionnels depuis plus de 5 ans. La plupart du temps, j'ai utilisé C # presque exclusivement.

La pile C # et .NET en général est vraiment géniale pour la technologie côté serveur. J'ai travaillé sur pas moins de 4 jeux MMO avec un serveur écrit en C #. De plus, avec Unity3D qui gagne en popularité, de nombreux navigateurs ET jeux mobiles nécessitent C #. N'oubliez pas le framework XNA: ce n'est pas le moteur de choix pour les titres de console AAA, mais il y a beaucoup de grands jeux créés avec, et beaucoup plus en cours de création.

Dans l'ensemble, C # a définitivement un avenir dans le développement de jeux.


c'est une vieille question, mais une chose me dérange. "technologie côté serveur" - que voulez-vous dire exactement par là? Un WindowsService fonctionnant sur certains serveurs Windows utilisant .NET Framework? J'ai toujours pensé que les serveurs étaient faits en c ++ et fonctionnaient sous os unix. J'étais juste curieux
Marshall

Oui, exactement ça. Il existe de nombreux serveurs fonctionnant sous Windows, y compris ceux qui exécutent ce site, AFAIK.
Nevermind

merci d'être revenu vers moi. Juste pour clarifier - "en cours d'exécution sur Windows" en tant que services Windows sans tête ou programmes comme WinForms (avec configuration intégrée ou quelque chose comme ça)?
Marshall

Le service sans tête est généralement une meilleure idée, mais rien ne vous empêche d'exécuter simplement une application console. Ou même une interface graphique, sauf qu'il n'y a personne sur le serveur pour utiliser ladite interface graphique.
Nevermind

10

Comme cela a été mentionné, Mono apporte C # à plusieurs plates-formes. Dans cette même zone, vous trouverez Tao , une bibliothèque multiplateforme pour Mono et .NET qui permet d'accéder à Cg, DevIL, FreeGLUT, GLFW, GLU, ODE, OpenAl, OpenGL, PhysicsFS, SDL et WGL. Ce n'est évidemment pas aussi robuste quand il s'agit de fonctionnalités que XNA (qui fournit des composants de moteur fondamentaux directement au développeur); mais c'est très puissant.

Ainsi, une plate-forme croisée au-delà des OS et du matériel contrôlés par Microsoft est certainement possible. Mais pas autant de jeux indépendants populaires n'ont encore utilisé cette capacité.

Comme cela a également été mentionné, XNA couplé à C # permet aux développeurs indépendants de publier sur le 360, le PC et Windows Phone 7.

Dans l'ensemble, C # est bien vivant dans le développement de jeux en tant que moteur / langage de jeu.

En tant que langage d'outils, il est utilisé partout. J'ai construit des outils pour EA, THQ et maintenant Arkadium utilisant tous C #.


5

Non seulement C # a un avenir dans le développement de jeux, mais il a aussi un cadeau - Découvrez Magicka , un jeu récemment sorti (et qui se vend bien) qui a été développé avec XNA. Jetez également un œil aux entrées gagnantes de Dream.Build.Play . C # est un moyen viable de créer des jeux (bien que pour l'instant je ne pense pas que ce soit le bon choix pour tous les jeux).

Au fil du temps, nous le verrons devenir de plus en plus populaire dans l'industrie des jeux informatiques, mais je ne m'attends pas à un passage soudain à C # à aucun moment.


4

Java a toujours été un langage très polyvalent et il y a toujours eu la possibilité pour les gens de coder des jeux, des jeux simples sur le Web (applets Java / GWT avec le plugin canvas) aux bêtes 3D complètes (checkout JMonkey ). Je ne dirais donc pas que le fait que Java puisse faire ce genre de choses est un tueur en C #, car la plupart des gens savent que Java peut déjà le faire.

C # restera toujours populaire, car puisqu'il est inévitablement lié à Windows, Windows mobile et la Xbox bien mieux que Java (qui, en réalité, tous les développeurs de jeux se soucient vraiment du ciblage, donc l'avantage multiplateforme de Java est principalement perdu.) a également obtenu XNA qui a vraiment décollé en termes de développement de jeux.

Alors oui, Java est une plate-forme parfaitement adaptée au développement de jeux si quelqu'un souhaite emprunter cette voie, mais ce n'est certainement pas un tueur en C # ou .NET.


4

Découvrez Unity 3D; Script C # (et JavaScript et Boo) dans un moteur 3D hautes performances.

Ajoutez XNA au mélange et vous regardez quelques excellentes plateformes pour utiliser C # pour le développement de jeux.


Unity dispose également d'un lecteur Web pour que vous puissiez jouer dans le navigateur. Le plugin n'a pas une énorme pénétration du marché comme le flash ou le java, mais c'est possible.
Michael Coleman,

oui pour l'unité !!
Daniel Pendergast

1

Oui, C # a un avenir, avec le framework XNA. La plupart préfèrent C ++ à cause de la vitesse, mais C # n'est plus si lent ...


2
Ce n'est pas du tout lent. C'est rarement pire qu'environ 70% de la vitesse C ++, et peut même parfois être plus rapide!
Noldorin

4
Les opérations liées au processeur en C # sont assez rapides, il effectue des vérifications supplémentaires qui améliorent considérablement la sécurité du code au prix de quelques hits de performances mineurs, mais où c'est bien pire que C ++ dans la consommation et la gestion de la mémoire. C'est beaucoup plus facile et moins sujet aux fuites en C #, mais les performances du GC peuvent être un chien absolu.
justin.m.chase

Attention cependant au ciblage de la Xbox360. Le runtime XNA n'a pas la capacité de certaines des principales optimisations et vous empêche de déplacer les parties sensibles aux performances vers du code non managé.
drxzcl


1

Ce qu'il a fait avec Java dans ce cas, c'est de créer une applet pour que vous puissiez simplement vous connecter au site et jouer avec un plugin très courant, complètement transparent sur le système d'exploitation utilisé. J'imagine que sa pensée était que Java était assez transparent lorsqu'il était utilisé de cette façon et que cela faciliterait le développement / test itératif rapide qu'il faisait faire aux fans. Je ne pense pas que vous puissiez le faire avec XNA car généralement le testeur doit avoir tout installé ainsi que le jeu et quelques connaissances générales sur la façon de compiler et d'exécuter cela.

Je dirais donc qu'il n'y a pas de changement de paradigme à partir de cela, cela correspondait juste à ce dont il avait besoin à l'époque et a évidemment bien fonctionné.


1

Bien sûr, de nombreux langages de programmation ont un avenir dans le développement de jeux. C'est un faux dilemme souvent utilisé dans la presse informatique qu'il ne peut y avoir qu'un seul outil de type X et que tout le monde veut que cela se produise.

Rien ne pourrait être plus éloigné de la vérité.

C # et Java sont utilisés depuis longtemps dans les jeux. C et C ++ ont encore plus longtemps, et le sont toujours. Lua est utilisé comme langage de script pour certains jeux incroyablement populaires, avec le moteur écrit en C / C ++.

Il est donc clair qu'aucun langage de programmation ne fait exploser d'autres langages de programmation comme le Game Programming Language. En fait, nous voyons une tendance à ce que les principaux jeux soient composés d'un langage de programmation compilé de haute performance pour développer le ou les moteurs en.

La clé pour le moment est la performance. Si l'un des langages de programmation / bibliothèques utilisés provoque des pauses imprévisibles / incontrôlables dans l'application, puis dans un jeu d'action, cela tombera à plat sur le visage. Dans un jeu d'aventure basé sur du texte, cela pourrait être correct cependant.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.