We all probably have a pretty good intuitive notion of what a game is. The general term “game” encompasses table games such as chess and Monopoly, card games such as poker and blackjack, casino games such as roulette and slot machines, military war games, computer games , various types of games for children, and the list goes on. In academia, we sometimes talk about game theory, in which multiple agents select strategies and tactics to maximize their profits within the framework of a well-defined set of rules of the game. When used in the context of console or computer based entertainment, the word “game” generally conjures up images of a three-dimensional virtual world with a humanoid, animal, or vehicle as the main character under the player’s control. (Or for the old folks among us, it might remind you of images from two-dimensional classics like Pong, Pac-Man, or Donkey Kong.) In his excellent book, A theory of fun for game design, Raph Koster defines a game as an interactive experience that provides the player with an increasingly challenging sequence of patterns that he learns and ultimately masters. Koster’s claim is that learning and mastery activities are at the heart of what we call “fun,” much like a joke becomes fun the moment we “get it” by recognizing the pattern.
Video games as smooth real-time simulations
Most two-dimensional and three-dimensional video games are examples of what computer scientists would call agent-based real-time interactive soft computer simulations. Let’s analyze this sentence to better understand what it means. In most video games, some subset of the real world – or an imaginary world – is mathematically modeled so that it can be manipulated by a computer. The model is an approximation and a simplification of reality (even if it is an imaginary reality), because it is clearly not practical to include all the details down to the level of atoms or quarks. Therefore, the mathematical model is a simulation of the real or imaginary game world. Approximation and simplification are two of the game developer’s most powerful tools. When used skillfully, even a very simplified model can sometimes be almost indistinguishable from reality and a lot more fun.
An agent-based simulation is one in which several different entities known as “agents” interact. This fits the description of most three-dimensional computer games very well, where the agents are vehicles, characters, fireballs, power points, etc. Given the agent-based nature of most games, it should come as no surprise that most games today are implemented in an object-oriented, or at least loosely object-based, programming language.
All interactive video games are time simulations, which means that the virtual game world model is dynamic – the state of the game world changes over time as the events and story of the game unfold. A video game must also respond to unpredictable inputs from its human players, that is, interactive temporal simulations. Finally, most video games present their stories and respond to player input in real time, making them interactive simulations in real time.
A notable exception is in the category of turn-based games such as computer chess or non-real-time strategy games. But even these types of games often provide the user with some kind of real-time graphical user interface.
What is a game engine?
The term “game engine” emerged in the mid-1990s in reference to first-person shooter (FPS) games such as id Software’s incredibly popular Doom. Doom was designed with a reasonably well-defined separation between its core software components (such as the 3D graphics rendering system, the collision detection system, or the audio system) and the art assets, game worlds, and rules of thumb. game that make up the player’s game. gaming experience. The value of this separation became apparent as developers began licensing games and adapting them to new products by creating new illustrations, world designs, weapons, characters, vehicles, and game rules with only minimal changes to the game’s software. “motor”. This marked the birth of the “mod community”, a group of individual gamers and small independent studios that created new games by modifying existing games, using free toolkits provided by the original developers. Towards the end of the 1990s, some games such as Quake III Arena and Unreal were designed with reuse and “modding” in mind. Engines became highly customizable via scripting languages such as id’s Quake C, and engine licenses began to be a viable secondary revenue stream for the developers who created them. Today, game developers can license a game engine and reuse important parts of its key software components to create games. While this practice still involves considerable investment in custom software engineering, it can be much cheaper than developing all the core engine components in-house. The line between a game and its engine is often blurry.
Some engines make a reasonably clear distinction, while others make little attempt to separate them. In a game, the rendering code could specifically “know” how to draw an orc. In another game, the rendering engine could provide general-purpose material and shading facilities, and the “orc-ness” could be fully defined in the data. No study makes a perfectly clear separation between the game and the engine, which is understandable considering that the definitions of these two components often change as the game design solidifies.
Arguably, a data-driven architecture is what differentiates a game engine from a piece of software that is a game but not an engine. When a game contains hard-coded game rules or logic, or uses special case code to represent specific types of game objects, it is difficult or impossible to reuse that software to create a different game. We should probably reserve the term “game engine” for software that is extensible and can be used as the basis for many different games without major modifications.
Clearly, this is not a black and white distinction. We can think of a range of reuse possibilities that each engine falls into. You’d think a game engine could be something akin to Apple QuickTime or Microsoft Windows Media Player, a general-purpose piece of software capable of playing virtually any game content imaginable. However, this ideal has yet to be achieved (and may never be). Most game engines are carefully designed and tuned to run a particular game on a particular hardware platform. And even the most general-purpose cross-platform engines are only suitable for creating games of a particular genre, such as first-person shooter games or racing games. It’s safe to say that the more general-purpose a game engine or middleware component is, the less optimal it is for running a particular game on a particular platform.
This phenomenon occurs because designing any efficient piece of software invariably involves trade-offs, and those trade-offs are based on assumptions about how the software will be used and / or the target hardware on which it will run. For example, a rendering engine that was designed to handle intimate indoor environments will probably not be very good at rendering large outdoor environments. The indoor engine can use a binary space partition tree (BSP) or portal system to ensure that no geometry is drawn that is occluded by walls or objects that are closer to the camera. The outdoor engine, on the other hand, may use a less exact occlusion mechanism, or none at all, but it probably makes aggressive use of level of detail (LOD) techniques to ensure remote objects are rendered with a minimal number. of triangles, while using high resolution triangle meshes for geometry close to the camera.
The advent of ever-faster computer hardware and specialized graphics cards, along with increasingly efficient data structures and rendering algorithms, is beginning to smooth out the differences between graphics engines of different genres. It is now possible to use a first person shooter engine to build a real time strategy game, for example. However, there is still a trade-off between generality and optimization. A game can always be made more impressive by adjusting the engine to the specific requirements and restrictions of a particular game and / or hardware platform.
Engine differences between genders
Game engines are usually somewhat gender-specific. An engine designed for a two-person fighting game in a boxing ring will be very different from a massively multiplayer online game engine (MMOG) or a first-person shooter (FPS) engine or a real-time strategy engine. (RTS). However, there are also a lot of overlays – all 3D, genre games require some form of low-level user input from the joypad, keyboard, and / or mouse, some form of 3D mesh rendering, some form of heads-up display (HUD) that includes rendering of text in a variety of sources, a powerful audio system, the list goes on. So while Unreal Engine, for example, was designed for first-person shooter games, it has also been used successfully to build games in various other genres, including simulator games, such as Farming Simulator 15 (FS 15 mods) and the la popular third-person shooter franchise Gears of War from Epic Games and the hits of Batman: Arkham Asylum and Batman: Arkham City from Rocksteady Studios.