Comparaison entre XNA et DirectX (C #)

En termes de développement PC (hors Xbox et Zune),

Quelle est la différence entre XNA et C # DirectX? C # DirectX a-t-il un avantage significatif par rapport à XNA (en termes de vitesse, de redevances, etc.)?

Comment sont les deux comparés à la vitesse DirectX C ++ non géré?

Où l’indussortinge évolue-t-elle en matière de programmation de jeux?

Si vous êtes réellement doué pour écrire du code non géré, vous pourrez probablement écrire un moteur graphique plus rapide sur DirectX. Cependant, pour les amateurs, XNA offre de nombreuses performances, à la fois pour le développement de jeux en 2D et en 3D.

Voici une bonne vidéo de la Chaîne 9 où ils exécutent un jeu de course XNA sur Xbox 360. Il fonctionne bien même en full HD. Plusieurs des jeux XBox Live Arcade ont été développés par la communauté XNA.

En ce qui concerne C # DirectX, si je me souviens bien, Managed DirectX, comme on l’appelait, n’est plus officiellement pris en charge car XNA le remplace. Je peux me tromper, cela fait très longtemps que je ne l’ai pas regardé.

Les différences de performance sont négligeables entre XNA et Managed DirectX, car elles sont essentiellement identiques. XNA a juste quelques bits pratiques pour réduire la quantité de code standard que vous devez écrire.

Le Xna Game Studio se concentre sur la résolution de problèmes centrés sur le jeu, bien que je mette en doute toute affiche qui dit que les performances du studio de jeu Xna sont plus mauvaises que celles du direct x géré sans voir des mesures correctes.

Un groupe indépendant en dehors de MS a créé un projet appelé SlimDx – http://slimdx.mdxinfo.com/ Si vous écrivez une application plutôt qu’un jeu (ce qui, je l’espère, n’est pas dû aux autres questions), cela pourrait valoir le coup. considérant.

L’indussortinge utilise encore fortement C ++ pour les sortingpes du jeu, mais il y a eu des versions réussies de jeux écrits en code entièrement géré à l’aide de XNA Game Studio dans la section des jeux communautaires de XBox live et publiés sur XBox Arcade. Il devrait y avoir des statistiques intéressantes sur le nombre de personnes ayant participé aux jeux communautaires.

Beaucoup de jeux à prix plein utilisent le C ++ pour certains, mais quelque chose comme Lua pour la logique du jeu… et Lua n’est pas connu pour sa vitesse fulgurante!

C # a une bonne courbe d’apprentissage et est utilisé par les programmeurs d’outils de l’indussortinge – ce serait un langage utile à votre scope. C ++ serait un excellent langage, mais il nécessite plus de discipline pour créer du code fonctionnel – et donne à quelqu’un de nouveau beaucoup plus de temps pour se suspendre. C # peut changer dynamicment et faire des choses comme dérouler des boucles à l’exécution plutôt que de comstackr – un bon C # peut être aussi rapide ou plus rapide qu’une C ++ lisible – mais vous devez savoir comment l’utiliser. Dans les boucles vraiment serrées, C ++ et Assembler peuvent gagner dans certaines circonstances. Souvent, dans les jeux utilisant C ++, des allocateurs personnalisés sont créés avec leurs propres stratégies de mémoire pour tenter d’aider à la fragmentation provoquée par des allocateurs normaux. Ce type de problème est traité par le CLR sous .Net / C # les points forts des ramasseurs d’ordures (les mêmes que ceux que vous auriez à faire avec votre propre implémentation C ++), vous n’avez pas à vous préoccuper des détails d’implémentation de bas niveau dans .Net.

Si vous envisagez de vous lancer dans le développement de jeux et de choisir une langue (ce qui semble être le cas lorsque vous choisissez cette ligne de lecture), la meilleure langue à utiliser est celle où vous avez terminé projet à montrer à la fin, que ce soit en C ++, objective C, C #, Flash, Silverlight, etc. Comme les langues changent et entrent et sortent en désaccord, les recruteurs recherchent souvent une maîsortingse éprouvée des différentes langues celui qu’ils utilisent actuellement – et un portefeuille de travaux achevés le ferait.

  1. XNA et DirectX sont des implémentations très différentes pour résoudre le même problème: une programmation graphique très performante. Les deux prennent en charge les composants 2D, 3D, audio et réseau. DirectX n’est pas géré uniquement lorsque XNA est un code géré.
  2. Il existe une implémentation gérée de DirectX, qui encapsule les appels DirectX, mais qui n’est pas mise à jour après la version actuelle.
  3. XNA n’est pas un wrapper autour de DirectX non géré. Il utilise des parties de DirectX mais ce n’est pas un wrapper.
  4. L’indussortinge semble toujours très axée sur DirectX non géré – je le dis car toutes les grandes sociétés de moteurs codent encore en C ++, ASM et prennent en charge DirectX (uniquement ou conjointement avec les versions OpenGL pour Linux / Mac). Le fait que Microsoft “abandonne” le wrapper géré par DirectX et demande aux utilisateurs d’utiliser plutôt les shows XNA est là où ils poussent les développeurs gérés.

À l’heure actuelle, il semble que Microsoft n’envisage pas de prendre en charge XNA dans les applications de style Metro. Une alternative à XNA et à la désormais obsolète “Managed DirectX” est SharpDx . Cela peut être utilisé pour créer des applications de style Metro et a été favorablement évalué par rapport à XNA, SlimDX et au pack de code API Windows.