Friday 15 November 2013

Understanding the purpose of game engines.

Introduction

A computer games engine is the building blocks of a video game. It provides a software framework which game developers can use to create and edit content for video games. They can feature a large range of tools and elements to aid developers into creating a game, such as renderers, animation and scripting to name a few. The engines allow the process of video games to be economized. This is because you can use the same game engine to create different games. Computer game engines use a variety of programming languages, such as Java and C++.
The purpose of a game engine is to provide a suite of visual development tools to a developer to aid them in the production process. They enable a rapid development by simply being able to re-use meshes, code and textures. Think of it as a big box and it contains a family of tools to help you with all aspects of creating a game such as audio, graphics and AI functions.
Ever since video games existed, it took a while for game engines to be part of the industry. Games would have to be made completely from scratch to make the optimal use of the hardware. The first few games engines came around in 1983, in the form of 2D game creation systems for independent use. Pinball Construction Set and ACSII’s War Game Construction Kit were the first 2 that came around with many more to follow.

History of Game Engines

The first game engine that existed as one was the Space Rogue game engine. Released in 1989, the engine had the same name as the game that Origin Systems released it as. OS started developing on Ultima Underworld straight after Space Rogue was released, with the most technological factor of this engine was that it could texture map.

One of the historic game engines that must be remembered is the Doom game engine. It created a clever illusion of a 3D game while using just basic 2D sprites on the models and characters. This was done through a number of different factors which includes height adjustments.

Stonekeep took a long time to be shed light, which was originally a 9 month project. In the end, it took 5 years. Not entirely by accident however, the engine was constantly being reviewed as hardware continued to advance. The engine made use of motion captured monsters, which only consisted of models from the waist up at the start. It had some symmetry problems down the line however. When a player turned around, he would be moved to the other side of the grid.

Another memorial-worthy game engine, the Quake engine was designed to run smoothly without blowing out a computer's processing power. The main technological advantage that Quake had was that the developers introduced a technique where they could render maps that purged certain areas where players couldn't see at the time. The ending effect was that fewer polygons were used. Quake also took advantage of 3D light sources.

Renderware was one of the most popular game engines it seems, with over 200 games under its belt. This was over a variety of consoles but a lot of them were claimed by the PlayStation 2 games. This was one of the earliest multi-platform game engines. One of the main technological advancements Renderware started the trend for was the ability that allowed developers to manipulate game processes and art in real time, which was a great achievement for an early game engine.

Unreal was another great game engine that was created in history of the game industry. Widely known for its own Unreal and Tournament games, it started off as strictly a FPS game engine. Eventually it was the basics of many RPG titles, including Mass Effect. One of the popular game engines among modders, it was the first game engine to be packaged with a map editor alongside the game. This allowed the community to show their creativity and create their own levels.

The CryEngine was a brutal game engine that existed. Known to push hardware to its absolute limits with Crysis, the game engine pushed a lot into the visual looks. Their use of pixel shaders created realistic water effects. The best of this was that there was no load times while you could enjoy the great graphics this engine could provide to a game. This was (of course) if you had the hardware to run it.

The final game engine I will mention is the Frostbite engine. With the most recent one, Frostbite 3, coming into play with Battlefield 4, I find it will be another benchmark for game engines to come. Concentrating on the physics, Frostbite 3's most popular feature is its destruction realism. The effects and detail that comes along with this engine is outstandingly amazing and is one of the best game engines that exist currently.


Types of Game Engines

There are a range of different game engines that games are developed in. Each engine has its strengths and weaknesses but is used to suit the game that is being created. Whereas you may use a 2D game engine to create a simple browser game using sprites, you may want to use a 3D game engine such as Unreal 3 to create a first person shooter to rival Call of Duty.

Below, I will explain the four types of game engines that are used in the industry.


2D Game Engines

2D game engines are used to create 2D games across a range of platforms but wouldn’t include touch mechanics for these game, these would be purely for button games. To add touch for mobile games, you would have to use a mobile game engine. These types of games can be found on consoles, mobile devices and on the internet. These game engines will always incorporate flat images (sprites) due to the style of the engine. Everything in 2D always tends to be fairly simple such as the controls will limit to a few keyboard controls or mouse movement. If there are any AI characters in the game, they tend to be easy and the design just revolves around being a simple game.
An example of a 2D engine would be the Cocos2D game engine which created a variety of games, including the infamous Facebook game Farmville. The game engine itself follows a typical standard game engine but it is an open source game engine. This means that source codes and tools are freely available to anyone who wishes to create a game.
3D Game Engines

3D game engines are the most complicated game engines currently available at the moment. With the evolution of technology ever expanding, anything is possible within the limitations of a 3D environment. By far the most complicated of engines to use and this is down to the amount of factors there are for a single action. For example, you might be importing a mesh into the 3D space. That might be simple on a 2D engine where you only have to worry about 2 dimensions but for 3D, you have to worry about more dimensions. This is just one of the factors that differs the two engines.
The assets tend to require a lot more talent and skill to pull off and most professional companies will only take on staff with experience of creating the assets, such as the 3D animation of a character or the model of a Ferrari. A lot more time is also spent creating a 3D game, due to all the factors and assets a game needs in a 3D game.
An example of a game that uses a 3D game engine is TERA, a MMORPG game that was created using Unreal 3. Unreal Development Kit, developed by Unreal Games, is a games engine that has the tools to create a FPS game but can be adapted to create other games, such as RPGs.


Mobile Game Engines 
Mobile game engines are the most recent engines to shed light in the industry. They exist to incorporate senses into games, such as touch for smartphone games. They make use of the technology in the device, such as gyroscopes and tilting actions to create controls for the game. This is a staple for mobile game engines, as they rely on other ways to control aspects of games. You could tilt your tablet forward and that could be the control for acceleration for a car.
While the games created in these engines are fairly easy to create with simple assets such as animations and sounds, it becomes a lot more difficult when it comes to controls. Although in these engines, the common controls in mobile games are pre-made and just require adjusting to your desires, if you wanted to create a new mechanic or control for a game, you would have to use the technology in a device and write the code for yourself. Compared to other engines, they would use a lot more flat images than 3D environments so they are similar to 2D engines.


So what are the differences in functionality between these game engines?

Well most of the time, the differences don't seem to exist. A lot of the components are universal, such as sound where it can be used between game engines with very little to no changes. While the sound may vary in quality or size between the games you can create with the 3 types of game engines, you only need 1 sound component which revolves around the same tools and uses to apply sound to a game.

The larger differences are the reason why the game engines are separated between 2D, 3D and mobile. For 2D game engines, you are only going to be dealing with flat images and sprites. That is what a 2D game engine is built around and you can't produce any 3D assets for that game. The tools are simplier compared to the tools you would find in a 3D game engine. For example, animating assets in a 2D engine like sprites are easy to do, compared to 3D animation which is higher up on the difficulty scale.

Another notable difference between the functionalities are the platforms available for each type of game engine.
 
Game Mods

Game mods are really just a custom version of a base game code. It can be to alter anything within the game, such as textures for a character model, where players would create their own skins for the game they're playing. Another is where a developer may change weapons of a game and create different maps.

A lot of game mods are created in Minecraft, as I feel that is the best example I can give. Sandbox games tend to give endless freedom to players who have the ability and talent to create mods for games and Minecraft is the biggest of them all.


Game Engine Components

Game engine components are parts of the kit that are premade and ready to use. They all contribute into the development of the game in the engine and all have their own unique purpose as to why they are there. Often re-usable, they give the developers access to the core features of the engine but can be replaceable with other components should the developing studio prefer a different physics component to create their game with for example. They can import their own components and use them to how they desire.

Components are really useful as it gives developers a baseline to what they can use without actually creating their own components for the game, which saves time and money which can relate back as to why a developer would want to use a game engine; to save time.

Below are some of the components that can be found in game engines and what their core purpose is.


Artificial Intelligence

To start off with, artificial intelligence is an illusion of intelligence that is programmed into non-playable characters in a game. Also known as 'bots', artificial intelligence defines what a boss in a game could do for example and the timing of its attacks. It may change its attack pattern should it need to according to the situation and moment in time. Developers and programmers can change the behaviour by simply changing a few lines of code or by using an AI component.
The biggest feature that you can do with an AI component is to use a pathfinder. This allows developers to program into the character where they have to move to around the game map. You can use this for many situations, such as reaction paths (to avoid damage from a player) or to walk around a dungeon freely looking for enemies. We can also mention 'cheating' AI, where an AI character would ask the game engine information on players, where the information wouldn't be available to the players. If this didn't exist, games against AI units would be extremely easy and boring. This feature can allow for more creativity and theory-crafting for strategy games.
The AI component for a game engine would be a premade tool by the game engine that could easily set the difficulty of an AI unit by using a range of options built into the game engine. From here, they may decide to increase the frequency of the attacks made by a boss in a game or increase the power of those attacks.

Depending on the game engine, developers can create their own options into an artificial intelligence component that suit the game that they are creating. They may want their AI characters to respond to lasers a character fires so they would create their own programming and import it into the game engine so it's easily re-usable.

To finalize, the purpose of this component is to help developers integrate the illusion of intelligence into their characters to let them respond to in-game situations or by giving them commands to tell them how often they should be attacking or when to attack. The possibilities are endless with AI and you can theoretically create a human-like AI character.


Sound

Sound has developed immensely over the years due to the technological advancements that have taken place over the decades. Back in the 90s, it was only possible to select both low quality and few sound tracks to a game. Nowadays, we can compress them to small sizes so we can include a mass amount of sounds as well as being of a great quality.

Sound is also a vital part of any game. It can set the mood of a cutscene or enhance the atmosphere of a battlefield. Without it, you wouldn't be able to connect to a game and you would eventually get bored of them. Sounds have a variety of purposes in games and require a component to help developers implement it into their games. What you can do with this component is to attach a sound to a mesh if required, or compliment it with an animation. This flexibility allows sound to be present with almost any element a developer wishes.


Physics

Physics relates to real life if we were to describe it in a basic statement. If we go deeper however, a physics component deals with all the factors that can make games realistic and not so. You can alter wind resistances; friction and gravity to name a few features which you can apply to a game world or make the certain physic affect a model.

Altering the physics of a game really depends on the genre and style of game. For realistic games, you would have to create as close to real life as possible in terms of physics, which the Frostbite game engine is very capable of doing when it comes to destruction damage to buildings for example.


Collision Detection

To ensure that people can't walk through buildings or get stuck in trees in a first person shooter game, there's a component that's known as collision detection. This allows the game engine to detect a range of different collision modes that you can select from to use around your model or mesh. Once applied to your specifications, it can do a wide range of different actions. They generally fall under detection and response.

Collision detection is when someone comes into contact with an object. Some developers may want players to run through a barrier so they wouldn't apply any collision detection but you wouldn't want that for a building.

Collision response is the result of said detection. Remember the game you used to play in your young days where you would have to get from A to B without touching the metal bar and it buzzed if you did? That's a collision response. You could get a character to touch an orb and it would light up and flash multiple colours. That would be the response.


Graphics Rendering

Graphics rendering is a component of a game engine that creates an image from a model. However, it isn't as simple as creating a model in Maya and asking the game engine to import and project that model. The files contain data that helps the game engine define the structure of an object and this passes through the rendering process for where the final image is displayed. This is a larger and slower process for 3D graphics but the basics remain the same though.

Rendering for game engines tend to fall under the real-time rendering category as it’s done for video games which rely on the hardware of the device, the GPU, to create the graphics for them.


Conclusion

To finalize this whole article, game engines have become a staple framework when it comes to creating new and fresh games to the industry. Its core aim is to simply tasks that weren't achievable back in the past but can now be done with a few clicks of a mouse. This can save a lot of time when running a game through the development process and the technology for this is still improving every day. The game industry has grown up a lot over the past few decades and game engines is one of the 'behind the scenes' that we should appreciate for this growth.

Edited: 2nd December 2013