This is an old revision of the document!
Up to nowadays game engines are considered closed off entities or one system. Each engine provides a set of features in terms of rendering, physics handling or modding capabilities. In the end each game engine is a package of features. Unfortunatly always one or more of these features will be not as good as in other game engines which is a result of either bad implementation or simply trade-off between requirements. Most of those engines are no more extendible and for future changes in hardware or software those engines have to be rewritten in the worst case from scratch. As a game developer you always run around trying to find a game engine suiting your needs instead of focusing on the content. He finds most his needs fulfilled with one engine but lacks the ability another could offer. A problem produced by the way game engines are designed nowadays. Furthermore companies tend to sell licenses with a high price tag which makes it difficult for common game developers to get started without spending lots of time writing their own game engine. As a player you have to deal with the ins and outs of the different game engines your games come equipped with. Just because two games are based on the same game engine does not ensure that both will run on your machine. You also have to take what the game engine offers you. Often a game would be much more interesting if it would have good graphics, physics or simply a good feature another game engine has. The player though can no more change nor influence the game he bought. Open source engines tend to introduce a form of modularity to fix this. Unfortunately this modularity is usually only available during compile time. This way the problem is again pushed towards the game designer and the final product is still a blackbox with a bit of whiteness mixed in still not flexible enough to step forward into the next generation of game design.
Applying the right Software Design practises those problems can be solved. The key to the real next generation game engine is not adding more and more features making the problem worse but stepping up from a blackbox design to an open modular design. The Drag[en]gine is designed with an operating system in mind instead of a blackbox. The entire game engine is based on Modules which can be compared to device drivers. The Game Engine is the system kernel taking care of managing the modules, managing resources and providing an abstraction to the underneath operating system. The modules in turn provide all the features other game engines come build in with ( or which they are lacking ). Due to the very loose coupling of the modules with the system and other modules it is very easy to exchange or improve a module without interfering with any other parts of the engine. As a result the modularity reaches down to the end user not stopping at the developer. With this system the Drag[en]gine is designed to provide modularity on the end user machine. An end user can now choose optimal modul combinations for his personal computer even down to per game setups for maximum performance and enjoyment. Instead of turning the game engine into a compile nightmare for the user it becomes an engine he can customize even down to run-time. Now a developer does not have to worry anymore about what graphic routines draws his game or what physics library makes his objects tumble around. He simply concentrates on the content of his game. The player can now decide for himself what graphic renderer or physics library works best on his computer since nowbody else then he knows his own computer like the inside of his pockets.
One question that quickly arrises is how this game engine received its rather strange name. The name is the result of a little word play if the words 'dragon' and 'engine' ( from game engine ) are compared using their phonetic writing. For dragon this is ['drægən] and for engine it is ['endʒin]. The similar part at the end respective the beginning forms a sort of link between the two words and inspired for the use of the concatenated form Drag[en]gine. From there on the game engine had received its name.