Tuesday 27 September 2016

Assignment 1: Unit 70


Game Engines

What is the purpose of a Game Engine:A game engine is a software program where you create all of the games essentials such as; the physics, the environments used within a game, animation and much more. Game engines are used to create game assets and can be used across many different platforms. All game engines are very specific on what their game engine can be used on. For example, Leadwerks is a game engine that is dedicated to making PC games, the games developed from this engine can be used on Linux, Windows and Mac. Game engines allow "Modding" to an existing game. For example, Ark Survival Evolved is a game which is still currently in alpha and they have created a SDK for anyone to use in the Unreal Engine. This is a prime example of allowing users to develop more for a game which is already up, running and being used. This Dev Kit allows users to explore the games core and experiment with what is within the game. They change how items appear visually in game or create new objects in general. Game engines have a lot of different tools in which a game developer can use. Each game engine has different tools to the rest. For example, CryEngine has an exclusive sandbox tool in which is exclusive to them. Some game engines have hundreds of different tools in which the developers can use whereas other may only have a few tools in which you can use. Furthermore, game engines are forever updating to a newer version. The reason behind this is so that the developers can find it easier to make, create and develop games. Introduction to 3rd party software is a great example as to making it easier to develop games and a great example to them updating the engines.



Leadwerks:
Leadwerks is a 3D game engine in which was created in 2006. It specifies in game development only for PC games. If you use the Leadwerks game engine now, you will be able to directly upload your game to Steam Greenlight by using the Leadwerks Game Launcher which was an early access title in 2015. Between 2006 and 2013, Leadwerks game developers were only able to use their games on two operating systems, Windows and Mac. A kick-starter campaign in 2013 allowed the game engine to produce and launch games for Linux too which made it available all round. Over the years they have been able to expand on how their developed games are able to be published and where they can be used.

The image to left displays a few of the games in which were created using the Leadwerks game engine. These games may not be well known however it just goes to show that developers are successful in creating games using this engine. Furthermore these are games which have been published onto the Steam Greenlight which has been made easy due to the Leadwerks game launcher they have. No approval process is needed if they use the Leadwerks game launcher. 




Havok/Havok Vision Engine: 

In comparison to Leadwerks, Havok has worked with the top, well known developer studios and publishers such as; EA, Nintendo, Activision Blizzard, Sony Computer Entertainment, Ubisoft etc.. The Havok Vision Engine supports features such as Object-Oriented Design, Save/Load system, Geometry Handling, Debug Console, GUI, Explosions, Weather, Mirror Effects, Lighting and Shadows effects, Texturing, Shaders and tons more. The Havok Vision Engine is a great engine for MMO developers due to the tools that it has. In comparison to Leadwerks, the Havok Vision engine and the SDK's Havok have work with games that are looking to be played on Xbox 360, PlayStation 3, PlayStation 4, Nintendo 3DS, Android, iOS, Mac OS, Linux, Wii, PlayStation Vita.



Havok have 4 different SDK (Software Development Kits). The 4 different SDK's are Havok Physics, Havok Destruction, Havok AI and Havok Cloth. The image to the left shows the 4 different SDK's and what they contain. These 4 SDK's have been used in various games. For example, Havok Physics have been in the Assassin Creed series and Havok Destruction has been used for the The Last of Us.


Unreal Engine:
Unreal Engine has come a long way since it first started. The platforms in which the first Unreal Engine supported were Windows, Linux, Mac OS and OS X, Dreamcast and PlayStation 2. Unreal Engine 2 which was released in 2002, expanded the horizon more on which platforms games could be released on, Windows, Linux, OS X, Xbox, PlayStation 2 and GameCube. There was a huge jump from Unreal Engine 2 to Unreal Engine 3 in graphical terms and platform terms. The Unreal Engine 3 took full advantage of lighting, shadows, gamma correction etc. The platforms in which were available to develop games for were Windows, Linux, OS X, Xbox 360, PlayStation 3, Xbox One, PlayStation 4, Wii U, Android, iOS and PlayStation Vita. Not all of these were available when the engine was released, over the years the availability of platforms had grown. Of course, Xbox One and PlayStation 4 development couldn't have been added in 2004 as they were not thought of. Now Unreal Engine 4 is available to use, however they have narrowed down their availability to develop for other platforms. The reason behind this is due to what platforms games are being made for. They only have development for Windows, Linus, OS X, Xbox One, PlayStation 4, iOS and Android. The Unreal Engine has advanced so much over the years, releasing many different versions in between each release which make game development a lot easier for developers to use their engine. The time to do change things within the engine has been reduced dramatically the newer the version.


"[In older engines], if you wanted to change the relationship between your weapon damage and how long it'll take to kill a creature, you may spend a couple of days iterating, but if you have to spend a lot of time waiting for a build every time, you're talking one change, waiting 15 minutes for the compile to complete, and then play the game, get to the point where you can test it, test it, exit the game, change, compile... Now, since all of that can be done very quickly within the tools, it's 'Make the change, play, when it compiles, finish, shoot the guy, and then escape, make the change, play'. The iteration time is down to 30 seconds instead of 15 minutes. Our ability to kind of roll through and see how the game is playing out is much faster."


— Alan Willard, writing for Kotaku[80]

Unreal Engine Graphics Difference:




Unreal:

Unreal was developed using the first Unreal Engine. This image is evidence of what the graphic capability the first Unreal Engine had.







Tom Clancy's Rainbow Six 3:

Tom Clancy's Rainbow Six 3 was developed using Unreal Engine 2. Comparing to the previous image you can see the graphics have gotten better. 






Batman: Arkham City 

This game was developed using the Unreal Engine 3. You can see in each image the graphics has took a step up. Furthermore, you can see that the lighting and shadows are more contrasting giving the game its suited atmosphere.





Ark Survival Evolved:

This game is still currently being developed using the Unreal Engine 4, they have also released an "Ark Dev Kit" for Unreal Engine 4 so the public get a chance to access all that is within the game. You can see that this engine has far more superior graphics than the older ones.


Frostbite:

Frostbite is a game engine which is specifically for EA. The most popular games in which are made using the Frostbite engine are Battlefield and Mass effect. DICE were the ones that created Frostbite due to development of the game "Battlefield Bad Company". DICE developed the game Battlefield 1942 which was a huge hit for them and the battlefield series themselves. Battlefield 1942 was released in 2002, from then on they created 27 other Battlefield games (a good few number of those were add ons/dlcs for the main games such as Battlefield 4 and Battlefield 4 final stand). The Frostbite engine has been developed to a third stage. The most recent version is Frostbite 3 and the first game in which was developed and released using this version was Battlefield 4. The Frostbite engine includes development in audio, scripting, animation, cinematics, AI, physics, destruction, visual effects, rendering and much more. They also have 3 very unique tools to them, FrostEd, Backend Services and Runtime. Runtime supports models/data/code which are developed for games made for consoles can be used also for iOS and Android. Backend Services is a system in which can handle a large amount of raw assets and components for their games. FrostEd is a widely used program so that all the different working departments (Artists, Programmers etc) can develop a stunning, high quality games/experiences. The reason behind why this engine is best made for the games like Battlefield is due to the large scale interactions in which these games contain. These games are also unique due to the Frostbite Engine.








This screenshot to the left is an image of Battlefield 1942 game play. This game was developed using the first version of the Frostbite engine. This gives you a general idea of what other games looked like which were developed using the Frostbite engine in that time.









This is a screenshot of game play from the game Need for Speed : The Run. This game was the first game to be developed using the Frostbite 2 engine version.









This screenshot was taken from the Battlefield 4 - Official GamePlay (E3 2013 Game Reveal) video and it was the first game to be developed using the newest version of the Frostbite 3 engine.




http://www.dice.se/about/
http://www.frostbite.com/about/history/



CryEngine:

CryEngine is another game engine which is used by many game developers. What I believe the reason is to why game developers might use CryEngine is due to indie-development fund they have. It is where people/developers are able to donate a certain amount of money into the fund which goes towards a project in the making. CryEngine then decides which package a particular project gets. As I was looking through the indie-development fund selected projects, one project had done a Q&A. This was one of the questions that was asked:


"Q: Why is this game being developed on CRYENGINE?

A: We are using CRYENGINE because of the sheer amount of detail this game engine can produce on screen at once with minimal performance issues. It is an extremely powerful tool that allows us to create a high quality looking game on such a low budget. Survival games have never looked this beautiful."

This is another reason as to why developers may use CryEngine as well instead of other game engines. The features in which this game engine has are set into different sections, Visuals, Sandbox & Tools, Characters & Animation, Platforms, Audio & Physics and performance. A few of the visuals features are DirectX 12 Support, Physically based rendering, Real-Time dynamic water caustics, Tessellation, 3D HDR Lens flares, Efficient Anti-Aliasing, Volumetric fog shadows, new particle system and so much more. For sandbox & tools, a material editor, FBX support, Level design, Track view cinematic editor, flow graph, designer tool and CryEngine Sandbox tool. Character & Animation features are, character technology, procedural motion-warping & high-end IK solutions, parametric skeletal animation, geometry cache, multi-layer navigation mesh, advanced AI system and physicalised character customisation. I could go through and tell you much more about all the features that are available to use however the list would go on and on. Here is a web link that tells you all of the features in which are contained within the game engine.

https://www.cryengine.com/features

https://www.youtube.com/watch?v=4ZuNKzpXqBY

CryEngine 1:

  This is an example of what the game graphics looked like using the first CryEngine version. This image is a screenshot of the game "Far Cry". CryEngine 1 was developed in 2001 -2004.









CryEngine 2:
This is an example of what the game graphics looked like using the second CryEngine. This image is a screenshot of the game "Crysis".










CryEngine 3:

This image to the left is a screenshot from the game "State of Decay". This game was developed by using the CryEngine 3. 








Unity Engine:
The unity engine is most well known for its multi-platform support. It supports iOS, Android, Windows (Phone), Tizen, Windows, Windows (Store apps), Mac, Linux/Steam OS, WebGL, PlayStation 4, PlayStation Vita, Xbox One, Xbox 360, Wii U, 3DS, Oculus Rift, Google Cardboard, Steam VR, PlayStation VR, Gear VR, Microsoft Hololens, Android Tv, Samsung SMART TV and tvOS. This engine is by far one of the largest supporters of multi platform. It is also more than just an engine, it has Unity ADS, Unity Analytics, Unitiy Collaborate, Unity Cloud Build, Unity Performance Reporting, Unity Multiplayer and Unity Certification. Now, more about the engine itself. The Unity engine is one of favoured game engines. Without supplementary liscense, game developers gain access to:
Animation:
Retargetable animations, full control of animation weights at runtime, event calling from within the animation playback, sophisticated state machine hierarchies and transitions and blend shapres for facial animations.
Graphics:
Enlighten-powered real-time global illumination, physically-based shading, refelction probes, curve and gradient-driven modular particle system and intuitive UI tools.
Optimisation:
Advanced memory profiling, umbra-powered occlusion culling, asset bundling, level of detail support, build size stripping and multi-threaded job system.
Audio:
Real-time mixing and mastering and hierarchies of mixers, snapshots and predefined effects.
2D and 3D Physics:
Box2D with a comprehensive range of effectors,joints and colliders and NVIDIA PhysX 3.3.
Scripting:
C# and Javascript, Native Visual Studio integration and AI features with advanced automated path finding and Navigation Meshes.
They have a play mode which is a powerful development tool for rapid iterative editing. This play mode allows the game developer to press play and interact with their game in the look of when it is in its platform-specific final build. This play mode also allows the developer to pause the game and alter any values, scripts, assets and much more and then instantly see results. Like the other game engines, they have an assets store where you are able to purchase assets for free or for a price.





Rendering:

As previously stated when noting down what tools each game engine has, each tool is very specific to what they do. With the CryEngine, in the rendering section they have Realistic Vegetation, Real-Time Local Reflections, Motion Blur and Depth of Field, Efficient Anti-Aliasing, 3D HDR Lens Flares, Tessellation, Real-Time Dynamic Water Caustics, DirectX 12 Support and Physically Based Rendering. Each section has their own part in rendering. The definition of rendering in general is a process which outlines a 2D or 3D image/model with light, shadows and colours. A term which is used is "My map hasn't rendered in properly" or "these trees aren't rendered in", this means that the objects out in the distance is taking time to process the lighting and colours which are involved with that object in particular. With some objects it may take longer for it to "render in". Unreal Engines features with rendering are quite similar to CryEngine. Unreal Engine 4 supports DirectX 11 and DirectX12 rendering features, it supports HDR reflections, tessellation, thousands of dynamic lights, shading, materials, IES lighting profiles and more. The physically-based shading in particular is a hot point for Unreal Engine as they have added a new material pipeline which gives the developer more control over how you want your characters and objects to look and feel like. Even though Leadwerks is not a game engine which is widely used, they still have quite a few features similar to what Unreal Engine and CryEngine offer. They offer a large-scale vegetation system, this system doesn't store each instance in memory. They use a modern shader pipeline which allows the developer to instantly view their results from the shader code they have created without actually leaver Leadwerks. They also have an OpenGL 4 deferred renderer which produces high quality cg render than real-time graphics. What deferred rendering is used for is, to provide realistic lighting to a scene and create dynamic soft shadows. What they use this with is real hardware MSAA which is a high quality anti-aliasing method. Leadwerks say that "These techniques combine to produce startlingly sharp and vibrant renders".


Animation:

When it comes to animation, we would want everything to be quite realistic. Animation in a game is what brings the games to life, this could be from every strand of hair on the characters head moving how it should in correspondence to the action or watching the grass move wildly when your character runs through it. A game with a lot of animation (to me) brings the game to life. Photo-realistic games have heavy amount of animation whereas other games you wouldn't need it so much. CryEngine has something called Character Technology which allows game developers to create realistic characters and animation for games in real time. Character Technology offers screen-space sub-surface scattering for all supported platforms, lifelike iris parallax mapping for truly realistic eye representation and new unified shaders for character shadows and hair. The Unity animation system provides setup of animation for all elements, supports animation clips created within the Unity engine, humanoid animation retargeting, simplified workflow, convenient preview of animation clip, transitions and interactions created, management tool, different logic for animating different body parts and layering and masking features.

https://docs.unity3d.com/Manual/AnimationSection.html
https://www.cryengine.com/features/characters-animation


Audio/Middleware/Physics:

Audio creates the atmosphere in a game along with the environments of course, however the audio can symbolise many things. For example, picking up an item, a hint of something dangerous is nearby, something you have done has activated another thing and so on. CryEngine allows the developer to choose its middleware in which you use to create audio. Before CryEngine introduced "ATL" (Audio Translation Layer) they only used single audio middleware, now they have introduced ATL in the newest CryEngine, developers are now able to use multiple, compatible audio middleware. CryEngine provide 5 different audio controls; RTPC's (Realtime Parameter Control's), Environments, Switches & their states, Pre-loads and Triggers. Unreal Engine 4's audio system is different compared to CryEngine. They have 5 different sections for the audio system; Audio files, Sound Cue Editor, Ambient Sound Actor and Sound Attenuation. Sound Attenuation is allowing the developer to lower a sound in volume as the player moves away from it. Ambient Sound Actor is a looping or non-looping sound which plays at the beginning or when the player spawn in. Also, it conforms to the real world, so if you are close to it, it will sound loud, if you are further away from it, it will appear as a softer sound. The Sound Cue Editor allows the developer to create interesting sound cues. There are many nodes which are supplied through the sound cue editor; Attenuation Node, Branch Node, Concatenator Node, Continuous Modulator Node, Crossfade by Distance Node, Crossface by Param Node, Delay Node, DialoguePlayer Node, Doppler Node, Enveloper Node, Group Control Node, Looping Node, Mature Node, Mixer Node, Modulator Node, Oscillator Node, Random Node, Soundclass Node, Switch Node, Wave Param Node and Wave Player Node. Unreal Engine 4 lead in with middleware integrations. Unreal work with NVIDIA, Autodesk Gameware, Enlighten, Umbra, Oculus VR, PhysX and more software. Leadwerks sound section allows the developers to skip to any time within the sound, emit a sound from any entity, automatic channel management frees up unneeded channels and 3D sound spatialisation. Compared to the other game engines, Leadwerks do not have a large amount of tools for the sound department. The Havok Vision Engine has middleware integration. The software which is compatible is Autodesk Kynapse AI, IDV SpeedTree, Quazal Net-Z, NVIDIA PhysX, Bullet, Havok Physics, Scaleform GFx, FmodEx, XAUDIO, OpenAL, Allegorithmic Substance Air, CriWare, NetDog, Xaitment AI and Pixellux DMM.

Artificial Intelligence:

Artificial Intelligence also commonly spoken as AI is a system which gives an object the ability to do things without the player needing to take control over it. The most common linked AI is with the enemies within the game. CryEngine have an advanced AI system in which allows characters to respond intelligently to the surrounding game environment and handle their behaviour along with hearing and sight. Unreal Engine 4 is similar with the aspect of adjusting the AI's sensory behaviour which makes them smarter. They also have dynamic navigation mesh updates. The Leadwerks engine works with Navmesh pathfinding with crowd avoidance, character controller movement integrated with physics and pathfinding systems and you can set entities to chase another object. This is different compared to the other two engines where you can change their sensory behaviour which would have and greatly affect how the AI plays. The Havok Vision Engine AI is similar to the other AI systems the other engines contain. It contains Pathfinding, Decision Making, Scripts and basic framework for custom AI-Extensions. However, they allow 3rd party AI integration software such as Autodesk Kynapse AI, Xaitment AI and Spirops.

https://www.cryengine.com/features/characters-animation
https://www.unrealengine.com/unreal-engine-4
http://devmaster.net/devdb/engines/vision-game-engine