Computer Game Engines

By Alex Toner

Part 1: Graphics Rendering

Culling methods

The term Culling refers to not rendering anything that unnecessary. Visibility culling algorithms reduce the number of polygons sent down the rendering pipeline based on the simple principle that if something is not seen, it does not have to be drawn.

Portal Culling is method by which the 3D scene can be separated into areas called cells that are joined together by Portals - a window in 3d space that allows objects in one cell to be seen from another cell. One way to decide which objects are in a cell is by using one or more bounding boxes to define the area of a cell, then testing the bound box of an object against the cell bound box. Portal culling works best in scenes where there is limited visibility from one area to another for example a building or cave, this is because you don’t see the entire building/ cave at once you see certain parts (rooms).

Backface culling is an important part of how a 3D engine performs visibility checks. Its purpose is to detect polygons that are invisible in a particular scene – that is, polygons that face away from the viewer. For example, a cube 3 of the sides is going to be facing away from the user and not visible. Even if these were drawn they would be hidden by the three "forward" facing sides. By using back face culling you are reducing the number of triangles drawn from 12 to 6 (2 per side).

Occlusion Culling is a feature that disables rendering of objects when they are not currently seen by the camera because they are hidden by other objects.

Miscellaneous graphic techniques

Lighting is one of the most important and influential elements in environments. It has the power to make or break the visuals, theme and atmosphere. Lighting is often forgotten or underestimated. Lighting is just as important as the rest of the game

A directional light mimics the lighting that you would get from the sun. Directional lights emit parallel light rays in a single direction but the light reaches out into infinity. You can think of a directional light as a giant flash light very far away from your objects, always centered and it never dies off. You can rotate the light in any direction. Because a directional light represents a distant light source like the sun, its X, Y, and Z coordinates mean nothing, only its rotation values. This type of light is perfect when needing to illuminate a city or large open spaces.

Point lights are the most common light types found in 3D software. A point light is very similar to an incandescent light bulb that emits light in all directions. You can think of a point light as a sphere of light filling an area. Objects closer to the light will be brighter, and objects further away will be darker.

Point lights are great when you need to illuminate areas with a smooth falloff in all directions, or create a light that has a single point as its source, like a lamp or candle.

Each 3D application calls a point light something different, but the purpose and end result is the same. Maya refers to these lights as Point Lights, where 3ds Max calls them Omni Lights. Softimage just calls them Point, and CINEMA 4D simply calls them Light.

A spot light behaves exactly how it sounds, like a real spot light, and provides a very direct source of light. One of the key benefits that you get when using a spot light is the directionally that you get from the light. The spot light is emitted through a cone and you can control how wide the cone angle is which determines how much of the area is actually illuminated. Objects closer to the spot light will be brighter, and depending on the how wide the cone is the light will either be softer or harder.

Textures are flat images that get applied to 3D objects. They are responsible for models being colourful and interesting instead of blank and boring. It can be strange to think that a 2D image can be applied to a 3D model, but it is a fairly straightforward process once you are familiar with it. Think about a soup can for a moment. If you were to take the label off of the can, you would see that it is a flat piece of paper.

Anti aliasing is the smoothing of the image or sound roughness caused by aliasing . With images, approaches include adjusting pixel positions or setting pixel intensities so that there is a more gradual transition between the colour of a line and the background colour.

In computer graphics, accounting for Level of detail involves decreasing the complexity of a 3D object representation as it moves away from the viewer or according to other metrics such as object importance, viewpoint-relative speed or position.

Part 2: Animation

Animation systems

Path based animation is where you create a line/ path that you want something to follow and then you set something to follow that path. This is a great feature if you want something to follow a certain path for example, you could use a path based animation if you have a sun in your animation, and this is because it is similar to what it actually does.

Part 3: Artificial Intelligence (AI)

Artificial Intelligence

Bots are similar to NPCs in the sense that they are both controlled by computers however bots are usually a third party program that controls a user’s character. These bots can be set to do tasks; it’s because of this they're used in most massively multiplayer online role-playing games (MMORPGs). These bots are banned by most games because it is a form of cheating.

Non player characters or NPCs are characters within a game that are controlled by a computer, these characters could varies from being a sidekick or a vendor within a game these characters allow games to add in characters with personalities and jobs roles to do within the game.

Part 4: Middleware

Middleware / Off the shelf components

Middleware often sits between the operating system and applications on different servers and simplifies the development of applications that leverage services from other applications. This allows programmers to create business applications without having to custom craft integration's for each new application.