Tuesday, 27 March 2012

Game Engines...my enthusiasm grows

A game engine is the main software used within a game, it manages all the internal aspects of the game like culling and artificial intelligence. There are different engines for 2D, 3D, mobile games, as well as game mods.

There have been multiple 3D game engines in game history, but here are some of the most influential ones that made the industry a success. The first game engine to start using texturing and some basic 3D components was Wolfenstein 3D in 1992 produced by id Software. It was basic but it was a big hit, and started of the industry in 3D game engines. The makers of Wolfenstein would go on to create Doom. Doom took texturing to a new level with texturing floors and ceilings; it also brought forward more than one floor the player could reach within the game. The next in the series of defining game engines is Quake in 1996, yet another engine made by id Software. This brought the first 3D models instead of 2D sprites, vertex shading and 3D realtime rendering e.g. lightmaps, also full 3D game physics. Instead of every game company having to make a game engine, id Software released theirs to the industry, to give them a building block for making games, obviously with new graphics, levels...etc. Half-Life was released in 1998 made by Valve software. It was based on the quake game engine, but added some major changes to its structure. But apart from that, it introduced intelligent game play, with puzzles and challenges, this allowed gamers to think and learn from the game. The game became wildly popular hitting a genre hot spot at the time. In the same year Unreal was released, made by Epic Games. The Unreal engine was completely new and wasn't based on other engines. It has evolved into more advanced and complex engine with stimulating graphics, dynamic AI and more photorealism within the game world. It as developed into one of the most influential game engines known, used in games like Bioshock, Gears of War, DMC5, Alice Madness Returns…etc. In the image below it shows how the engine has developed from the first one to present day.

Other not so well known engines are;

Lithtech by monolith, this game engine wasn't as complex as quake or doom, but it was highly praised for its programming. It was originally called DirectEngine as it worked on Microsoft's DirectX technology, but the deal was cancelled they continued to make it, and finally changed their name and release a game. It's first title was Shogo, a Japanese anime, this was the start of a new player audience in games. Used in games like No One Lives Forever 2 and F.E.A.R.

Source by Valve in 2004, this game engine combined a lot of components used in other game engines to make it better including, real-world physics, animation, AI. More and more polygons were being added to the game to make its characters and environments look real. By this time game developers were trying to make games more stimulating and make the graphics more realistic and creating more defining games for different genre's to attract a wide audience.

Torque game engine is made for games on the iphone, this new technology develops 2D and 3D games for this mobile. The iphone has introduced touch response in mobile gaming so increasing the interactivity with the game player. Touch response character recognition is the future for platform games as well as mobile. Other engines like EDGELIB, also are designing games for the iphone. With all the attention on iphones will other mobiles be left out? The next stage in mobile
gaming will be to create more realistic graphics, but with a problem of how much space can be used within a phone it's a difficult task.

A game engine is spilt into different areas, rendering, collision detection, artificial
Intelligence, sound and physics. Graphic rendering, this includes culling methods, rendering techniques, lighting, textures, fogging, shadowing, depth testing, anti-aliasing, vertex and pixel shaders and level of detail. Culling methods, Culling is where to make a game faster you can cut out things that aren't shown in the scene depicted. There are different types of culling methods that do different jobs.

Binary space partitioning (BSP), used both in 2D and 3D games, it splits the game world into sections and determines where the player camera is at and then culls the polygons that can't be seen.

Portal based is where “rooms” are split into sections. Then through doors and windows...etc a portal is added and connected to another room. By doing this you can render the room the player is in and cull the rest.

Backface culling determines what view of a polygon you can see and then culls the parts you can't see. For example as you see in the diagram below if the player could only see the green side of the cube then it would be rendered, then all other sides would be culled. View frustum is a fancy term for player sight so if an object is out the plane of sight then it is discarded, so it doesn't waste rendering time. For example if a ball is behind the camera, this means its behind the near plane so doesn't need to be rendered.
Occlusion culling is where polygons that can't be seen within the view frustum are culled.

Game engines have multiple rendering techniques to make things look pretty and less shit below are some of these techniques;

Radiosity is where light is used to illuminate something e.g. a room. It makes shadows from objects in the room and also brightens up near by objects making them look realistic.

Ray tracing is where light is traced through a game scene. It's primarily used for mirrors and transparent objects e.g. glass, as it traces the light path when it bounces off the object and simulates its direction. This is a good technique and makes the game more realistic. Lighting detects whether a pixel is visible and adds light to it from a nearby light source.

Shadowing is where shadows are created through light by detecting whether a pixel is visible. To make a person look real in a game they must have a shadow. Shadows create great ambience in games, but also is a good rendering techniques as it can mask textures while making the scene look realistic. Real-time shadow is when shadows follow a pattern as they would in real time, like the sun travelling across the sky.

Fogging is a great technique to create a scene and create perception of distance, and also reduce rendering time. If objects too far away depending on the percentage of fogging you use, you can't see through so object is culled, this is shown in the image below. Also through fogging objects doing have to be textured, they looked obscured, so again cutting down on rendering time. Particle systems can also be used to create some fogging techniques.

Depth testing makes sure that only close surfaces can be seen, so for example if you looked at your player hand in front of the screen, depth testing does a mathematical equation to figure out the distance and then shows the detailing on the hand. If your players hand is farther away, it calculates and decreased the amount of texturing.

Anti-aliasing is where an unwanted shine is took off an image, take the picture below you see a lot of aliasing, but when anti-aliasing is applied the image looks smoother and more clear. Anti-aliasing is used on screen text too, to smooth pixelated writing.

Vertex and pixel shaders, shading is a good tool for a more 3D effect on an image. On the latest games per pixel shading was used, this calculated the shading due to lighting and other effects on a per pixel bases making games look realistic. Different shading techniques are used for different effects, ghosts, water, ball, rough object.

And blah blah blah I’m bored of game engines.Other stuff they have are as follows;
Animation systems, this includes path-based, inverse kinematics, forward kinematics and particle systems.
Systems, this includes physics, effects, sound and networking.
Artificial Intelligence, this includes AI agents, world navigation, behaviours, neutral nets and fuzzy logic.
Middleware, this includes rendering, sound, AI, physics, animation, modelling, texturing.

And now I never want to see, hear or learn about game engines again. It’s so tedious writing about stuff you don’t care about. I hope you appreciate my exuded passion.

No comments:

Post a Comment