On the development of games and the development of the gaming industry

Together with the creation of the first games, programmers came to the conclusion that each game contains common components, even despite the difference in hardware platforms. And the first games took place on slot machines the size of a refrigerator.
The overall functionality of games - graphics, game mechanics, physics, and more - began to stand out in separate libraries, but in order to be a “game engine” it was still far away. This was largely due to the serious difference in software and hardware platforms and the uncertainty in the games themselves. After all, the genres and types of games still had to be invented, despite the fact that many of the first games were text-based. Actually, it was for early adventures and platformers that game engines began to emerge, especially with the development of graphics - a good example is the Adventure Game Interpreter (AGI). When developing King's Quest back in 1984, Sierra On-Line programmers faced the inconvenience of low-level development of a game that was so complex and promising in terms of graphics at that time — and developed a set of solutions that AGI became. A total of 14 different games were released on it in 5 years on 7 different platforms, so the notion of “cross-platform” was already important then.
')
However, the engines of that time rarely went beyond the original development company and, as a rule, were quite narrowly specialized for a specific game genre.
Start
The situation began to change in 1993 after the release of the Doom game from id Software. Although the development of the Wolfenstein 3D engine was used in its development, in terms of capabilities and modularity, a real technological breakthrough was made in it. At that time, video processors were not able to work effectively with three-dimensional graphics, so John Carmack (the lead programmer of the engine) performed all the necessary mathematical calculations used to manipulate three-dimensional objects, light, shading, texture mapping, and others independently. As a result, the image looked three-dimensional, in fact, not as such. Therefore, the Doom engine (the first version of id Tech) was not truly three-dimensional, but pseudo-three-dimensional. But it is important that the technical component of this game set the standard for what could be called a game engine. Namely, the Doom engine was modular, it was a set of subsystems, in it each clearly separated software layer was responsible for processing its portion of data. As a result, using it for various games (Hexen, Heretic, Strife) and by third-party developers (Raven Software and Rogue Entertainment) has become much easier. Therefore, the emergence of game engines attributed to the mid-90s of the 20th century, that is, then the definition of the game engine was finally formed in the modern sense.

The game engine is a kind of highly specialized operating system, because it includes all the modules of the latter. It includes: a memory management system, a graphics subsystem, an input system, an audio subsystem, artificial intelligence, a physical subsystem, a network subsystem, a game levels editor, and more. In addition, the engine core can provide a special approach to working with files - the file (resource) system, as well as tools that work with multithreading, which are different from the main operating system. Modern game engines in addition to include an interpreter of the scripting language, sharpened to describe the game logic, and often its fully visual editor. Its use allows you to abstract from the description of low-level commands and instructions, and concentrate on the gameplay. The components of the engine are not limited to this, they can be either more or less.
Goals
The game engine is primarily created in order to simplify and speed up development. Therefore, it includes tools for creating the game world - level modeling, importing objects, texturing, loading and animation of characters, creating visual effects, adjusting physics, and others.
The second significant goal of the engine development is cross-platform or platform independent development of the game. That is, the possibility of its launch with the minimum possible changes. Without any changes on another platform, the launch of the game will fail due to hardware differences, including screen sizes, means and methods of control, etc.
The development of game engines occurs together or under the influence of the development of hardware and software platforms, along with the emergence of new game genres and changes in user tastes. In short, the development of the gaming industry as a whole.
Genesis of graphic systems
In the mid-90s, after the appearance of video processors capable of processing three-dimensional graphics, software interfaces began to appear, simplifying its development. Following the cross-platform OpenGL, Direct3D for Windows came onto the scene as part of DirectX. These 2 visualizers for many years to come determined the ways of graphic output in games.
In 1996, Quake was released on the Quake Engine. This engine has had a tremendous impact on the gaming industry.
Quake Engine Based Engine TreeAlmost until the end of the decade, the middleware market for games (in other words, game engines) almost exclusively set the rhythm with id Software. However, in 1998, Epic Games released the successful Unreal game on the engine of the same name - with a true technological breakthrough in terms of graphics. Epic founder Tim Sweeney became the lead programmer for the engine. Tim along with Carmack is the most significant figure in the history of the game industry engines - and the Unreal Engine in its 3 and 4 versions is very popular now. A year later, Epic released the even more popular Unreal Tournament game.

At the same time, the rival development company, id Software, released the multiplayer game Quake 3 Arena (on the id Tech 3 engine), exactly like Unreal Tournament involving network battles.

These two games have become the flagship of the industry, determining its development for the years ahead.
There were not many players on the market. Therefore, their products were very expensive, and the flagship engines were licensed only by quite large developers,
The situation began to change radically around the middle of the first decade of the 21st century. Then a large number of game development tools began to appear on the market and in the public domain. The middleware business began to gain momentum. At first, the market was filled with graphic frameworks: Ogre, DarkGDK, and others, providing the programmer with a high-level layer above the graphic API. At the same time, different from the game engines, the complete absence of in-game editors.
Then, full-fledged game engines came to the market at prices appropriate for a small indie development team, among them: Torque 3D, Unity 3D, and many others. Even starting as flagship engines - for example, Crytek's CryEngine and the previously mentioned Unreal Engine - have begun to use a much more affordable pricing policy and have become available even to novice developers.
Torque 3DCasual games have become an important trend of the gaming industry. From their technical point of view, these simple, but colorful puzzles that do not require fierce interaction with the keyboard and mouse were simpler than three-dimensional hardcore shooters from a technical point of view, so they did not require a strong modification of universal engines for their development. But, on the other hand, new players have appeared in the industry, such as: Torque Game Builder, HGE and others.
Torque game builderAt the same time, thanks to World of Warcraft, the MMORPG became very popular in the gaming industry - and at the same time many genres relied on multiplayer. A number of engines could not provide users with new functionality for client-server applications, so they went into oblivion. Other engines were adapted for the multiplayer world by developing server solutions for them, such as Photon and SmartFox for Unity 3D. The third type of universal engines, initially being a client-server, did not feel the changes. It includes Torque 3D. Also, new engines for global multiplayer games, such as HeroEngine, BigWorld, have appeared on the market, combining a server solution that is scalable for thousands of players and a client accessible to a specific player.
HeroEngineSince the 90s, browser games have existed on the market, and then social networks gave them a second birth. the need to effectively create games for the browser has not gone unnoticed. The developers of universal engines, such as Torque 2D / 3D, Unity 3D responded to this quite quickly, releasing plug-ins for browsers that allowed displaying graphics directly in the latter. At first, the visualizer based on Flash technology gained popularity, but for a number of reasons this technology is increasingly losing its market share. So now for visualization on the web, a library for the JavaScript language - WebGL, which allows you to create interactive 3D graphics, is often used. However, due to the shortcomings of the language, such as the lack of multithreading, the library cannot fully meet the needs of igrodelov. To replace the W3C consortium (which includes: Microsoft, Google, Mozilla, and others), it is developing a new low-level binary compiled format WebAssembly.
WebAssemblyTowards the end of the first decade of the 21st century, mobile technology developed very rapidly. As a bolt from the blue, mobile devices appeared comparable in power to a medium-price PC and capable of launching powerful gaming applications with all the special effects that low-level graphical interfaces had. In some cases, game engine developers responded by creating specialized converters that create native code for a specific hardware (such as Unity 3D), and in others they upgraded their products for cross-platform (for example,
Torque 2D , Cocos 2DX). Also, new players appeared on the market, offering cross-platform engines for the entire fleet of mobile devices, running at the speed of the native code. Examples of such tools: Corona SDK, Marmalade SDK, AGK (App Game Kit).
Corona SDKAlso, a whole range of cross-platform engines emerged, allowing to develop a game with minimal knowledge of programming. Examples include Construct 2 and GameMaker Pro. Using ready-made solutions and visual editors, you can quickly - sometimes within a few hours - create simple games. This turned out to be especially prevalent in the mobile market, where the distribution of free2play models and a short gaming session made “simple” games a completely successful genre.
New gaming industry
Low-level software interfaces: OpenGL, DirectX are developed in accordance with video adapters. Once in 1 - 2 years, new versions appear that support and enable application programmers (engine developers) to implement all the functionality of hardware. DirectX has already reached the 12th version. On the other hand, Vulkan came to replace OpenGL - a new cross-platform graphics api, developed by the Khronos Group consortium, which includes hardware and software manufacturers.
VR

The latest trend in the gaming industry is virtual / augmented reality. The vast majority of modern game engines have already acquired support for this technology, among them: Torque 3D, Unity 3D, Unreal Engine 4. Many third-party extensions have been developed, such as Vuforia Unity Extension. To implement VR glasses support, engine developers need not only to add visualization to the second screen (for the second eye) with different content from the first one (since the first and second eyes can see different scenes), but also to add control support from new input devices which are different for different VR headsets and are not yet standardized.
Results
Over the years the existence of the gaming industry, it has formed 5 large types of games in terms of game engines:
1) Single player games (with its specific for PC and consoles)
2) Multiplayer online games
3) Games for social networks and browser games in general
4) Mobile games (specific to phones and tablets, and Android / iOS)
5) Games for VR / AR
In addition, there are other platforms - from SmartTV to gaming machines.
For the development of each type there is a specific set of engines, because on the technical side there are big differences between all types of games. There are dozens of engines on the market for every taste: cross-platform and specialized, requiring active work with the source code of the engine and available without any knowledge of programming in general, with different performance, quality of documentation and price. In more detail about modern engines and how to choose the right one for one’s own purposes, I am telling the VSBI course on the discipline “Technical Basics of Game Development” of our program “
Management of Internet Game Projects ” By the way, on February 11 we will have a one-day conference with free entrance (you only need to
register ), where at 12:00 I will read one of my lectures about game engines, come in.