Wednesday, 19 February 2014

Elements of Game Technology: Game Engines

Game engines are the programs behind a game. They contain all of the code which will tell a computer what to do when a certain thing happens, they will tell the computer how to compute the textures and triangles. This means they are incredibly complex and have improved greatly since the '90s. Explaining a game engine may have been somewhat easier, as the visuals weren't really hiding what was going on as much, where now we have decals, particle effects, tens of thousand tri limits and various techniques to create better and better visuals. A triangle is now an incredibly complex idea for people to understand while looking at a game and the fact that there can sometimes be a million on the screen being rendered makes this more difficult to comprehend.

If we look at Doom its far easier to say that the walls here are made of triangles between vertices, the Doom level is like a 3 dimensional graph with points plotted at positions like 1,2,10 (x,y,z) many of these points make up the level. It is the engine's job to read the information of where the points are, and what other points they are connected to, to create each triangle, it then needs to render the texture on to that triangle.

Game engines are maths, they are maths and code. Nowadays they are incredibly advanced pieces of programming capable of rendering some incredible artwork realtime. There are a couple of engines which are being used regularly by both developers and are free for the public to use for non-profitable purposes. Unreal Engine 3 is probably the most commonly used and the content created with the engine is incredibly varied, it has recently been used a great deal for mobile games. CryEngine 3 is often considered the most powerful and dynamic open engine, rather than having to bake lighting CryEngine has a very successful dynamic lighting system. More recently just before the next generation of engines and consoles (PS4 and Xbox One) came out Unity3D became very popular. It is a cross-platform engine which has increased in popularity with the indie market because of the difference in price to publish a game in the engine. An engine which is used less commonly but still worth mentioning in the list of publically available engines is the Source engine. The Source engine is Valve's engine created for Coutner-Strike: Source and Half-Life 2 it is mainly used by the public to create maps for valve games but it is occasionally used to create full games such as Dear Esther and The Stanley Parable.

Game Engines were initially the developer's tools for creating the game and so they were fairly set in what kind of games would be easier to create in them, for example UDK, CryEngine3 and Source engine are all engines based around the First-Person Shooter and so building other types of games was fairly difficult at the start of their use, now engines are being used by so many different independent developers to create varied games that the creators of the engines are more interested in making the tools usable for different styles of games. The more closed off companies often have their own in house game engines which means that they don't have to provide support to outside users but rather create an engine which does is required of it.

UDK has a really efficient and powerful shader system which uses flow graphs to create procedural materials.
Cry has realtime lighting it is incredibly versatile.

Something that I'm very interested in is the move to supporting Linux as a platform games to run on. Previously no one has had any interest in using Linux as it is an open-source operating system which has many variations each with their own differences and often Linux is unsupported by hardware creators. All of this has been changing since Valve decided to port their games to Linux in 2012 it is now clear that this was the start of the creation of SteamOS a variant of Debian, a Linux distribution. This has opened up some interesting developments such the creation of the Leadwerks Game Engine, an engine which is focused on indie developers and Linux with a cost of £76 and no royalty fees it seems like it has come along at the perfect time to fit with the release of SteamOS this summer. Unfortunately as it is a recent development it is no where as refined or efficient as the other engines which have been developed over years and years.