For every game, game engine plays a major role since the game engine helps the game designers to bring characters of the game to life, by helping in scenes, characters and graphic generation, sound, artificial intelligence, scripting animation, networking etc. Game Engine is like an integrated development environment, with a readymade suite of visual development tools and reusable software components. It turns the complex task of game development simple, by providing an abstraction layer, which makes a lot of big tasks look very easy, while the game engine does all the hardwork in the background. In other words, it is a framework that is designed specifically for the construction and development of video games. Developers use these game engines for creating games for consoles, mobile devices and personal computers.
So, developers or game lovers who find interest in diving deep into game development, for exploring new technologies and showcasing your imagination in the form of game or if someone is just curious to know what's happening behind game engine technology, here's a detailed explanation of the components that constitutes a game engine.
A Game Engine is created to develop games, just like any other IDE for any particular language programming. All the components in the game engine are built and integrated to support the motive of game development.
A game is nothing if it cannot be played, the game engine provides with support of array of input devices like mouse, gamepad, touch etc while also providing support for devices like gamepad, joysticks etc. There are many different ways of handling an input, two most commonly used are through:
events are captured by the computer (like right click of mouse, or pressing arrow up key etc) and your custom code is triggered based on what input was received.
Polling is used to get the position values, for example on which coordinates(x,y) does the mouse pointer is, or tilt angle of Game stick or the Smartphone using which you are playing the game.
Graphics in a game decides its fate. 3D graphics are designed using 3D assets, which are developed and designed in external 3D rendering programs like Maya, Blender etc and are then imported into the game engine. Hence a good game engine must support multiple import formats.
Game engine provides a lot of features like lighting effects, shadow, bump maps, blending animation etc to make the imported asset look real.
There is a sub-component of the game engine, which is known as Physics Engine. Physics engines are software which allows performing fairly accurate simulation of most of the real-life physical systems like the movement of rigid body (we will perform that practically in later chapter using Unity 3D), soft body mass and velocity alteration and fluid dynamics, bounciness etc. These are complex engines integrated in the latest game engines, are mainly used in video games (usually as a middleware), where the real-time and real-life simulation must be portrayed. Gravity, collision detection, rotation & revolution, speed of objects and other such applications are handled by the physics engine within the game.
Now-a-days, Artificial Intelligence is playing a significant role within the game development. Knowing the kind of weapons the player will be using based on the situation or the behavior of the player gets recorded and actions are performed accordingly, can be done using specialized software embedded into the games. The implementation of AI in games is usually done using readymade scripts that are designed and written by software engineers who are specialized in AI. For example: How our character reacts on hitting a wall, or seeing an animal etc can be done easily by building a trer of behaviour nodes, rather than writing complex code.
Audio and Rendering Engines are a sub-part of the Game engine which are used to control the sound effects and generate 3D animated graphics in your 2D screen. They provide a software abstraction of GPU using the multi-rendering API's like Direct3D or OpenGL for video rendering and API's such as Open-AL, SDL audio, X-Audio 2, Web Audio for audio.
Since a decade now, games support online multiplayer and social gaming, which connects your gaming adventures with your friends. Most of the gaming engines, provide complete support and scripts for such requirements, so you do not have to worry about TCP/UDP traffic, social API integrations etc.
How to make a game? This is the most elusive question of the gaming industry. In fact, the whole software industry at large is relatively open and up-front about how immature the software engineering processes are as a whole. Take a look at "After the Gold Rush" by Steve McConnell for an excellent discussion of the much-needed maturity in the software industry. A lot of development efforts in the software engineering community is going into improving the process of how we go about making software.
During the '60s and '70s great strides were made in increasing the strength of the programming languages from Fortran and COBOL to C. During the '80s the microcomputer created tremendous improvements in the programming workplace. Each developer could have his own workstation where he edited, ran, and debugged code.
During the late '80s and early '90s the leading edge of the software development community got charged with the efficacy of object-oriented programming and the large-project strength of C++. Improvements continued with integrated editors, debuggers, and profilers.
Optimizing the compilers have almost made assembly programming obsolete, and visual interface layout tools have made programming rather pleasant for business applications. With all of these fantastic improvements to the software development process, software project budgets have only gotten larger and have only slipped by longer amounts of time and by greater numbers.