Je me demande simplement ce qui manque à XNA, pour être considéré comme un moteur de jeu. Il fait tout ce qu'un moteur de jeu devrait faire (sauf la partie physique); il prend également en charge tous les aspects définis dans l'article Wikipedia sur les moteurs de jeu .
Pourquoi XNA n'est-il pas considéré comme un moteur de jeu?
Réponses:
Il est conçu comme un framework - en fait, XNA est le Microsoft XNA Framework - donc techniquement ce n'est pas un moteur par son nom.
Il n'y a pas de «moteur» - si vous remarquez, vous dérivez votre classe principale de XNA.Framework.Game et devez remplacer vous-même les fonctions de dessin et de mise à jour. Il n'y a pas de système de rendu central, ni de système d'entrée, ni de système audio prêt à l'emploi. Il y a SpriteBatch et les classes vertex, il y a KeyboardState et il y a quelques classes audio..mais ce ne sont que des abstractions sur le code de dessin de bas niveau.
EDIT: Par souci d'utilité, pourquoi quelque chose importe-t-il s'il est étiqueté comme moteur, framework, bibliothèque ou ensemble d'outils?
Pour clarifier quelque peu les choses: je développe un moteur dans XNA. Évidemment, je ne peux pas faire ça dans quelque chose comme Unreal, comme Jonathan l'a mentionné. Cependant, il y a quelques choses qui me semblent importantes que XNA n'a tout simplement pas:
Plug-and-play: je veux pouvoir faire une sorte de modèle - avoir ce HP, ce mesh, cette animation et BOOM! J'ai un PNJ dans mon jeu.
Niveau bas caché - XNA le fait déjà, mais je ne veux pas jouer avec GameServiceProviders. Je veux juste mettre des trucs ensemble.
Jeu séparé du moteur - Il peut y avoir une classe «jeu», mais je veux séparer ma logique et mon code du système de base. Je ne veux pas
if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
mélanger la mise à jour des tampons sur mon rendu graphique.la source
what makes an sdk to be called a GameEngine?
Un framework fournit une architecture minimale conçue pour un type d'application spécifique. Il minimise les hypothèses sur les détails d'implémentation au-delà des objectifs déclarés de l'architecture. Alors qu'un cadre de développement de jeux multiplateforme pourrait avoir pour objectif de fournir "ce qui est commun à (presque) tous les jeux informatiques, quelle que soit la plate-forme", et pourrait implémenter uniquement des facteurs abstraits tels que le calendrier et la gestion des entités, le cadre XNA (implicitement) a pour objectif de fournir "ce qui est commun à (presque) tous les jeux informatiques écrits pour être exécutés sur le XNA CLR". Étant donné que cet objectif est si étroit, ils ont pu inclure des fonctionnalités de moteur en toute impunité. Ils regroupent le tout sous la rubrique "Framework", car cela indique une certaine liberté de mise en œuvre dont vous, en tant que développeur de jeux, apprécierez.
En gros, un cadre devrait être aussi restrictif que possible tout en fournissant des bases utiles. Un moteur, en revanche, est généralement plus axé sur des fonctionnalités spécifiques, et en l'utilisant, vous acceptez qu'il existe certaines limitations auxquelles vous serez lié.
la source
Je n'ai jamais utilisé de `` moteur de jeu '' mais ma compréhension de celui-ci est plutôt un ensemble d'outils prédéfinis regroupés avec une structure de jeu squelettique prédéfinie pour le développement d'un type de jeu spécifique. Et certainement que la structure pour le développement d'un type spécifique de jeu est le principal facteur déterminant dans un moteur de jeux, elle semble certainement être ce à quoi l'article Wikipédia susmentionné est séduisant. Pour moi, le framework XNA s'apparente davantage à un ensemble de bibliothèques tiers, comme AJAX, en ce sens qu'il ajoute des routines prédéfinies au langage de programmation existant. Il n'impose aucune restriction ni directive sur ce que vous, en tant que programmeur, pouvez et ne pouvez pas faire avec ces routines de bibliothèque. Dans mon esprit, cela ne ressemble en rien à un moteur. Ensuite, je viens du milieu des logiciels d'entreprise / centré sur le Web,
J'ai construit le cadre d'une idée de jeu en utilisant XNA et j'ai vraiment l'impression d'utiliser juste une autre bibliothèque sur C #. Je vais utiliser les processus que j'ai piratés dans le programme de test pour produire deux ou trois jeux pour Windows et éventuellement Xbox.
Donc, comme je l'ai dit, dans mon esprit, c'est loin de ce que j'ai compris être un «moteur de jeux», donc quand je suis tombé sur ce post, je ne savais pas pourquoi quelqu'un ferait cette comparaison. Ai-je tort?
la source