Modular game engine: would it work?

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Modular game engine: would it work?

      First off, this will be my last post for a while, I promise! :)
      What I've been thinking of a lot lately is how put down I feel when I spend money on games that have zero compatability with my computer, and won't even tell me the reason why all I get is a black screen or no screen at all. I have a machine with an onboard intel graphics card and I use ubuntu linux as my primary OS. What I thought could possibly be a viable solution to this problem that hurts all but the console and mobile industry is an extremely modular game engine via dynamic linking.

      Basically, the user would be able to swap out nonfunctional components for components that they've tried and work optimally on their system. If, for example, the game starts, quits immediately, then tells the user it was the graphics module that didn't function, the user (probably via a simple GUI) could swap out the graphical library for one that is more likely to work (at the cost of less optimal graphical output). The interfaces of the dynamic library would stay the same, but the implementation would be different. This also leaves the developer the ability to make custom implementations which might not work optimally on all user systems. I guess the gist of it would be more power to the user to get the game running without depriving the developer of too much of their power.

      Of course, this model wouldn't be restricted to just the graphics library, but include as many components as possible, such as sound, input, and even mathematical components. If the game happens to be open source, this model greatly eases the making of modifications by the user (which in no way hurts the game as a whole).

      What are your thoughts on this concept?
      Macoy Madson-http://www.augames.f11.us/
    • RE: Modular game engine: would it work?

      This concept already exists. It's pretty much what DirectX is based on. Your graphics card has a set of drivers that act as the layer between the hardware and DirectX. DirectX provides a common API for us to write graphics routines and have them work on every video card. I can swap my nVidia card with an ATI card and everything will play nicely together.

      10 - 15 years ago, you used to have to select your 3D card. If it didn't work for some reason, you could then select "software", which would do all of the rendering in software. It looked worse and the performance was usually poor, but it was more compatible. This was phased out as DirectX got more popular because it wasn't as necessary.

      Your specific problem is likely due to your onboard Intel chipset. Whenever you have an onboard graphics chipset, it's usually not meant for hardcore gaming. Furthermore, the Intel graphics chipset has TONS of incompatibility issues. Our graphics programming on The Sims Medieval spent weeks trying to get it to run our game without locking up.

      That brings me to my final point, which is money. It would cost companies in terms of development time to get this working correctly and most people won't use it. Your problem is that you're thinking like a programmer. ;) We all love tweaking our systems and digging into the internals of code. While you and I would probably futz with the advanced settings, your average user won't.

      As an aside, I remember in one of the DLC packs for Dragon Age, I got a crash at one of the bosses every time the monster did a huge special ability. I caught the crash in visual studio and stared at the Assembly for about 20 minutes to debug the issue. It was crashing while trying to find some graphical effect. I fixed the problem by looking away from the boss when the special attack started and not looking back until it ended. I was so proud of myself. ;)

      -Rez
    • I really like your Dragon Age story :).

      What about if it was more tilted towards nonprofessional open source games that are intended to be heavily modded? Young developers (as in, sub eighteen) might appreciate the black box this would offer, although it would still allow them to tweak the system a lot for their custom game. This might be an okay project just for Linux, in order to gain more young users that might learn to appreciate the system, and give the operating system a little more respect regarding its gaming scene.

      Possibly, the whole system could be structured for very easy modding with a in-game scripting language, so people new to programming could get their start on that language, then eventually dig into the actual C++ source code, then eventually create their own games and engines. This scripting language could even make it possible for collaborative editing over a multiplayer server.

      I'm not that desperate that this will work, I'm just throwing out ideas.
      Macoy Madson-http://www.augames.f11.us/

      The post was edited 2 times, last by makuto ().

    • ZFXEngine by Stefan Zerbst presented in the book "3D Game Engine Programming" de.wikipedia.org/wiki/ZFX_Community_Engine uses this modular approach for swapping components at runtime. For example you can change the renderer from DirectX to OpenGL. The community engine you will find online has far more features than the one presented in the book so if you look into it you will find a few cool ones to integrate into your own game engine. I`m planning to do the same with mine using a hybrid arhitecture based on ZFXEngine approach and the one presented in gcc book.

      Stefan`s book also features a simple editor but unlike gcc`s editor it makes use of DirectX swap chains to render into more window views.