What I'm doing is to create an application which offers an `environment` which is basically able to give you enough room for change that it can be configured to act as several seemingly different games. You can load in new graphics and sounds, load in new settings or prefs, new animation paths or sequences, new maps, that sort of thing. If you make your engine at least a little `generic` - or should I say, open to several different configurations - then it's not too difficult to get it to work with more than one `game` and easy to add extra stuff to it.
Think for example of a flash plugin for a web browser, the plugin doesn't just display a single fixed sequence of objects. It is more open-ended and can be reconfigured to load/display many unique sequences of objects - ie different flash animations.
So instead of thinking of your game as a very fixed, closed, hardwired, one structure only, think of it as more open ended, flexible, adjustable, reconfigurable, then you can have it `morph` into different configurations to present different games or extras.
Also when you move in that direction - toward openness rather than preconceived fixed form - your software starts to turn into a medium, a vessel for creative expression, rather than a solid lump of stubborn code-mud.
Think for example of a flash plugin for a web browser, the plugin doesn't just display a single fixed sequence of objects. It is more open-ended and can be reconfigured to load/display many unique sequences of objects - ie different flash animations.
So instead of thinking of your game as a very fixed, closed, hardwired, one structure only, think of it as more open ended, flexible, adjustable, reconfigurable, then you can have it `morph` into different configurations to present different games or extras.
Also when you move in that direction - toward openness rather than preconceived fixed form - your software starts to turn into a medium, a vessel for creative expression, rather than a solid lump of stubborn code-mud.