It is likely that we all have a fairly good understanding of what a gaming game is. The term “game”, as it is commonly used, refers to games such chess and Monopoly. Also, there are casino games like slots machines and roulette. We sometimes refer to game theory in academia, where multiple agents choose strategies and tactics to maximize their gains within an established set of game rules. If the word “games” is used in the context or computer-based entertainment, it usually conjures images involving a three-dimensional virtual environment with a humanoid or animal as the main character. Perhaps it conjures up images of classic games such as Pac-Man, Pong and Donkey Kong for older folks. Raph Koster describes a game in A Theory of Fun to Game Design. He defines it as an interactive experience where the player is presented with a challenging series of patterns that he or she must master. Koster claims that learning and mastering is at the heart what we refer to as “fun.” It’s like when a joke turns funny because we recognize the pattern.
Video Games as Real-Time Soft Simulations
Computer scientists refer to most two-dimensional and 3-D video games as soft real-time interactive agent computer simulations. Let’s examine this term to get a better understanding of its meaning. The majority of video games use a subset or imaginary world to model the real world. This allows the computer to manipulate it. The model is both an approximate and simplified representation of reality (even if this is an imaginary one), as it is difficult to include every detail, down to the level quarks or atoms. The mathematical model is therefore a simulation of the imaginary or real game world. Simplicity, and approximation, are two of game developer’s most powerful tools. A simplified model can sometimes look almost identical to reality when used correctly. It’s also a lot of fun.
An agent-based simulator is one where a group of distinct entities known collectively as “agents”, interact. This is how most 3-D computer games are described. The agents are vehicles and characters as well as fireballs, power dot, power dots, and other such things. Given the agent-based nature most games, it is not surprising that most games today are implemented using an object-oriented (or at least loosely objectbased) programming language.
Interactive videogames are temporal simulators. This means the virtual game world model can change over time, as the story unfolds. Also, interactive temporal simulations allow a video game to react to unpredictable inputs of its human players. A majority of video games tell stories and respond to players’ inputs in real time. This makes them interactive real-time simulators.
One exception is the category of turn-based strategy games, like computerized and real-time chess. However, even these types games offer a graphical interface that is real-time and can be accessed from any device.
What is the Game Engine?
The term “game-engine” was coined in the mid-1990s to refer first-person shooter FPS games such the insanely popular Doom from id Software. Doom was built with a fairly clear separation between its core technology components (such as three-dimensional graphics rendering, collision detection, or the audio systems) and art assets, game environments, and rules of play that comprised the user’s gaming experience. As developers began licensing games, they were able to retool them into new products, creating new art, world layouts or weapons, characters, vehicles, and rules, with very little modification to the “engine software”. This led to the creation of the “mod community”, which was a collective of independent gamers and small studios that modify existing games using tools provided by the original developers. Some games like Quake 3 Arena and Unreal were made with reuse and modding in mind. Engines were made extremely customizable with scripting languages, such as id’s Quake C. As a result, engine licensing was a viable revenue stream for those who created them. Game developers are now able to license a game engine in order for them to reuse key components of the engine. Even though this can require substantial investment in custom code engineering, it can be much cheaper than developing all of its core components in-house. Ofttimes the line between a game engine and a game is blurred.
Some engines distinguish clearly, while others don’t make any attempt at separating the two. In one game, the rendering engine might be able to “know” precisely how to draw an octopus. In another game, the rendering engine may provide general-purpose material and shading capabilities, while “orcness” could be completely defined in data. The engine and the game are not always clearly separated by studios. This is understandable, considering the fact that these definitions change over time.
An argument can be made that a data driven architecture is what makes a software program different from a computer program that is a part of a games engine but not an engine. A game that is hard-coded with logic or game rules or has special-case code to render game objects makes it difficult or impossible for the game to be reused. Software that is extensible, can be used to build many different games, and does not require major modifications should be considered “game engine”.
This is evidently not a simple distinction. Each engine has a different level of reusability. One would expect a game engine to be similar to Apple QuickTime and Microsoft Windows Media Player, a piece of software that can run virtually any game content. But this is not the case and it might never happen. Many game engines have been carefully designed and optimized to run particular games on specific hardware platforms. Even the most versatile multiplatform engines can only be used to build games in a specific genre like racing games or first-person shooters. It’s clear that the more general a game engine, or middleware component, is the less suitable it is to run a particular type of game on a given platform.
This is because the design of any efficient piece software requires making tradeoffs. These tradeoffs are based either on assumptions about the software’s use or about the target hardware where it will run. A rendering engine that is designed to render indoor environments will likely not be well-suited for rendering outdoor environments. The indoor engine might use either a binary space division (BSP), tree, or portal system to ensure no geometry is being obscured by objects closer to the camera. The outdoor engine might employ a different occlusion technique, or none at the all. However, it uses a lot of level-of detail (LOD) techniques to render distant objects with minimum triangles. It also makes use of high resolution triangle meshes for geometry close to the camera.
There are many differences between different graphics engines, thanks to ever-faster computers, specialized graphics cards and ever-more-efficient rendering algorithms. You can use a first person shooter engine to create real-time strategy games, for instance. But, there is still a compromise between optimality and generality. The engine can be tailored to suit the particular requirements and limitations of a specific game and/or hardware platform.