Quelle est la différence entre une bibliothèque et un moteur?

31

Je travaille sur une bibliothèque pour aider au développement de jeux 2D avec Scala. Jusqu'à présent, il s'agit d'une collection de classes utiles, de chargement de fichiers, de détection de collision, d'images, de sprites, etc.

Alors, quand cesse-t-il d'être une bibliothèque de classes et commence-t-il à être un moteur? Où se situe exactement la différence entre un cadre utile et un moteur de jeu?

Lanbo
la source
Je dirais que la distintion ne peut pas être faite, car ce sont des concepts à un niveau d'abstraction différent. Un "gros" moteur est toujours un framework.
André Paramés
1
Il y a moins de distinction entre un moteur de jeu et un framework, mais d'après le titre, entre une bibliothèque et un moteur, il y a une distinction énorme et clairement définie. Ce lien le résume: gamefromscratch.com/post/2015/06/13/…
Serapth

Réponses:

21

Je pense que la confusion dans laquelle les gens se retrouvent ici est que l'un est généralement composé de l'autre, donc ce que les gens veulent vraiment savoir, c'est quand vous en avez assez pour être considéré comme l'autre.

Alors, quand cesse-t-il d'être une bibliothèque de classes et commence-t-il à être un moteur?

Jamais.

Où se situe exactement la différence dans un cadre utile et un moteur de jeu?

Il n'y en a pas.

Maintenant, laissez-moi vous expliquer les réponses. Un moteur de jeu est composé de bibliothèques de classes. Ils n'arrêtent pas d'être des bibliothèques de classes simplement parce qu'ils sont dans un moteur de jeu. Une bibliothèque est un cadre utile pour répondre à un besoin spécifique dans un moteur de jeu. Un cadre qui implique les besoins d'un jeu complet est un moteur de jeu.

Voici quelques exemples de moteurs de jeu:

  • Unreal Engine
  • Moteur de réalité
  • Moteur source
  • Quake Engine
  • Moteur Unity

Et quelques exemples de bibliothèques

  • Novodex (Physique)
  • FMOD (audio)
  • Havok (Physique)
  • Ogre3D (rendu)
  • BINK (Vidéothèque)
  • Direct3D (graphiques)
  • OpenGL (graphiques)
  • DirectSound (audio)
  • XInput (entrée)

J'espère que cela t'aides

James
la source
1
Qu'en est-il de la différence entre un moteur de rendu et une bibliothèque graphique? : p
Zaky German
1
@Zaky German - Ogre3D est un «moteur» graphique comme FMOD est un «moteur» audio. Séparés cependant, il ne s'agit pas d'un moteur de jeu, ils ne gèrent pas les entrées utilisateur, la connectivité réseau ou similaires par exemple. C'est là que je pense qu'une partie de la confusion peut entrer en jeu. Dans cette connotation, vous pouvez échanger la bibliothèque, le module, le composant ou le moteur. Ce n'est cependant pas un «moteur de jeu». Une bibliothèque graphique serait quelque chose de similaire à Direct3D ou une API fine sur Direct3D pour le rendre plus facile, mais elle ne fera pas directement le rendu. OpenGL et les wrappers qui l'entourent tomberaient également dans la zone de la bibliothèque graphique.
James
14

Il n'y a vraiment pas de définition concrète pour l'un ou l'autre terme (ou pour le terme connexe «cadre», d'ailleurs). Il existe des centaines de façons différentes d'interpréter les distinctions subtiles et variées des progiciels et de leur attribuer des classifications.

Personnellement, je considère une "bibliothèque" comme une chose qui fournit un ensemble de fonctionnalités relativement petit et dirigé, tandis qu'un "framework" fournit des fonctionnalités plus ou plus larges, et un "moteur" fournit les mêmes (ou plus) et a généralement un ensemble de outils associés qui l'accompagnent.

J'ai vu suffisamment d'interprétations personnelles d'autres personnes des mêmes termes pour se sentir en sécurité, suggérant qu'un "moteur" fournit plus de fonctionnalités, ou un niveau supérieur, qu'une "bibliothèque" ne le fait généralement ... mais où vous tracez cette ligne pour votre propre logiciel à toi de décider.

Josh
la source
Il existe une différence concrète entre un framework et d'autres bibliothèques; ceux-ci sont répertoriés dans la page Wiki de l'ancien. En résumé, le framework contrôle le flux de l'application et vous y branchez votre code; dans d'autres bibliothèques, vous contrôlez le flux et appelez son code.
André Paramés
1
Je ne considérerais pas cela comme définitif; Wikipédia a aussi une page pour "moteur de jeu", et tout comme "bibliothèque" et "framework", ces termes sont utilisés aussi souvent de manière conforme à la description de la page wiki que de manière différente, dans mon expérience. C'est toujours très ondulé à la main.
Josh
2

C'est une question délicate, car la ligne entre la bibliothèque et le moteur peut parfois être très mince et floue. Je dois dire que le point où une bibliothèque se transforme en moteur, c'est quand elle devient orientée vers un jeu spécifique ou un type de jeu spécifique.

Par exemple: le moteur Unreal (ou Source, ou Quake) est conçu pour être utilisé pour les jeux FPS (il pourrait être utilisé pour d'autres jeux, mais vous passeriez du temps à travailler contre le moteur). Ogre3d (ou même Directx, SDL ou d'autres bibliothèques communes) peut être utilisé pour créer n'importe quel type de jeu, sans avoir à extraire les principales parties du code ou à les contourner.

thédien
la source