In 1998, Tim Sweeney stood at the precipice of a new era when Epic Games released the Unreal Engine, a piece of software that would fundamentally alter how humanity creates interactive worlds. Before this moment, video games were singular entities, hard-coded from the bottom up to squeeze every ounce of performance from the limited hardware of the 1980s and early 1990s. A game for the Atari 2600 required a custom kernel for its display routine, and memory constraints made data-heavy designs impossible. Even when platforms offered more leeway, the rapid advance of arcade hardware meant that most code had to be discarded for the next generation of games. The industry was stuck in a cycle of reinventing the wheel for every single title, a process that was slow, expensive, and limited in scope. The emergence of the game engine broke this cycle by separating the core technology from the game content, allowing developers to license the engine and focus entirely on creating graphics, characters, weapons, and levels. This separation meant that teams could grow and specialize, with artists often outnumbering programmers by several times, a stark contrast to the era when a single programmer had to handle every aspect of the game.
The concept of the game engine is a direct analogue of the software engine, a term employed across sectors of the software industry to describe a framework that provides the core functionality needed to build a product. In the context of video games, this framework includes specialized software libraries and packages such as level editors, physics engines, audio engines, and scripting tools. These engines provide platform abstraction, allowing the same game to run on various platforms including game consoles, personal computers, and mobile devices with few, if any, changes made to the source code. The core functionalities commonly covered by a game engine are a 2D or 3D renderer, physics engine, audio engine, scripting, animation, artificial intelligence, networking, streaming, memory management, threads, localization support, scene graph, and cinematics. Game engine developers often economize game development through reuse or adaptation of abstractions built into game engines for production of various games, or through ports of videogames from a single to other target platforms. This efficiency has become a critical factor in the highly competitive video game industry, where time-to-market and cost reduction are paramount.
The history of game engines reveals a fascinating evolution from the rigid constraints of the 1980s to the complex, multi-threaded systems of today. Before game engines, games were typically written as singular entities, designed from the bottom up to make optimal use of the display hardware. The rapid advance of arcade hardware meant that most of the code would have to be thrown out afterwards anyway, as later generations of games would use completely different game designs that took advantage of extra resources. Thus, most game designs through the 1980s were designed through a hard-coded rule set with a small number of levels and graphics data. It was not until the mid-1990s that the term game engine emerged, particularly with the rise of 3D games like first-person shooters. A notable example of an in-house game engine on home consoles in the mid-1980s was the smooth side-scrolling engine developed by Shigeru Miyamoto's team at Nintendo for the Nintendo Entertainment System. The engine they had developed for the side-scrolling racing game Excitebike in 1984 was later employed for the scrolling platformer Super Mario Bros. in 1985. This allowed Mario to smoothly accelerate from a walk to a run, rather than move at a constant speed like in earlier platformers, demonstrating the power of a reusable engine even in the early days of gaming.
Modern game engines are some of the most complex applications written, often featuring dozens of finely-tuned systems interacting to ensure a precisely-controlled user experience. The continued evolution of game engines has created a strong separation between rendering, scripting, artwork, and level design. As such, it is now common, for example, for a typical game development team to have several times as many artists as actual programmers. This shift in labor distribution highlights the complexity of the underlying technology, which must handle everything from graphics to artificial intelligence. Game engines are not limited to use in the video game field, and have found uses in other scientific fields. Part of this is due to game engines being optimized for consumer-grade computing equipment rather than high-performance computing, allowing researchers to develop programs for their use on lower cost machines. Game engines also simplify many of the computing operations needed for scientific software, including graphics, networking, and interactivity, reducing the need to develop these features themselves.
The architecture of a game engine often relies on a component-based design that allows specific systems in the engine to be replaced or extended with more specialized and often more expensive game-middleware components. Some game engines comprise a series of loosely-connected game middleware components that can be selectively combined to create a custom engine, instead of the more common approach of extending or customizing a flexible integrated product. Despite the specificity of the name game engine, end users often re-purpose game engines for other kinds of interactive applications with real-time graphical requirements, such as marketing demos, architectural visualizations, training simulations, and modeling environments. Some game engines only provide real-time 3D rendering capabilities instead of the wide range of functionality needed by games. These engines rely upon the game developer to implement the rest of this functionality or to assemble it from other game-middleware components. These types of engines are generally referred to as a graphics engine, rendering engine, or 3D engine instead of the all-encompassing term game engine. Examples of graphics engines include Crystal Space, Genesis3D, Irrlicht, OGRE, RealmForge, Truevision3D, and Vision Engine.
As technology ages, the components of an engine may become obsolete or insufficient for the requirements of a given project. Since the complexity of programming an entirely new engine may result in unwanted delays or necessitate that a project restart from the beginning, an engine-development team may elect to update their existing engine with newer functionality or components. The scene graph, an object-oriented representation of the 3D game world, often simplifies game design and can be used for more efficient rendering of vast virtual worlds. Most game engines or graphics engines use a Graphics API, which eases communication with the GPU. But older games did not have hardware acceleration or GPUs and had to build their own software renderer. The ability to update and extend these engines has been crucial for their longevity, allowing them to adapt to new hardware and software requirements over decades of development.
The Middleware Revolution
Game middleware represents a specialized subset of functionality within the broader game engine ecosystem, often providing subsystems that do one thing more convincingly or more efficiently than general-purpose middleware. The four most-widely used middleware packages that provide subsystems of functionality include RAD Game Tools' Bink, Firelight FMOD, Havok, and Scaleform GFx. RAD Game Tools develops Bink for basic video rendering, along with Miles audio, and Granny 3D rendering. Firelight FMOD is a low cost robust audio library and toolset. Havok provides a robust physics simulation system, along with a suite of animation and behavior applications. Scaleform provides GFx for high performance Flash UI and high-quality video playback, and an Input Method Editor addon for in-game Asian chat support. Other middleware is used for performance optimization, for example Simplygon helps to optimize and generate level of detail meshes, and Umbra adds occlusion culling optimizations to 3D graphics. Some middleware contains full source code, or is provided an API reference for a compiled binary library. Some middleware programs can be licensed either way, usually for a higher fee for full source code.
The business model surrounding game engines has evolved into a significant industry in its own right, with producers of game engines deciding how they allow users to utilize their products. The major game engines come at varying prices, whether it be in the form of subscription fees or license payments. Unity and Unreal Engine are currently the two most popular choices for game developers. Although the differences among the different game engines blur as they build their own tools on top of them, different game developers may be too used to a system to change, or attracted by the huge benefits of such engines regardless of pay-walls. The practice of licensing such technology has proved to be a useful auxiliary revenue stream for some game developers, as a single license for a high-end commercial game engine can range from $10,000 to millions of dollars, and the number of licensees can reach several dozen companies, as seen with the Unreal Engine. While a strong rivalry existed between Epic Games and id Software around 2000, Epic Game's Unreal Engine has since become far more popular than id Tech 4 and its successor, id Tech 5.
The evolution of game engines has also led to the development of higher-level languages that make game development more accessible. More game engines are being built upon higher-level languages, such as Java, C# and .NET, Python, or Lua Script. As most 3D-rich games are now mostly limited by the power of a graphics card, the potential slowdown due to translation overheads of higher-level languages becomes negligible, while productivity gains offered by these languages serve the game engine developers' benefit. These recent trends are being propelled by companies such as Microsoft to support indie game development. Microsoft developed XNA as the primary Software Development Kit for all video games released on Xbox and their related products. This includes the Xbox Live Indie Games channel designed specifically for smaller developers who do not have the extensive resources necessary to box games for sale on retail shelves. It is becoming easier and cheaper than ever to develop game engines for platforms that support managed frameworks.
The Physics Of Motion
The physics engine is one of the most critical components of a modern game engine, managing the simulation of physical interactions within the virtual world. Racing games have typically been at the forefront of threading with the physics engine running in a separate thread long before other core subsystems were moved, partly because rendering and related tasks need updating at only 30 to 60 Hz. For example, on PlayStation 3, physics ran in Need For Speed at 100 Hz, versus Forza Motorsport 2 at 360 Hz. This separation of threads allows for more precise control over the game's physics, ensuring that the player experiences a realistic and responsive environment. The physics engine is just one of many subsystems that work together to create a cohesive experience, with other systems handling rendering, audio, artificial intelligence, and networking.
The development of physics engines has been driven by the need for realism and the increasing power of consumer-grade computing equipment. Game engines are optimized for consumer-grade computing equipment rather than high-performance computing, allowing researchers to develop programs for their use on lower cost machines. This optimization has made it possible to run complex physics simulations on standard hardware, which was not possible in the early days of gaming when games had to be designed from the bottom up to make optimal use of the display hardware. The physics engine is just one of many subsystems that work together to create a cohesive experience, with other systems handling rendering, audio, artificial intelligence, and networking. The ability to run these simulations in real-time has been a major breakthrough in game development, allowing for more immersive and interactive experiences.
The history of physics engines is closely tied to the evolution of game engines themselves. Before game engines, games were typically written as singular entities, designed from the bottom up to make optimal use of the display hardware. The rapid advance of arcade hardware meant that most of the code would have to be thrown out afterwards anyway, as later generations of games would use completely different game designs that took advantage of extra resources. Thus, most game designs through the 1980s were designed through a hard-coded rule set with a small number of levels and graphics data. It was not until the mid-1990s that the term game engine emerged, particularly with the rise of 3D games like first-person shooters. A notable example of an in-house game engine on home consoles in the mid-1980s was the smooth side-scrolling engine developed by Shigeru Miyamoto's team at Nintendo for the Nintendo Entertainment System. The engine they had developed for the side-scrolling racing game Excitebike in 1984 was later employed for the scrolling platformer Super Mario Bros. in 1985. This allowed Mario to smoothly accelerate from a walk to a run, rather than move at a constant speed like in earlier platformers, demonstrating the power of a reusable engine even in the early days of gaming.
The Engine Beyond Games
Game engines have found uses in other scientific fields, expanding their impact far beyond the realm of entertainment. Part of this is due to game engines being optimized for consumer-grade computing equipment rather than high-performance computing, allowing researchers to develop programs for their use on lower cost machines. Game engines also simplify many of the computing operations needed for scientific software, including graphics, networking, and interactivity, reducing the need to develop these features themselves. This has led to the development of serious games, which are used for visualization, training, medical, and military simulation applications, with the CryEngine being one example. The ability to create interactive, real-time graphical environments has made game engines a valuable tool for researchers and professionals in a wide range of fields.
The application of game engines has widened in scope as the technology has matured and become more user-friendly. New hardware platforms are also now targeted by game engines, including mobile phones such as Android and iPhone, and web browsers such as WebGL, Shockwave, Flash, Trinigy's WebVision, Silverlight, Unity Web Player, O3D and pure DHTML. The ability to run game engines on these platforms has made it possible to create interactive experiences that can be accessed by a wide audience, from casual users to professionals. The development of game engines for these platforms has been driven by the need to create more accessible and user-friendly tools for developers, as well as the need to create more immersive and interactive experiences for users.