Networked Games -- Game Engine

  • Jian Huang
  • Networked Games
  • The Notes Page

    Game Engine

    The word "engine" carries with it quite a few fancy connotations: such as core, specialized, optimized, sophisticated, powerful, ... So when used in "game engine", it would plausibly imply that we are talking about the core part of a game, and this core part is worth boasting about.

    A game engine can usually be subdivided into the following components, sometimes also called engines:

    A more useful view, however, is to think of a "game engine" as a "middleware". Yes, the ubiquitous M-word. Indeed, what a game engine provides is various abstractions such that actual game developers don't have to worry about unnecessary details, such as whether openGL or D3D is used, what operating system is used, ... i.e. it is supposed to hide all the lower-level details. As long as you use the same game engine, your game should actually be quite portable, just like how your C code ports from one system to another, provided there is an ANSI C compiler to use.

    But for game development, many factors remain unknown, even unanticipated, to the game developers themselves. In that regard, developers of game engines would just have to "pre-invent the wheels"! This is really a hard problem, folks! Not only are strong interdisciplinary understandings of multiple fields a necessity, to develop software that adapt well to change is crucial also.

    Today's successful game engines invariably have been designed using a component-based architecture. Quite often they are so extensible, it is possible to swap one component out for another one that might be more fitting. There are also game engines designed to work with components provided by other development teams. Hence, one can focus solely on providing graphics functionality, for instance. Such graphics engines are often generally referred to as "3D Engine". OGRE is one example of such.

    To you the game developer in what form would a XXXX engine appear? Well, usually just as a library with an API reference. That's it. So, do not get intimidated by the term "Game Engine" from now on. The word "engine" primarily adds some boasting rights to the fun and rewards experienced by its developers. If you are using a commerical game engine, then a library with the interface are all that you get. With open source ones, you do get to take a peek at the source, or even make changes to it, but the compiled library is still the only thing you actually use.


    So what would make some game engine a good one? Well, its design has to be on top of the list.