2013-02-21 7 views
0

Salut les gars Je commence la conception d'un nouveau petit moteur de jeu et j'assumais le moteur de jeu en tant que DLL, puis construisais un projet pour le jeu qui utiliserait cette DLL et sortirait un fichier EXE. Mais ensuite, j'ai lu les derniers moteurs de jeu ID Tech et comment ils le font dans l'autre sens. (http://fabiensanglard.net/doom3/index.php)Moteur de jeu en tant que EXE et jeu en tant que DLL?

Ce n'est pas vraiment expliqué pourquoi. J'ai le sentiment qu'il a quelque chose à voir avec modding comme seul le jeu (DLL dans ce cas) a été ouvert au public pendant un certain temps pendant que le moteur (EXE) était source fermée.

Mais j'aimerais savoir s'il y a d'autres raisons à cela.

Aussi je sais que le projet DLL devrait avoir tout le code réutilisable. Le projet normal doit être l'application, qui référencerait la DLL réutilisable. De cette façon, vous pouvez créer un cadre dans le projet DLL qui peut être utilisé pour tous les autres projets futurs. L'autre seule raison que je peux penser est que AFAIK seul le nom de la DLL est enregistré dans le fichier programme, pas de texte ou de données si le jeu est potentiellement plus grand que le moteur, il pourrait réduire la taille de l'exécutable .

[EDIT]

J'ai pensé à une autre raison d'avoir cette façon: Le moteur est un fichier EXE de sorte qu'il pourrait être qu'il pourrait être utilisé sans DLL de jeu? Comme pour des outils tels que la CAO ou les scripts?

Répondre

1

Si vous utilisez une bibliothèque dans une application, par ex. un jeu, alors vous avez une application avec un EXE avec zéro ou plus de ses propres DLL consommer une bibliothèque avec une ou plusieurs DLL. Si vous avez un environnement générique chargeant des éléments qui personnalisent son comportement, ce qui en fait un jeu spécifique, alors vous avez un environnement avec un EXE et zéro ou plusieurs DLL qui utilise la configuration pour charger diverses DLL et fichiers de configuration pour déterminer son comportement.

Soit facile, vous devriez probablement avoir plus de deux assemblys dans votre application.

E.g. un (l'EXE) pour charger la configuration principale et les modules et les relier tous, un pour l'interface principale, un pour les graphiques, un pour la physique, un pour l'IA et etc.

+0

Oui, je le sais. Par exemple, "3d game engine programming" de Stefan Zerbst se penche sur l'utilisation d'une DLL différente pour chaque module. Mais il a le jeu comme pièce centrale qui tient tout ensemble. C'est pourquoi je demande s'il y a une raison cachée pour que le moteur (dans le cas de IDTech4 "Engine" soit tout sauf le module graphique qui va dans une DLL différente) soit la partie centrale (fichier EXE) et charge le jeu comme une DLL. –

+0

Construire un environnement de jeu générique qui se transforme en un jeu spécifique en fonction des modules et de la configuration est un niveau qui va au-delà de l'écriture d'un jeu utilisant d'autres modules et qui ne peut pas être facilement réutilisé pour d'autres jeux. –

+0

Pourriez-vous mettre un exemple? Je crois que vous pourriez atteindre le même environnement de jeu générique en utilisant des modules. –

Questions connexes