Wednesday, 6 March 2013

UNIT 67 : ASSIGNMENT 2

Artificial Intelligence;
AI Agents:
Artificial intelligence is used throughout most games, for example, In the witcher the characters will react to the weather. When it is sunny outside, they will go out and talk to eachother, but when it goes rainy they will all go inside or atleast find a little bit of shelter to hide under away from the rain. In The Elder Scrolls; Skyrim Each character will have a little schedule for what they do each day. For example, shopkeepers: early in the morning you will find them walking around in the village but when it is mid day they will be in the shop, shop keeping and then at night they will be sleeping, and repeat. Non playable characters in games that are controlled by artificial intelligence have fast reactions, in FPS games an NPC's aiming would be beyond the normal human skill. In video games, a bot is a type of weak AI expert system software which for each instance of the program controls a player in death match, team death match and/or cooperative human player, most often in the first match shooters. Bots can help a gamer learn the gameplay environment and the game rules as well as help them practice shooting accuracy and gaming skills before going online to compete with other players. Elements of artificial intelligence used in computer games have come a long way. In the beginning, the developed systems were based on sets of rules written directly in the code of the game or on the behaviour scripts interpreted by the code, with the whole thing based most commonly on the appropriate selection of importance of the random factor in the process of choosing the appropriate behaviour. That time witnessed the birth of such memorable games as the immortal River-Raid, Donkey-Kong, Boulder-Dash, and many other objects of fascination for users of eight-bit machines, back in the 1970s. One of the most popular games of the 1990s was WarCraft – a game developed by the Blizzard studio. It was the first game to employ path-finding algorithms at such a grand scale, for hundreds of units in the game engaged in massive battles. SimCity, created by the company Maxis, was the first game to prove the feasibility of using A-Life technologies in the field of computer games. Another milestone turned out to be the game Black&White, created in 2001 by Lionhead Studios, in which technologies of computer-controlled characters' learning were used for the first time. http://www.youtube.com/watch?v=zHRlCSUe0Q0 
AI Behaviors:
Bodily behaviors are high priority things like resting, sleeping, eating, pooping etc. These are chosen randomly, which also selects an action at large proportion of the time. When the bodily behaviors fail, the root selector falls back to the active behaviors. These are walking around and running, things like that. when the active behaviours fail, The next fallbacks are positive. This involves sitting, lying standing and Idle.  This is another probability sector, but this one fails because there are no more fallbacks to rely on after this. Most behaviour-based systems are also reactive, which means they use relatively little internal variable state to model the environment. For instance, there is no programming in the robot of what a chair looks like, or what kind of surface the robot is moving on - all the information is gleaned from the input of the robot's sensors. The robot uses that information to react to the changes in its environment.
World Navigation:
Game world navigation is when you try to move from one place in a game world to another when the obvious way is not possible. Besides the presence of these environments, this also requires that Movement in possible and that it is possible to get lost or take unnecessarily long routes. World navigation is most common in games with large worlds. Mini-maps can make Game World Navigation easier by not only indicating where players are and what direction they are moving, but also where the goal location is (the Mini-maps in both the Elder Scrolls and Fallout series are example of this) but this is a risky design strategy since it can become too easy. Splitting game worlds up into levels where the use can complete puzzles makes game navigation easier for players. An example of a game with world navigation would be the text based game Zork, which made navigation difficult by having non-symmetric routes between locations, moving north from one place to another did not mean that one returned by going south, rather one might have to west instead.Artificial neural networks and fuzzy logic are two techniques used to improve the performance of electronic systems. Fuzzy logic can be used in many different ways, it can be used to control bots of NPC’s, and you can also use it for assessing threats posed by other players. You can use fuzzy logic to classify both player and non player characters.
Animation Systems;
Path-based:
A path based animation uses frames and a fixed background to create the illusion of movement. It more or less does what it says on the tin, It is an animation that follows a path, each path is random and it looks as if it is moving and could look real while moving. The main aspect of a path based animation is that the object travels along a set path, which is then calculated how long it takes the object to travel from one point to another and how many frames are need to get there. The path that the object is moving along should usually stay the same, but sometimes it could be reshaped or rezized. The objects that are going along a path should really stay simple to make it easier to animate and quicker to complete. Usually the path based animation in modern games are used on NPC's to move them around from A to B. They will be given a set path that it can move along, sometimes it will move along it in a random order. Sometimes it gets annoying and looks funny because you could be blocking a character mid-path and they could glitch away from where they were or dissapear - I think it looks weird so I try to avoid characters walking at all costs when playing games, for example Skyrim. although the game was extremely buggy when it first came out.

Kinematics:
Forward kinematics refers to the use of the kinematic equations of a robot to compute the position of the end-effector from specified values for the joint parameters. There are two main spaces of Kinematics, Forward Kinematics and Inverse Kinematics. It is the motion of bodies without taking into consideration of the force or movement that is caused. Forward Kinematics is a mapping from joint space Q to Cartesian space W: F(Q) = W. Forward Kinematics problem isn't complexity deriving the equations. Hence, there is always a forward kinematics solution of a manipulator. singularities and nonlinearities that make the problem more difficult to solve. A manipulator is composed of several links which are fixed to eachother revolute or prismatic joints from the base frame to the end effector. Inverse kinematics is a much more difficult problem than forward kinematics. The solution of the inverse kinematics problem is computationally expansive and generally takes a very long time in the real time control of manipulators.The inverse kinematics problem of the serial manipulators has been studied for many decades. It is needed in the control of manipulators.Solving the inverse kinematics is computationally expansive and generally takes a very long time in the real time control of manipulators. 
Particle Systems:
Particle systems in games are what creates Smoke, Fire, Rain, Explosions, splashes and so on. It is just like in Unity. You import particle systems and you can make fire, waterfalls etc. Particles are created using sprite sheets which are a frame by frame image that plays over and over which makes it look like that image is animated. For example, it is like a flipbook and each grid box has to be the same in order for the sprite sheet to work properly. Within 3D games particles are controlled by what is referred to as an emitter, which acts as the birthplace for particles (where hey spawn), with in engines, any shapes can be used to emit particles such as a cube. Particles will have a birth rate and a death rate which will determine how long that particular particle will live on screen for before it’s completely gone or re-birthed. 
Middleware:
In its most general sense, middleware is computer software that provides services to software applications beyond those available from the operating system. Middleware can be described as "software glue". Thus middleware is not obviously part of an operating system, not a database management system, and neither is it part of one software application. Middleware makes it easier for software developers to perform communication and input/output, so they can focus on the specific purpose of their application. Game engine software such as Gamebrvo and Renderware are sometimes described as middleware because they provide many services to simplify game development. 
Graphic Rendering;
Anti-Aliasing:
Anti-aliasing is when the jagged edges in a game appear to be smooth and everything ends up looking a lot nicer and a lot more detailed. In games using this option lowers the performance and lowers the frame rate. Examples of anti-aliasing – this is on the PlayStation 3 and shows that it has more powerful hardware as it is able to use the anti-aliasing option in the game. But this may bring the frame rate lower than that of the Xbox version without the anti-aliasing.
Shadowing:
In games shadowing creates shadows to add to the ‘realism’ of the game. In a game if a light source is on some part of the characters body a shadow will appear in the opposite direction (much like in real life). Just behind the character. The higher the shadow quality in a game the slower the game will run as the game has to render the shadow and the level of detail it has and it has to calculate where the shadow will be in real time as the character is moving.  
Detail:
In games level of detail refers to how detailed or how complex something in the game world is. When something is really detailed in a game the game will naturally perform lower that is why graphical rendering is applied. This makes it so the object is not fully detailed when the player is far away from it, but as they get closer the object renders additional detail until the player is close enough to see all of the detail in the object. In console games it is much harder to get a high level of detail as the hardware is severely outdated in comparison to the technology to PC games.   Some games have some ridiculous amount of detail, for example Halo 3, every single bullet fired from an assault rifle has the main character's name carved into the back of it, as if he brought all the bullets from home.
Ray Tracing:
Ray tracing is a way of generating an image through tracing the path of light through pixels in an image plane and simulating its effects with encounters with virtual objects. This technique is capable of creating very high realism. The technique is capable of producing a very high degree of visual realism, usually higher than that of typical scanline rendering methods, but at a greater computational cost.
Radiosity:
Radiosity is a method which tries to simulate the way which directly illuminated areas act when indirect light sources illuminate other surfaces; this produces more realistic shading and seems to catch the ambience better of an indoor scene.  Ambience is a particular environment or surrounding influence. The inclusion of radiosity calculations in the rendering process often lends an added element of realism to the finished scene, because of the way it mimics real-world phenomena. Consider a simple room scene.
Depth Testing:
Depth-testing is a process used by the game engine to tell what objects are visible to the player and which are not because they’re behind other objects. Games today render a lot more at once and as a result Depth-testing has had to become more advanced. An example of this would be how when you compare Silent Hill for the Playstation to the Playstation 3. You can see the difference to how much is behind what.  
Pixel Shaders:
A Pixel Shader is a GPU (Graphic Processing Unit) component that can be programmed to operate on a per pixel basis and take care of stuff like lighting and bump mapping. A Vertex Shader is also GPU component and is also programmed using a specific assembly-like language, like pixel shaders, but are oriented to the scene geometry and can do things like adding cartoony silhouette edges to objects, etc.
Fogging:
Fog in games is much like fog in real life. It hides an object the further away it is from someone. But unlike in real life, fog in games has a purpose. In games fog hides objects the further it is from the player character. This is to lessen the stress on the processor so it doesn’t have to render as much information as it would if there was no fogging and you could see all of the objects at the same time.Some PC games have a view distance slider. This is to help people with not as up to date hardware optimise the game so their computer can play it. The higher the view distance in a game the further you can see in the game world.
Culling Methods:
Back face culling: because meshes are hollow not solid objects , the backside of some polygons will never face the camera, this typically means there are no reason to draw the faces, this causes the effect in video games where if the camera is inside the mesh, it usually disappears. Contribution culling: often, objects are so far away that they do not contribute to the final image that much. These objects are thrown away if the screen projection is too small. Occlusion culling: objects that are completely behind other opaque objects may be culled. This is a very popular mechanism to speed up the rendering of large scenes that have medium to high depth complexity.  Detail Culling: When geometry is so far away that it’s not visible then there is no need to draw it at all so it can safely be culled. A more advanced scheme of detail culling that decreases the amount of details with the distance is LOD (level of detail). Portal Culling: A technique that divides the scene into cells with portals between. When rendering, the camera will be in one of the rooms and that room will be rendered normally. But for each portal that is visible in the room a view frustum is set up for the size of the portal and then the room behind it is rendered. This will work recursively. The result will be that a lot of geometry can be culled by view frustum culling when rendering the other rooms. A very useful technique for indoor scenes. View frustum Culling: The faces that are outside the view frustum cannot be visible on the screen (we don’t bother about reflections now) so they can be culled. This check is done by checking if the geometries bounding volume is outside the view frustum volume or not. So the check will not be done on every face, as that would cost too much. Sometimes, the view frustum culling can cost more than what is gain (for example when doing instancing). One way to speed up view frustum culling is to use a suitable spatial structure for the scene (octree, BSP or so).
Lighting:

Lighting is something a game engine has a few different types of in order to provide light to a scene in a video game, examples of these lights are: Point light, spot light, directional light and ambient light. Lights in video games are incredibly important as they let the player see what’s going on, they can also be used for way points and markers to stand out or to create mood (normally put to use in horror games like Amnesia: The Dark Descent). The examples are Amnesia with its lighting to set mood and Left 4 Dead with its lighting to direct the player through the world. Setting the right atmosphere and mood is important in any type of game. From Myst-like puzzles to real time strategy to first person shooters, lighting plays a huge role in how players interact with a game’s world are impacted by it. Mysterious and horror games meant to keep players on the edge of their seats usually have darker environments, punctuated by brighter areas and objects to ensure you notice them. Other genres tend to use more balanced lighting systems, and games that are praised for their appearance masterfully paint their worlds onto our screens, the environments telling stories of their own. Lambert: There are a few standard ways to calculate how light illuminates a surface, and while there are numerous variations within each method, we’ll look at the most common configurations. The first of these is a very simple model known as Lambert lighting, named after Johann Lambert who described the idea behind it in 1760. Objects lit in this way are called Lambertian and emit light evenly across all viewing angles. This means that different points on an object will look the same no matter what angle they are viewed from. Phong: Another common lighting model is called Phong illumination, named after Bui Tuong Phong who first published the method in 1973. Phong lighting is used for surfaces that have specular highlights, which are the direct reflection of the light off of the object. These reflections can range from dull, such as plastics or a polished wood, to sharp and bright as on the body of a car. This type of lighting is made up of two components: diffuse light like we get with Lambertian surfaces and also the light’s reflection. To find this second part we must determine what angle we are viewing a point on the object’s surface and compare it to the angle at which the light is hitting the same point.

Systems;
Physics:
A physics engine is a piece of software that provides approximate relations to the laws of physics that govern reality. Game developers use these engines in their games, to create a realistic form of gameplay. However they can also make the physics in their games as unrealistic as they want. This often depends on the environment that the developers are creating. For example, a game set in a different universe may have different forms of gravity. At this point in the games industry physics have advanced in their precision and reliability. But there are still limitations on these factors dues to faults in calculations during gameplay. These faults can cause very amusing, yet very frustrating anomalies in games.  For example, objects that have set routes can run into rounding errors and may travel to a different point in the game. It’s often that these glitches occur with free moving game objects. But objects like chains and wheels with actively bearing surfaces whilst under large amounts of pressure can cause these free moving objects to react in many different ways such as exploding, imploding or simple collapsing.  These effects can be prevented; however it takes an extensive amount of CPU to process these calculations. 
Effects:
Subsurface scattering is a rendering technique used to approximate the common tendency for light to penetrate and scatter beneath the surface of translucent or semi-translucent non-metallic objects. The effect can be seen as an extension on the principles of translucency and is appropriate for realistically simulating a wide range of materials including wax, marble, liquids (like milk), plant leaves, fruit, snow, and most importantly, human skin. Subsurface scattering (SSS) is included in a few game engines and some examples that have subsurface scattering are; Unreal Engine 3, CryEngine 3 and Confetti RawK. The last two engines have used Screen-Space Subsurface Scattering.  SSS is a mechanism of the light transport that makes the light travel inside objects. However for translucent objects, which affected by SSS a lot enters the surface and then scatters inside of the object. The light is blurred which gives a soft look to the object.  When a photon hits a surface, it has a chance to reflect, absorb, or penetrate the surface. If it reflects, it gets sent back off the surface as either a specular highlight along the reflection direction or a diffuse reflection that scatters in random directions. These two characteristics represent reflectance for local illumination models: Where the final color at any point, need only consider that point with no influence from other points.
Caustics:
Caustics is an addition your rendering that calculates photons of light staring  at a light source which can be reflected, refracted, bounced of mirrors, or concentrated by a lens. In computer graphics, most modern rendering systems support caustics. Some of them even support volumetric caustics. This is accomplished by ray tracing the possible paths of the light beam through the glass, accounting for the refraction and reflection. Photon mapping is one implementation of this. The focus of most computer graphics systems is aesthetics rather than physical accuracy. Some computer graphic systems work by "forward ray tracing" wherein photons are modelled as coming from a light source and bouncing around the environment according to rules. Caustics are formed in the regions where sufficient photons strike a surface causing it to be brighter than the average area in the scene.
Networking:
Networking is a collection of computers and other hardware interconnected by communication channels that allow sharing of resources and information. Through networking you can send information through one device to one process in a remote device. Then the two devices are said to be in network. A network is a part of a game engine which connects multiple engines together and enables online capabilities such as multiplayer games and project sharing. Most game engines create multiplayer uses different from single player as this requires much more technical coding and testing. On Steam, when one user is in the same game that you are, it enables you to join each other’s games through the steam client. You can also join through the game but it gets a little bit harder. To join in game you have to have the IP of the other persons game (or server that they are on) and copy that into the multiplayer option in-game and join that way. Playing on multiplayer allows you to join teams, fight with each other and talks to each other. This makes the game more fun because it is with your friends and not just the computer. Sometimes you have to have another program that links computers to one another to trick it into thinking that all the computers linked to your program are all in the same house, this also allows you to join servers with friends or host your own so other people can join in and play with you on the game
Sounds:
Sound is very important within a game engine this is because it can be used in different ways. It can be used just for effect or it can also be used to get a message across. The sound can determine what is happening in a game and also the music will give us an idea of what is about to happen or what is happening in a game. Game engines include sound because it can be essential for games. Without sound games wouldn’t be as good and the user wouldn’t really enjoy playing the game. If we didn’t have sound especially for games likes this it would be pretty bad because you wouldn’t be able to hear all the effects such as explosions and guns. An example would be in sonic or flappy bird, they both make annoying noises when you collect the rings or pass through the pipes. As annoying as it is, it makes the user more eager to play the game because it is a good sound. It can be distracting at times but the more you get used to the noise the better you will get at the game. Or the better you will think you are. The games also play music when something bad is happening or something good. For example in killing floor the music turns to heavy metal when there is a wave of zombies, but when the wave is over the music is a bit more calmer. This helps the player realise that there is a wave without really listening to what the trader has to say in-game. Also, in final fantasy the music changes to the fight tune when you are near a monster, this alerts the user and makes them pay more attention (if they weren’t already) to the game and it gets them motivated to kill the enemies because of the drastic change in music. This also happens in Pokémon, when walking through long grass the music changes to a more upbeat tune and the graphic on the screen changes to get the user more alert to what is about to happen.