Blog Archive

Tuesday 27 September 2016

Unit 70: Computer Game Engines, Assignment 1

What is a game engine?

Game engines provide the basis for the creation and development of video games. They are used to create games on a variety of platforms, such as consoles, PCs and mobile devices. Typically, these engines contain core components that allow the creation of video games, such as a rendering engine for 2D and 3D graphics that draw the components of the game from models created for the game. Game engines will also contain a physics engine that is used to create a simulation of different types of physical systems, such as collision detection between objects within the game, along with fluid dynamics to create realistic movements for liquids and gases, for example water and smoke. These engines will also contain sound, scripting and animation capabilities, along with many other functions. These functions combined allow everything in the game to come together and be seen on screen so the game can be played. In general, game engines will be re-used in order to create different games in order to save development money, and it also allows developers to more easily port their games over to different platforms, such as having games on both the Xbox One and the PlayStation 4. Furthermore, thanks to the growing popularity and development of game engines, there have been many more opportunities for game enthusiasts to create their own addition for games, by changing the content within the game that alters the way that the game runs or, in some cases, creating a whole new game, which is known as a total conversion. Game engines and their development kits are becoming more and more accessible to the general public, which allows fans of games to create their own content, such as new weapons characters and models, that they can include in their game, and release on popular sites such as Mod DB or Nexus Mods in order for other players to try out their creations.
  The Purpose of Game Engines

The main purpose of a game engine is to provide a visual development suite for game developers that simplifies the development of games and allows the developers to create games in a much faster time, along with supplying reusable software. The majority of game engine suites provide content that will ease in the creation of games such as graphics, physics and a sound engine. Game engines are known in the business world as middleware, as they provide software that is flexible and reusable, whilst providing the core features that help to reduce costs, both monetarily and time-wise, which are both important factors in the video game industry. Another purpose of game engines is that they developers to create games for the majority of different platforms without having to significantly alter the source code, which also helps developers to save money and time as they do not have to write out different code for when they want to release the game on a new platform.


The Evolution and Development of Game Engines

Unreal Engine

An example of a game engine would be the Unreal Engine, which is currently in it's fourth version. First released in 1998, Unreal Engine 1 integrated rendering, collision detectionAIvisibility, networking, scripting, and file system management into one complete engine, and was available on platforms such as Windows, Mac OS, Linux, Dreamcast and PlayStation 2.
The release of Unreal Tournament, developed in the unreal engine, helped to make great strides in network performance, and both Direct3D and OpenGL support. The engine became popular due to it's inclusion of scripting language UnrealScript, which allowed easy access to modding, and helped to create the total conversion mod, Tactical Ops: Assault on Terror, which began as mod for Unreal Tournament before being released as a standalone version.

The second version of the Unreal Engine was released in 2002, and it saw a complete overhaul of the engine, with the core code of the engine, along with the rendering engine, being completely rewritten. The new engine also added a level editor and a new physics engine. This new engine allowed rag doll physics to be implemented into future games. This new engine also added support for consoles such as the GameCube and the Xbox, as well us updated and improved assets. An update for Unreal Engine 2 was released, called UE2.5, which added improved rendering performances, as well as physics for vehicles and a particle system editor for UnrealEd, the level editor of the engine.


Unreal Engine 3 was initially released in March 2004, however it only supported Windows, Xbox 360 and PlayStation 3 platforms, with support for Android and iOS added in 2010. Unreal Engine was designed to take full advantage of fully programmable shader hardware. Its renderer supports techniques including HDRR, per-pixel lighting, and dynamic shadows. In October 2011, the engine was ported to support Adobe Flash Player 11 through the Stage 3D hardware-accelerated APIs. Throughout the lifetime of UE3, significant updates have been incorporated including a global illumination solver, improved destructible environments, soft body dynamics, large crowd simulation, iPod Touch functionality,Steamworks integration, a real-time global illumination solution, and stereoscopic 3D on Xbox 360 via TriOviz for Games Technology. Furthermore, Unreal Engine 3 has seen a lot of use outside of the gaming industry, such as the FBI using it to create training simulations for their agents.

Unreal Engine 4 was first released in May 2012, and was targeted at 8th generation consoles, PCs and Tegra K1 based android devices. One of the major features planned for UE4 was real-time global illumination using voxel cone tracing, eliminating pre-computed lighting. However, this feature has been replaced with a similar but less computationally-expensive algorithm prior to release for all platforms including the PC because of performance concerns on next-generation consoles.UE4 also includes new developer features to reduce iteration time, and allows updating of C++ code while the engine is running. The new "Blueprint" visual scripting system (a successor to UE3's "Kismet") allows for rapid development of game logic without using C++, and includes live debugging. The result is reduced iteration time, and less of a divide between technical artists, designers, and programmers. As of March 2016 Unreal Engine 4 and all future updates are free to all, with a selective royalty schedule being introduced in place of a monthly subscription.

CryEngine

The CryEngine was originally developed by Crytek as a technological demo for Nvidia when they showed them an example using Far Cry. Nvidia saw the potential in the demo and proceeded to turn it into a game. The engine was updated to version 1.2 in order to keep up with the release of video cards that could support 3.0 pixel and vertex shaders, which allowed the engine to have an increased graphical capability. Version 1.3 then added support for HDR lighting. On March 30, 2006 Ubisoft acquired the rights to the Far Cry franchise, and also licence to use the Far Cry edition of the CryEngine.

CryEngine 2 is used in Crytek's game Crysis, and an updated version in Crysis Warhead. In March 2009 at the Game Developers Conference, CryEngine 2's successor, CryEngine 3, was shown on the Xbox 360 and PlayStation 3. CryEngine 2 was first licensed out to French company IMAGTP who specializes in architectural and urban-planning communication. The purpose of licensing the engine was to create a program to allow clients to see exactly what a building or other structure would look like before any actual construction was started. On May 11, 2007, Crytek announced that they would be using the engine to create a game based on their new “intellectual property”. On September 17, 2007, Ringling College of Art & Design became the first higher education institution in the world to license CryEngine 2 for educational purposes

CryEngine 3 was developed for use on Microsoft Windows, PlayStation 3, Xbox 360 and the Wii. In terms of the PC, the engine was said to support development in DirectX 9, 10 and 11. CryEngine 3 was released on October 14 2009. On March 1, 2010, a new tech demo of the engine was released for the i3D 2010 symposium, which demonstrates 'Cascaded Light Propagation Volumes for Real Time Indirect Illumination'. As of July 1, 2011, the Mod SDK version of CryEngine 3 specifically to create custom maps, mods and content for Crysis 2 is available on Crytek's website. Crytek also released a free-to-use version of the CryEngine for non-commercial game development. It was released as of August 17, 2011 under the name CRYENGINE® Free SDK.

On August 21, 2013, Crytek rebranded CryEngine (starting from version 3.6.0) to simply "CryEngine", and announced that their next CryEngine would not be advertised with a version number. The new CryEngine version adds support for Linux and consoles such as the PlayStation 4, Xbox One, and Wii U. Subsequent appearances at events have also featured the use of CryEngine on virtual reality systems, at GDC 2015 Crytek brought a demonstration 'Back To Dinosaur Island' to the event to showcase such.

On March 22, 2016, Crytek announced a new version of CryEngine, called CryEngine V, which features native DirectX 12, Vulkan and virtual reality (VR) support. Additionally, a new licensing model was introduced with a "pay what you want" model for usage and access to the source code.

Frostbite Engine


Battlefield Bad Company (Frostbite 1)

The Frostbite engine is an example of an engine being exclusive to one developer, or group of developers, with the Frostbite engine being used exclusively by Electronic Arts. The engine was developed by EA Digital Illusions CE (DICE), who are the creators of the Battlefield Series and is currently designed for use on Microsoft Windows, PlayStation 3 and 4, Xbox 360 and the Xbox One. Although first used in order to develop First-Person Shooters, the engine has now been expanded to cover a wide range of genres such as racing, RPG and RTS games.


Battlefield Bad Company 2 (Frostbite 1.5)

The tool set comprises three primary components: FrostEd, Backend Services, and Runtime. FrostEd is a desktop program for developers to create Frostbite games in a realtime workflow. Frostbite 3 (known as simply Frostbite as of 2015) is the most recent iteration of Frostbite. The workflows and runtimes are highly configurable and cover all aspects of development including audio, animation, cinematics, scripting, artificial intelligence, physics, destruction, rendering, and visual effects. Frostbite 3 introduces new features such as new weathering systems, physically based rendering (PBR) and support for various development techniques (such as photogrammetry). The game engine has had several upgrades including improved tessellation technology. It also features Destruction 4.0, which enhances the in-game destruction over its predecessors.


Battlefield 3 (Frostbite 2)

Battlefield 4 (Frostbite 3)


REDengine

REDengine is an independently developed game engine create by CD Projekt RED, designed exclusively for their nonlinear, role playing games. RED is portable across both 32 and 64 bit platforms and currently runs under Microsoft Windows. REDengine allowed CD Projekt RED to create a complex, nonlinear storyline that was not possible to create in previous game engines. Prior to this engine, many developers had to rely on game engines that forced trade offs when creating games. On one hand, developers could create a vast open world, but were limited in the complexity of the story that they could tell, often having to have a much more simplified story. On the other hand, developers could create a complex nonlinear story, however they would sacrifice the ability to have a vast open game world and be stuck with creating something much more limited. For REDengine 2, middleware such as Havok was added for physics, Scaleform GFx was for added for better UI capabilities and FMOD was added for audio. This version of the engine was used to bring The Witcher 2 to Xbox 360. 


REDengine 3 was a huge step up from the previous engines. Designed to run exclusively on a 64-bit software platform, the engine was developed primarily for creating open world environments, such as those found in the The Witcher 3: Wild Hunt. By utilising the 64 bit precision of modern PCs, REDengine 3 was able to provide better graphics via the use of high dynamic range rendering, along with adding improvements to facial expressions and other animation. The engine also supports volumetric effects which enables the advanced rendering of clouds, mist, fog, smoke and other particle effects. REDengine 3 also includes a highly flexible renderer that allows for a wide array of cinematic effects such as camera flares from the sun and other lighting. The terrain system in REDengine 3 uses tessellation and layers varying material, which can then be easily blended.


GameMaker: Studio

GameMaker is a game engine that was designed to allow those who are new to computer programming and video game development to be able to create video games by the use of drag and drop options within the engine. The engine also contains it's own scripting language called Game Maker Language which allowed for more advanced games to be made that the drag and drop action sequences could not support. Originally released in 1999 under the name Animo, the engine was began as a program for the creation of 2D animation. The engine is designed in order to give users an easier experience when it comes to developing video games, as they don't have to know complicated programming languages such as C++ or Java due to their drag and drop system. These icons represent different functions within the game, such as movement and basic control structures. Unlike the other engines in this list, GameMaker primarily runs games that use 2D Graphics, although there is access to limited 3D graphics. It also supports the ability to create particle effects such as rain and snow. GameMaker is available for redistribution on the mjority of platforms. The engine is build for platforms such as Windows, Windows 8, Mac OS X, Ubuntu, HTML5, Android, iOS, Windows Phone 8, Tizen, Xbox One, and Playstation.


Features of Game Engines

Graphic Rendering - Rendering is the final process when creating an image or an animation from a computer model. When rendering a scene containing objects or characters, among others things, the file is made up of strictly defined language which contains a description of the information about the scene. This information has facts such as the geometry of the objects, it's viewpoint, the textures of the objects, and also how the lighting and shading on the object is perceived. This data is then passed through a rendering program and is outputted as a digital or raster graphics image file. Though the technical details of rendering methods vary, the general challenges to overcome in producing a 2D image from a 3D representation stored in a scene file are outlined as the graphics pipeline along a rendering device, such as a GPU. A GPU is a purpose-built device able to assist a CPU in performing complex rendering calculations. If a scene is to look relatively realistic and predictable under virtual lighting, the rendering software should solve the rendering equation. Due to the importance of video game graphics these days, this is the part of the engine that tends to be criticised the most and compared to other game engines, as it determines how the game will look. 

Artificial Intelligence - Artificial Intelligence, or A.I, is used to create and simulate intelligent behaviour patterns, primarily in non playable characters within the game. This is generally used to give the NPCs a human-like intelligence, and one of the main goals of game developers is to create the AI appear more human. Since game AI for NPCs is centered on appearance of intelligence and good gameplay within environment restrictions, its approach is very different from that of traditional AI and in many cases the computer abilities must be toned down to give human players a sense of fairness. This, for example, is true in first-person shooter games, where NPCs' otherwise perfect aiming would be beyond human skill. An example of AI in game engines is that of pathfinding, which is the method for determining how an NPC gets from one point to another, whilst also taking into consideration the terrain and obstacles that may be in the way of the NPC. Recently, there has been more development into the use of survival instincts for AI. This allows the the NPCs to recognise items and objects within the game, and determine whether they are beneficial or dangerous. For example, in shooters the AI will look for cover when taking part in shoot outs with the player, and also when they have to reload their weapons, allowing them to stay out of the line of fire whilst they are vulnerable. 

Physics Engine and Animation Systems - A physics engine is a computer software that allows an estimated simulation of different physical systems, such as rigid and soft body dynamics, collision detection and fluid dynamics. Within video game engines, the benefits to the gameplay generally outweigh the need for the physics to be completely accurate, therefore the simulation provided by the game engine is used to create an approximation of the event that can be perceived to be correct and is not too unrealistic. However, it is worth noting that within the Source engine, puzzles and combat situations rely on accurate physics to be completed. An example of this is needing the correct momentum of an object to knock something over in order to progress.

Ragdoll physics is a type of animation that is often used as a replacement for static death animations within games. The ragdoll is a skeletal replica of the object that has died, and then reacts appropriately to manner in which the object has died, which makes the game seem more realistic. For example, when an enemy is killed by a grenade within a shooter, instead of just dying where they were, they would be blown backwards or in some other direction as if they had actually been blown up. One approach that is used in ragdoll animation is that of Inverse Kinematics, which relies on playing a pre-set death animation and then using Inverse Kinematics to force the character into a possible position after the animation has been completed.

Within games, there will be a lot of interactions between objects, the player and the environment which is why having a competent collision engine is important. In general, most 3D objects are made up of two separate meshes, with one being highly complex, whereas the other is a simplified, invisible mesh used to represent the object to the physics engine so that the physics engine treats the object as a simple shape. This is done for speed purposes. One method of intersect detection is ‘Bounding Sphere’, which is a sphere defined by a point, centre and radius that is placed around a character or object. Anything that penetrates this sphere is a detection of intersection, then usually an appropriate response is assigned to take. This is one of the simplest levels method of detection and is most ideal when accuracy isn’t a huge factor. Another aspect of precision in collision detection is the framerate. Each frame is treated as separate from each other, and the space between the frames is not calculated. Therefore, this means that when there is a low framerate and a fast moving object, that object will appear to jump from one point in space to the next as each of the frames is calculated. In physics engines such as the Havok engine, this does not happen due to continuous collision detection.

Middleware - Although game engines themselves can be referred to as middleware, in the context of video games middleware is used to refer to the subsystems that provide functionality within a game engine. Some game middleware only serves one purpose, however it provides a much more efficient job than just general purpose middleware. The four most widely used middleware packages include RAD Game Tools' Bink, Firelight FMOD, Havok and Scaleform GFx. Bink was developed for basic video rendering, Firelight FMOD provides a low cost audio library and toolset. Havok provides a physics simulation engine along with a suite of animation and behaviour solutions, and finally Scaleform provides GFx for high performance Flash UI, along with a high quality video playback solution. Some middleware contains full source code, while others just provide an API for a compiled binary library.

No comments:

Post a Comment