Virtually all game engines contains a familiar set of core components, including the rendering engine, the collision and physics engine, the animation system, the audio system, the game world object model, the artificial intelligence system and so on.
Structure of a Typical Game Team
Game studios are usually composed of five basic disciplines: engineers, artists, game designers, producers and other management and support staff.
The engineers design and implement the software that makes the game, and the tools, work. Runtime programmers who work on the engine and the game itself and tools programmers who work on the offline tools that allow the rest of the development team to work effectively.
The artists produce all of the visual and audio content in the game, and the quality of their work can literally make or break a game. Artists come in all sorts of flavors:
Concept artists produce sketches and painting s that provide the team with a vision of what the final game will look like.
3D modellers produce the three-dimensional geometry for everything in the virtual game world. The foreground modellers create objects, characters and the other objects that populate the game world, while the background modellers build the world's static background geometry.
Texture artists create the two-dimensional images known as textures, which a re applied to the surfaces of 3D models in order to provide detail and realism.
Lighting artists lay out all of the light sources in the game world, both static and dynamic, and work with colour, intensity and light direction to maximise the artfulness and emotional impact of each scene.
Animators imbue the characters and objects in the game with motion. A game animator must have a unique set of skills in order to produce animations that mesh seamlessly with the technological underpinnings of the game engine.
Motion capture actors are often used to provide a rough set of motion data, which are then cleaned up and tweaked by the animators before being integrated into the game.
Sound designers work closely with the engineers in order to produce and mix the sound effects and music in the game.
Voice actors provide the voices of the characters in many games.
Many games have on or more composers, who compose an original score for the game.
The game designers' job is to design the interactive portion of the player's experience, typically known as gameplay. Some game designers work at the macro level, determining the story arc, the overall sequence of chapters or levels, and the high-level goals and objectives of the player. Other designers work on individual levels or geographical areas within the virtual game world, laying out the static background geometry, determining where and when enemies will emerge, placing supplies like weapons and health packs, designing puzzle elements and so on.
In some game companies, the producer's job is to manage the schedule and serve as a human resources manager. In other companies, producers serve in a senior game design capacity.
What Is a Game
In his excellent book, A Theory of Fun for Game Design, Raph Koster defines a game to be an interactive experience that provides the player with an increasingly challenging sequence of patterns which he or she learns and eventually masters.
Video Games as Soft Real-Time Simulations
Most two- and three-dimensional video games are examples of what computer scientists would call sft real-time interactive agent-based computer simulations.
The mathematical model is a simulation of the real or imagined game world.
An agent-based simulation is one in which a number of distinct entities known as "agent" interact.Given the agent-based nature of most games, it should come as no surprise that most games nowadays are implemented in an object-oriented, or at least loosely object-based, programming language.
All interactive video games are temporal simulations, meaning that the virtual game world model is dynamic, the state of the game world changes over time as the game’s events and story unfold. A video game must also respond to unpredictable inputs from its human player(s), thus interactive temporal simulations. Finally, most video games present their stories and respond to player input in real time, making them interactive real-time simulations.
At the core of every real-time system is the concept of a deadline. A physics simulation may need to be updated 120 times per second in order to remain stable. Most game render the screen at 30 or 60 frames per second because these are multiples of an NTSC monitor's fresh rate. The audio library may need to be called at least once every 1/60 second in order to keep the audio buffers filled and prevent audible glitches.
A soft real-time system is one in which missed deadlines are not catastrophic.
Mathematical models can be analytic or numerical. An analytic model can be evaluated for any value of its independent variables. Such models are very convenient when they can be found. Numerical simulations are typically implemented by running calculations repeatedly, in order to determine the state of the system at each discrete time step.
What is a Game Engine
Arguably a data-driven architecture is what differentiates a game engine from a piece of software that is a game but not an engine.
We should probably reserve the term "game engine" for software that is extensible and can be used as the foundation for many different games without major modification.
Most game engines are carefully and fine-tuned to run a particular game on a particular hardware platform.
Engine Differences Across Genres
Modern FPS traversal mechanics can include on-foot locomotion, rail-confined or free-reaming ground vehicles, hovercraft, boats and aircraft.
First-person shooters typically focus on technologies such as:
efficient rendering of large 3D virtual world
a responsive camera control/aiming mechanic
high-fidelity animations of the player's virtual arms and weapons
a wide range of powerful handheld weaponry
a forgiving player character motion and collision model, which often gives these games a "floaty" feel
high-fidelity animations and artificial intelligence for the non-player characters(NPCs)--the player's enemies and allies
small-scale online multiplayer capabilities, and the ubiquitous "death match" gameplay mode
The rendering technology employed by first-person shooters is almost always highly optimised and carefully tuned to the particular type of environment being rendered.
Outdoor FPS games use other kinds of rendering optimisations such as occlusion culling, or an offline sectorization of the game world with manual or automated specification of which target sectors are visible from each source sector.
Runtime Engine Architecture
A game engine generally consists of a tool suite and a runtime component.
Game engines are built in layers. Normally upper layers depend on lower layers, but not vice versa. When a lower layer depends upon a higher layer, we call this a circular dependency. Dependency cycles are to be avoided in any software system.
The target hardware layer represents the computer system or console on which the game will run.
Device drivers are low-level software components provided by the operating system or hardware vendor. Drivers manage hardware resources and shield the operating system and upper engine layers from the details of communicating with the myriad variants of hardware devices available.
OS orchestrates the execution of multiple programs on a single computer. This means that a PC game can never assume it has full control of the hardware.
On a console, the operating system is often just a thin library layer that is compiled directly into your game executable. On a console, the game typically "owns" the entire machine. New operating system on these consoles and their successors can interrupt the execution of your game, or take over certain system resources, in order to display online messages, or to allow the player to pause the game.
Third-Party SDKs and Middleware
Most game engines leverage a number of third-party software development kits and middleware. The functional or class-based interface provided by an SDK is often called an application programming interface.
Data Structures and Algorithms
Games depend heavily on collection data structures and algorithms to manipulate them. Some third-party libraries which provide these kinds of services:
STL: The C++ standard template library provides a wealth of code and algorithms for managing data structures, strings and stream-based I/O.
STLport: This is a portable, optimised implementation of STL.
Boost: is a powerful data structures and algorithms library, designed in the style of STL.
Loki: is a powerful generic programming template library which is exceedingly good at making your brain hurt.
Most game rendering engines are built on top of a hardware interface library, such as:
Glide: is the 3D graphics SDK for the old Voodoo graphics cards
OpenGL: is a widely used portable 3D graphics SDK
DirectX: is Microsoft's 3D graphics SDK and primary rival to OpenGL
libgcm: is a low-level direct interface to the PS3's RSX graphics hardware
Edge: is a powerful and highly efficient rendering and animation engine produced by Naughty Dog and Sony for PS3
Collision and Physics
Collision detection and rigid body dynamics are provided by the following well-known SDKs:
Havok: is a popular industrial-strength physics and collision engine
PhysX: is another popular industrial-strength physics and collision engine
Open Dynamics Engine: is a well-known open source physics/collision package
A number of commercial animation packages exist:
Granny: includes robust 3D model and animation exporters for all the major 3D modeling and animation packages.
Havok Animation: the line between physics and animation is becoming increasing ly blurred as characters become more and more realistic.
Edge: produced for the PS3 by the ICE team at Naughty Dog includes a powerful and efficient animation engine and an efficient geometry processing engine for rendering.
Biomechanical Character Models
a real-time version of Endorphin intended to produce physically and biomechanically accurate character motion at run-time under the influence of unpredictable forces.