Game engine

Last updated

A game engine is a software framework primarily designed for the development of video games and generally includes relevant libraries and support programs such as a level editor. [1] The "engine" terminology is akin to the term "software engine" used more widely in the software industry.

Contents

Game engine can also refer to the development software supporting this framework, typically a suite of tools and features for developing games. [2] [3]

Developers can use game engines to construct games for video game consoles and other types of computers. The core functionality typically provided by a game engine may include a rendering engine ("renderer") for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localization support, scene graph, and video support for cinematics. Game engine implementers often economize on the process of game development by reusing/adapting, in large part, the same game engine to produce different games [4] or to aid in porting games to multiple platforms.

Purpose

Creating a platform game in Godot UI of Godot Game Engine.jpg
Creating a platform game in Godot

In many cases, game engines provide a suite of visual development tools in addition to reusable software components. These tools are generally provided in an integrated development environment to enable simplified, rapid development of games in a data-driven manner. Game-engine developers often attempt to preempt implementer needs by developing robust software suites which include many elements a game developer may need to build a game. Most game-engine suites provide facilities that ease development, such as graphics, sound, physics and artificial-intelligence (AI) functions. These game engines are sometimes called "middleware" because, as with the business sense of the term, they provide a flexible and reusable software platform which provides all the core functionality needed, right out of the box, to develop a game application while reducing costs, complexities, and time-to-market—all critical factors in the highly competitive video-game industry. [5]

Like other types of middleware, game engines usually provide platform abstraction, allowing the same game to run on various platforms (including game consoles and personal computers) with few, if any, changes made to the game source-code. Often, programmers design game engines with a component-based architecture 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. However achieved, extensibility remains a high priority for game engines due to the wide variety of uses for which they are applied. 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. [6]

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 more encompassing term "game engine". This terminology is inconsistently used, as many full-featured 3D game engines are referred to simply as "3D engines". Examples of graphics engines include: Crystal Space, Genesis3D, Irrlicht, OGRE, RealmForge, Truevision3D, and Vision Engine. Modern game- or graphics-engines generally provide a scene graph—an object-oriented representation of the 3D game-world which often simplifies game design and can be used for more efficient rendering of vast virtual worlds.[ citation needed ] Most game engines or graphics engines use a Graphics API, which lets you easily communicate with the GPU. But older games did not have hardware acceleration or GPUs and had to build their own software renderer.

As technology ages, the components of an engine may become outdated 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.

History

Some game engines experience an evolution over time and develop a family tree, like for instance id's Quake engine which resulted in the id Tech family. Quake - family tree 2 Simplified.svg
Some game engines experience an evolution over time and develop a family tree, like for instance id's Quake engine which resulted in the id Tech family.

Before game engines, games were typically written as singular entities: a game for the Atari 2600, for example, had to be designed from the bottom up to make optimal use of the display hardware—this core display routine is today called the kernel by developers of games for older systems. Other platforms had more leeway, but even when the display was not a concern, memory constraints usually sabotaged attempts to create the data-heavy design that an engine needs. Even on more accommodating platforms, very little could be reused between games. The rapid advance of arcade hardware—which was the leading edge of the market at the time—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. Since the golden age of arcade video games, it became common for video game companies to develop in-house game engines for use with first-party software.

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 (NES). The engine they had developed for the side-scrolling racing game Excitebike (1984) was later employed for the scrolling platformer Super Mario Bros. (1985). This had the effect of allowing Mario to smoothly accelerate from a walk to a run, rather than move at a constant speed like in earlier platformers. [7]

While third-party game engines were not common up until the rise of 3D computer graphics in the 1990s, there were several 2D game creation systems produced in the 1980s for independent video game development. These include Pinball Construction Set (1983), ASCII's War Game Construction Kit (1983), [8] Thunder Force Construction (1984), [9] Adventure Construction Set (1984), Garry Kitchen's GameMaker (1985), Wargame Construction Set (1986), Shoot-'Em-Up Construction Kit (1987), Arcade Game Construction Kit (1988), and most popularly ASCII's RPG Maker engines from 1998 onward. Klik & Play (1994) is another legacy offering that is still available. [10]

The term "game engine" arose in the mid-1990s, especially in connection with 3D games such as first-person shooters with a first-person shooter engine. Epic games, founded by developer Tim Sweeney, debuted Unreal Engine in the year 1998. [11]

Such was the popularity of Id Software's Doom and Quake games that, rather than work from scratch, other developers licensed the core portions of the software and designed their own graphics, characters, weapons and levels—the "game content" or "game assets". Separation of game-specific rules and data from basic concepts like collision detection and game entity meant that teams could grow and specialize. [10]

Later games, such as id Software's Quake III Arena and Epic Games's 1998 Unreal were designed with this approach in mind, with the engine and content developed separately. The practice of licensing such technology has proved to be a useful auxiliary revenue stream for some game developers, as one license for a high-end commercial game engine can range from US$10,000 to millions of dollars, and the number of licensees can reach several dozen companies, as seen with the Unreal Engine. At the very least, reusable engines make developing game sequels faster and easier, which is a valuable advantage in the competitive video game industry. While there was a strong rivalry between Epic and id around 2000, since then Epic's Unreal Engine has been far more popular than id Tech 4 and its successor id Tech 5. [12]

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. It is now common, for example, for a typical game development team to have several times as many artists as actual programmers. [13]

First-person shooter games remain the predominant users of third-party game engines, but they are now also being used in other genres. For example, the role-playing video game The Elder Scrolls III: Morrowind and the MMORPG Dark Age of Camelot are based on the Gamebryo engine, and the MMORPG Lineage II is based on the Unreal Engine. Game engines are used for games originally developed for home consoles as well; for example, the RenderWare engine is used in the Grand Theft Auto and Burnout franchises.

Threading is taking on more importance due to modern multi-core systems (e.g. Cell) and increased demands in realism. Typical threads involve rendering, streaming, audio, and physics. 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–60 Hz. For example, on PlayStation 3, physics ran in Need For Speed at 100 Hz versus Forza Motorsport 2 at 360 Hz.

Although the term was first used in the 1990s, there are a few earlier systems in the 1980s that are also considered to be game engines, such as Sierra's Adventure Game Interpreter (AGI) and SCI systems, LucasArts' SCUMM system and Incentive Software's Freescape engine (in 1986 [14] ). Unlike most modern game engines, these game engines were never used in any third-party products (except for the SCUMM system which was licensed to and used by Humongous Entertainment).

As game engine technology matures and becomes more user-friendly, the application of game engines has broadened in scope. They are now being used for serious games: visualization, training, medical, and military simulation applications, with the CryEngine being one example. [15] To facilitate this accessibility, new hardware platforms are now being targeted by game engines, including mobile phones (e.g. Android phones, iPhone) and web browsers (e.g. WebGL, Shockwave, Flash, Trinigy's WebVision, Silverlight, Unity Web Player, O3D and pure DHTML). [16]

Additionally, more game engines are being built upon higher level languages such as Java and C#/.NET (e.g. TorqueX, and Visual3D.NET), Python (Panda3D), or Lua Script (Leadwerks). As most 3D rich games are now mostly GPU-limited (i.e. limited by the power of the graphics card), the potential slowdown due to translation overheads of higher level languages becomes negligible, while the productivity gains offered by these languages work to the game engine developers' benefit. [17] These recent trends are being propelled by companies such as Microsoft to support indie game development. Microsoft developed XNA as the SDK of choice for all video games released on Xbox and related products. This includes the Xbox Live Indie Games [18] 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. [19]

Game engines as an industry

Producers of game engines decide how they allow users to utilize their products. Just as gaming is an industry, so are the engines they are built off. The major game engines come at varying prices, whether it be in the form of subscription fees or license payments. [20] Unity and the Unreal Engine are currently the two most popular choices for game developers. [21] 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.

Game middleware

In the broader sense of the term, game engines themselves can be described as middleware. In the context of video games, however, the term "middleware" is often used to refer to subsystems of functionality within a game engine. Some game middleware does only one thing but does it more convincingly or more efficiently than general purpose middleware.

The four most widely used middleware packages [22] 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 (IME) add-on for in-game Asian chat support.

Other middleware is used for performance optimisation—for example 'Simplygon' helps to optimise and generate level of detail meshes, and 'Umbra' adds occlusion culling optimisations to 3d graphics.

Some middleware contains full source code, others just provide 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.

See also

Related Research Articles

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

A game programmer is a software engineer, programmer, or computer scientist who primarily develops codebases for video games or related software, such as game development tools. Game programming has many specialized disciplines, all of which fall under the umbrella term of "game programmer". A game programmer should not be confused with a game designer, who works on game design.

<span class="mw-page-title-main">LightWave 3D</span> 3D computer graphics program

LightWave 3D is a 3D computer graphics program developed by LightWave Digital. It has been used in films, television, motion graphics, digital matte painting, visual effects, video game development, product design, architectural visualizations, virtual production, music videos, pre-visualizations and advertising.

<span class="mw-page-title-main">Visual programming language</span> Programming language written graphically by a user

In computing, a visual programming language, also known as diagrammatic programming, graphical programming or block coding, is a programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations. VPLs are generally the basis of Low-code development platforms.

RenderWare is a video game engine developed by British game developer Criterion Software.

Game programming, a subset of game development, is the software development of video games. Game programming requires substantial skill in software engineering and computer programming in a given language, as well as specialization in one or more of the following areas: simulation, computer graphics, artificial intelligence, physics, audio programming, and input. For multiplayer games, knowledge of network programming is required. In some genres, e.g. fighting games, advanced network programming is often demanded, as the netcode and its properties are considered by players and critics to be some of the most important metrics of the game's quality. For massively multiplayer online games (MMOGs), even further knowledge of database programming and advanced networking programming are required. Though often engaged in by professional game programmers, there is a thriving scene of independent developers who lack a relationship with a publishing company.

<span class="mw-page-title-main">Havok (software)</span> Video game middleware

Havok is a middleware software suite developed by the Irish company Havok. Havok provides physics engine, navigation, and cloth simulation components that can be integrated into video game engines.

A first-person shooter engine is a video game engine specialized for simulating 3D environments for use in a first-person shooter video game. First-person refers to the view where the players see the world from the eyes of their characters. Shooter refers to games which revolve primarily around wielding firearms and killing other entities in the game world, either non-player characters or other players.

<span class="mw-page-title-main">Software rendering</span> Generating images by computer software

Software rendering is the process of generating an image from a model by means of computer software. In the context of computer graphics rendering, software rendering refers to a rendering process that is not dependent upon graphics hardware ASICs, such as a graphics card. The rendering takes place entirely in the CPU. Rendering everything with the (general-purpose) CPU has the main advantage that it is not restricted to the (limited) capabilities of graphics hardware, but the disadvantage is that more transistors are needed to obtain the same speed.

<span class="mw-page-title-main">PhysX</span> Realtime physics engine software

PhysX is an open-source realtime physics engine middleware SDK developed by Nvidia as part of the Nvidia GameWorks software suite.

<span class="mw-page-title-main">Autodesk Softimage</span> Discontinued 3D graphics software

Autodesk Softimage, or simply Softimage was a 3D computer graphics application, for producing 3D computer graphics, 3D modeling, and computer animation. Now owned by Autodesk and formerly titled Softimage|XSI, the software has been predominantly used in the film, video game, and advertising industries for creating computer generated characters, objects, and environments.

SpeedTree is a group of vegetation programming and modeling software products developed and sold by Interactive Data Visualization, Inc. (IDV) that generates virtual foliage for animations, architecture and in real time for video games and demanding real time simulations.

<span class="mw-page-title-main">C4 Engine</span> Proprietary computer game engine developed by Terathon Software

The C4 Engine is a proprietary computer game engine developed by Terathon Software that is used to create 3D games and other types of interactive virtual simulations for PlayStation 5, PlayStation 4, PlayStation 3, Windows, Mac OS X, Linux, and iOS.

<span class="mw-page-title-main">Unity (game engine)</span> Cross-platform video game and simulation engine

Unity is a cross-platform game engine developed by Unity Technologies, first announced and released in June 2005 at Apple Worldwide Developers Conference as a Mac OS X game engine. The engine has since been gradually extended to support a variety of desktop, mobile, console, augmented reality, and virtual reality platforms. It is particularly popular for iOS and Android mobile game development, is considered easy to use for beginner developers, and is popular for indie game development.

Umbra is a graphics software technology company founded 2007 in Helsinki, Finland. Umbra specializes in occlusion culling, visibility solution technology and provides middleware for video games running on Windows, Linux, iOS, PlayStation 4, Xbox One, PlayStation 3, Xbox 360, Wii U, handheld consoles, and other platforms. In 2021, Amazon acquired Umbra.

Robotics middleware is middleware to be used in complex robot control software systems.

<span class="mw-page-title-main">Marmalade (software)</span>

Marmalade SDK was a cross-platform software development kit and game engine from Marmalade Technologies Limited that contains library files, samples, documentation and tools required to develop, test and deploy applications for mobile devices.

Silicon Studio Corporation is a Japanese computer graphics technology company and HR services provider based in Tokyo. As a technology development company, Silicon Studio has produced several products in the 3D computer graphics field, including middleware software, such as a post-processing visual effects library YEBIS, real-time global illumination technology, such as Enlighten, and Mizuchi, a physically based rendering engine. As a video game developer, Silicon Studio has worked on many different titles for several gaming platforms, most notably, the action-adventure game 3D Dot Game Heroes on the PlayStation 3, the role-playing video games Bravely Default and Bravely Second: End Layer on the Nintendo 3DS, and Fantasica on the iOS and Android mobile platforms.

<span class="mw-page-title-main">Scaleform GFx</span> Discontinued game development middleware package

Scaleform GFx is a discontinued game development middleware package, a vector graphics rendering engine used to display Adobe Flash-based user interfaces and HUDs for video games. In March 2011, Autodesk acquired Scaleform Corporation and Scaleform GFx became part of the Autodesk Gameware line of middleware. On July 12, 2018, Autodesk discontinued Scaleform GFx, and it is no longer available for purchase.

<span class="mw-page-title-main">Virtual reality game</span> Video game played in virtual reality

A virtual reality game or VR game is a video game played on virtual reality (VR) hardware. Most VR games are based on player immersion, typically through a head-mounted display unit or headset with stereoscopic displays and one or more controllers.

References

  1. Valencia-Garcia, Rafael; et al. (2016). Technologies and Innovation: Second International Conference, CITI 2016, Guayaquil, Ecuador, November 23-25, 2016, Proceedings. Springer. ISBN   9783319480244 . Retrieved 2021-07-22.
  2. "Common game development terms and definitions | Game design vocabulary | Unity". Unity. Archived (PDF) from the original on 2017-08-06. Retrieved 2021-07-14.
  3. Tan, James. "Introduction - Unreal Engine (Canterbury Software Summit 2013 slides)" (PDF). Unreal Engine. Retrieved 2021-07-14.
  4. "What is a Game Engine?". GameCareerGuide.com. Retrieved 2013-11-24.
  5. O'Neill, John (January 15, 2008). "My Turn: The Real Cost of Middleware". Gamedaily.com. Archived from the original on August 30, 2009. Retrieved 2013-11-24.
  6. Report on Use of Middleware in Games Archived October 17, 2013, at the Wayback Machine
  7. Williams, Andrew (16 March 2017). History of Digital Games: Developments in Art, Design and Interaction. CRC Press. pp. 152–4. ISBN   978-1-317-50381-1.
  8. "War Game Construction Kit". Oh!FM . Archived from the original on 28 July 2013. Retrieved 3 September 2012. Alt URL
  9. "Thunder Force Construction". Oh!FM . Archived from the original on 28 July 2013. Retrieved 1 September 2012. Alt URL
  10. 1 2 Fiadotau, Mikhail (2019). "Dezaemon, RPG Maker, NScripter: Exploring and classifying game 'produsage' in 1990s Japan". Journal of Gaming & Virtual Worlds. 11 (3): 215–230. doi:10.1386/jgvw.11.3.215_1. S2CID   213694676.
  11. Weinberger, Matt. "The CEO behind 'Fortnite' says it's 'evolving beyond being a game' and explains the company's ambitious vision". Business Insider. Retrieved 2022-02-17.
  12. Bramwell, Tom (2007-08-09). "id Tech 5 Interview • Page 1 • Interviews •". Eurogamer.net. Retrieved 2013-11-24.
  13. "Game Development Team Composition Study - Changes over time" . Retrieved 2011-01-17.
  14. "Freescape Engine". Universal Videogame List. Retrieved 2020-05-16.
  15. "Video Games Starting to Get Serious". Gazette.net. 2007-08-31. Archived from the original on 2008-12-03. Retrieved 2011-01-17.
  16. "Gaming: Mobile and Wireless Trends for 2008". M-trends.org. Archived from the original on 2011-01-08. Retrieved 2011-01-17.
  17. Zerbst, Stefan; Düvel, Oliver (2004). 3D Game Engine Programming (book). Premier Press. ISBN   9781592003518 . Retrieved 2011-01-17.
  18. "xboxlivecommunitygames.org". xboxlivecommunitygames.org. Retrieved 2013-11-24.
  19. "Microsoft to Enable User-Created XBox 360 Games" . Retrieved 2017-05-05.
  20. "The 10 Best Video Game Engines | 2018 Edition". The Ultimate Resource for Video Game Design. 2017-03-11. Retrieved 2019-05-15.
  21. "The Two Engines Driving the $120B Gaming Industry Forward". CB Insights Research. 2018-09-20. Retrieved 2019-05-15.
  22. "Gamasutra Engine and Middleware Technology Survey". Gamasutra.com. 2009-05-08. Retrieved 2011-01-17.