Pourquoi XNA n'est-il pas considéré comme un moteur de jeu?

13

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?

Ali1S232
la source
19
@Miro Cela n'a aucun sens.
Le canard communiste
2
À quoi ça sert? S'il fait le travail dont vous avez besoin, utilisez-le. Sinon, ne le faites pas. Peu importe comment les gens l'appellent? C'est juste un label de toute façon, principalement utilisé par des singes marketing;)
Maik Semder
c'est juste parce que le commentaire The Communist Duck a répondu à mon commentaire dans cette question
Ali1S232
4
@Maik Semder Ce n'est pas du tout une étiquette. Un moteur et un framework sont deux choses distinctes et séparées, et XNA est le dernier. Il est utile de distinguer et de comprendre que XNA n'est pas un moteur, sinon vous risquez d'être très confus lorsque vous découvrez que vous pourriez avoir besoin de créer un moteur dans XNA, ou qu'il n'offre aucun plug-in-some-bits-and- jouer des capacités comme les moteurs réels.
doppelgreener
3
@Maik Cela fait partie de la façon dont nous travaillons sur ce qu'il fait. Je dis conducteur , vous savez ce que c'est et ce qu'il n'est pas, ce qu'il fait et comment vous pouvez l'utiliser. Quelque chose de similaire devrait se produire lorsque je dis cadre - mais seulement si vous reconnaissez ce qu'est un cadre et ce qu'il n'est pas (un moteur). Compte tenu de ces implications pratiques, je
m'objecte

Réponses:

28

Microsoft XNA est un ensemble d'outils avec un environnement d'exécution géré fourni par Microsoft qui facilite le développement et la gestion de jeux informatiques. XNA tente de libérer les développeurs de jeux de l'écriture de «code passe-partout répétitif» et de regrouper différents aspects de la production de jeux dans un seul système.

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.

Le canard communiste
la source
J'accepte que vous deviez remplacer vos paramètres de dessin et de mise à jour, mais cela ne signifie pas qu'il n'a pas de moteur de rendu, le fait est qu'il rend tout prêt pour vous à dessiner, et ce ne sont pas seulement des appels de dessin abstraits simplement en regardant son exemple il n'a rien de moins qu'un 2E GameEngine (je n'ai pas vraiment vérifié les trucs 3D), et pour autant que je m'en souvienne, il a des contrôleurs d'entrée, et je veux dire est-ce juste un cadre parce que Microsoft l'a nommé ainsi ou a-t-il une raison logique ?
Ali1S232
1
@Gajet: Considérez un instant qu'il y a une discussion sur le net sur la façon de créer un moteur dans XNA mais pas pour Unreal Engine ou CryEngine. Je pense qu'une caractéristique commune d'un moteur de jeu est que vous pouvez simplement brancher les bits et quelque chose ira ( TV Tropes affirme que les moteurs peuvent être assez pilotés par les données à cet égard ). En revanche, XNA vous laisse faire pratiquement chaque once du travail vous-même - vous n'avez tout simplement pas à créer le middleware pour interfacer avec les appareils.
doppelgreener
1
De plus, je ne pense pas avoir encore trouvé de définition claire d'un moteur de jeu, mais ce que je sais, c'est qu'il existe des moteurs de jeu , et XNA ne fait tout simplement rien de ce qu'ils font (sauf fournir un middleware, et certains composants bas niveau très simples).
doppelgreener
@Jonathan Hobbs: maintenant je peux voir de quoi tu parles mais encore une fois j'ai essayé GameBryo (NetImmerse) et c'est considéré comme un moteur de jeu mais jusqu'à ce que la vitesse de la lumière ait moins de fonctionnalités que XNA lui-même, c'était juste un simple middlewere, donc je pense que nous peut changer le titre de la question en what makes an sdk to be called a GameEngine?
Ali1S232
1
Mais vous pourriez développer un moteur en utilisant un moteur existant comme cadre si vous vouliez vraiment être pédant. Beaucoup de gens ont pris la technologie Quake 3 puis ont créé un moteur plus utilisable. Là encore, vous pouvez également faire un jeu sans «moteur» du tout si vous le vouliez vraiment. Il est plus correct d'appeler xna un framework, mais je ne sais pas faire la distinction avec un "moteur", car il n'est pas aussi fortement défini que "framework".
Tetrad
5

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é.

Ingénieur
la source
2

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?

user29569
la source