Wednesday, 12 October 2016

BTEC Extended Diploma in Computer Games Design
Unit 66: 3D Modelling
Unit 67: 3D Animation
Unit 68: Enviroments
Start date: 27/09/2016
Deadline: 12/10/2016
Tutor: James Tedder
Student: Shay Wragg



Understanding Theory and application of 3D

What is 3D modelling?

3D modelling is essentially a three-dimensional blueprint. 3D models can be anything from an inanimate object to a human or an animal, it can be used to create art, models for video games or even to create architectural plans.

What is it used for?

3D modelling is used for many things, some of these things are:
  • Film - Any animated character, unrealistic setting, extremely large crowds are created using 3D modelling software. if it costs an extensive amount of money to shoot or impossible to shoot directors could shoot the scene as normal and later add a backdrop or change the size of the actor using 3D modelling software. Some films are almost entirely made using 3D modelling. A good example would be iron man, Robert Downey Jr wouldn't actually wear an Iron Man suit, he would wear motion capture gear that would capture the scene and project it onto a screen as a wire frame model, then the suit would be edited on to his model.

  • Animation - Animation is used in games and films, when a character is to do any movement in a game it is animated. Where as in a film it could be an explosion or an unrealistic scene that could need animating. Animation consists of many freeze frames, freeze frames are a 3D model positioned in each steps of a movement and when the animation is played the model will do the said movement. For example, to make a model walk you'd have to re position the legs and feet into having one foot in front of the other and then the other foot in front of the previous one and when it's played back the model will be walking. 


  • Gaming - In every visual aspect of a game 3D modelling is behind it. (As long as the game is 3D that is) whether it's the environment, the weapon you're using or the character itself every single movement and object. The character and weapon models and other objects will be drafted up in development as concepts and if it is accepted then it will be created using 3D modelling software, the model will then have all of their movements animated, whether it's walking, talking, jumping, anything at all it will require an animation. Finally the animation will be coded therefore binding it to a button or key and giving the player control over the model, for example "Move the left stick forward to walk" or "Press A to jump" the model will follow the given instructions and you finally have your playable character.


  • Architecture - Traditionally when a building, house or any man made structure is built it all starts with a plan, and the beginning of a plan is a drawing. The drawing is what the architect has in mind initially, it doesn't have to be artistic it just has to tell you what it is that he or she sees. The plan will then be turned into a blueprint and finally the construction workers will follow the blueprint to build the structure. But now days architecture begins with 3D modelling, the structures are built in the software where the client can see the whole structure from any angle they like and can alter it to their liking. Without making a fatal mistake. 


  • Advertising and Marketing - Companies are always trying to find new products to sell or create new packaging or even find a way to present their product and preferably at a cheaper rate. 3D modellers can create the vision these companies have by simply creating it on a computer rather than spending money hiring camera crews, actors etc. For example car manufacturers, they have to create prototypes, concepts and even logo's etc. A 3D artist can create all three things using 3D modelling software. This will save companies time and money when creating new vehicles/advertising schemes.

  • Geology and Science -  Scientists are always looking for ways to save lives during natural disasters. They would think of ideas on how to make structures stronger or even deflect things like tornadoes. They would make a 3D model to show the public as well companies or even hold meetings with the people that can provide resources etc.

Building Collapse Study


  • Law Enforcement -  Police have a new way to find suspects or missing persons. When there is no way of knowing who committed a crime it is possible for the government to take a piece of DNA and analyse it to find what a person look like. For example, in 1984 a murder took place resulting in a small family falling victim, the police had no idea what the murderer looked like but they found DNA not belonging to any of the family members there for could be the killers. Since then technology has progressed and they are able to analyse the DNA and produce a computer generated image of the murder suspect. 

Sources: 


Geometric Theory and Mesh Construction

In 3D modelling the artist has many tools at their disposal from lines, vertices, faces, primitives etc. A shape can be changed in a number of ways and can be turned into something completely different.

For example in Maya the user can choose from a selection of common primitives such as  cubes, spheres, cylinders, cones, pyramids etc. If the user chooses to start from a cube, they can change the edges, faces and vertices by dragging the to a certain position. They could also select the part of the shape they want to move and use tools like the move, rotate or scale tool to change the size and position of the part of their choosing, this is called Box Modelling.

Selection of polygons.

 

As you can see the user has an array of tools for box modelling, they can edit edges, vertex's (vertices), vertex faces, faces or the whole polygon in object mode.


Move, Rotate and Scale tools


Altering the original shape


There is also subdivisions tool allowing the user to edit multiple parts of one face.





The user can also choose from a selection of angles to look at their work, even multiple at once, the user can also change to wire frame mode to easily edit the outline of a model.




Extrusion Modelling is essentially creating half of a shape and duplicating it to create the other half, it saves lots of time and is normally used when modelling something with a line of symmetry e.g cars or heads. This is the easiest way to model a photograph or drawing.



3D Development Software

3D modelling requires specialised software and there are many different kinds out there. Some are subscription based meaning you will have to pay a upfront, monthly or annual fee to use it and some are free to use. 

Here's some 3D programs available now:

Maya - Maya is one of the most well known 3D modelling programs on the market. It is used for modelling, art, animation, simulation and rendering. The customer must pay either:
  • £170 a month 
  • £1,370 a year
  • £2,605 2 years
  • £3,700 3 years 
  • Free for students

3D Studio Max - 3DS Max is used to create digital graphics, models, images, animations and games. It can also be used to create simulations by linking with different programs.

Prices:
  • £170 a month
  • £1,370 a year
  • £2,605 2 years
  • £3,700 3 years

AutoCAD - AutoCAD is a specialised drafting software specifically designed to create blueprints for buildings, bridges, computer chips. This program is used in construction, architecture, engineering and manufacturing.

Prices: 
  • £180 a month
  • £1,434 a year
  • £3,870 3 years



Cinema 4D - Cinema 4D is used for 3D modelling, animation and rendering. It is capable of modelling, animating, lighting, editing textures. 

As Cinema 4D offers many packages, prices can rang anywhere from £540 to £2,700.




LightWave 3D - LightWave 3D is used for rendering 2D and 3D images both animated or static, animation and 3D modelling.

Prices range anywhere from $299 - $1395 (USD)




3D Modelling File Formats

There are many file formats used for 3D modelling, all support different things like animation, images both high res and low res and compressed or non compressed. 

Here are the relevant and important ones.
  • .3ds - used by 3DS Max
  • .dae - used for collaborative design
  • .dxf - (drawing exchange format) used by AutoCAD
  • .fbx - used to exchange files across multiple Autodesk programs
  • .lwo - used for LightWave 3D
  • .obj - supports most 3D modelling software
  • .ply - stores 3D data from 3D scanners
  • .skp - used for google sketchup
  • .x3d - open source file format
  • .mb - (Maya Binary) used for Maya

Constraints
While 3D modelling there are a lot of things to take into account, a big part of this is the constraints. There are multiple constraints the artist must keep their eye on. 

Some of these are:

Polygon Count - Polygon Count (Also known as "Polycount") is the number of faces your object has, it's not always the more the better and in Games Design a low polycount would be ideal for a model.

File Size - File Size is very self explanatory, your files must be kept as small as possible! For example, if you were to create an iOS game for your iPhone that's 50GB it will not run under any circumstance because it's simply too big.

This is preventable in two ways.

  1. Create less detailed models for iPhone games as the player won't be able to see the finer details anyway.
  2. Find a way to compress your files. 
Rendering - In animation rendering is putting everything you have created into one, every frame is essentially pieced together to run in real time for the viewer. Every video, film or animation has been rendered. It's the final step to finishing a piece of work.


Displaying 3D Polygon Animations

API - Application programming interface are sets of tools for creating software and applications. Two of these tools are Direct3D and OpenGL 

Direct3D is used to render 3D images where performance is needed such as games, it links with the graphics card allowing for acceleration of the process.

OpenGL is used to render 2D and 3D vector images, the API links with the GPU to speed up the rendering process.

Graphics Pipeline 


The graphics pipeline is essentially the rendering process.

The process consists of:
  • Input-Assembler Stage - Supplies data to the pipeline
  • Vertex-Shader Stage - Process vertices, a vertex shader takes a single input vertex and turns it into a single output vertex. Any transformations are also processed at this stage.
  • Geometry-Shader Stage - Processes entire primitives.
  • Stream-Output-Stage - Streams Primitive data from the pipeline to memory on its way to the rasterizer.
  • Rasterizer Stage - Clips primitives, prepares primitives for the pixel shader and determines how to invoke pixel shaders.
  • Pixel-Shader Stage - receives interpolated date for a primitive and generates per-pixel data such as colour.
  • Output-Merger Stage - Combines various types of output data with contents of the render target to generate the final pipeline result.


Rendering Techinques 

Rendering techniques are different ways to complete the rendering process. Different techniques usually use different algorithms to obtain the final image.

I'm going to talk about two different techniques called Radiosity and Ray Tracing.

Radiosity is a rendering technique primarily used for games, It is an algorithm that accounts for paths (represented by the code LD*E which leaves a light source and are reflected diffusely some before hitting the eye. 




Ray Tracing is a technique used for generating an image by tracing the path of light through an image plane and simulating the effects of its encounters with virtual objects. This technique is primarily used for producing a high level of realism.



Rendering Engines 

A Rendering engine is a program that renders marked up content and formatting information.

Here are two examples.

V-Ray is a plug in used in 3D computer software such as Maya 3ds Max, Cinema 4D and more. It can also be used in several industries like film, gaming and architecture. The plug in is a rendering engine that utilises global illumination algorithms such as path tracing, irradiance maps, photon mapping and directly computed global illumination. 

Arnold is a ray tracing 3D rendering software that uses Monte Carlo rendering. It uses one level of diffuse inter-reflection so that light can bounce off of a wall or other subject and indirectly illuminate a subject. In some cases it uses the Open Shading Language to define the materials and textures.

The two components are quite different, V-Ray uses global illumination where as Arnold uses Monte Carlo, V-Ray supports multiple platforms where as Arnold primarily focuses on film. Different rendering engines are used for different products and in this case are similar to game engines.

Parallel Programming (Distribution)

Parallel Programming is a way of taking a problem and essentially breaking it down and then solving them at the same time, thus solving the larger problem at hand. This process makes the rendering time quicker.




Lighting 

The rendering process must compile all components including lighting; textures; shadowing; vertex and pixel shaders. The process could be quick or take an extensive amount of time, that depends on the level of detail on all of these things. 











Tuesday, 4 October 2016

Year 2: Unit 70 P1 and P2 - Game Engines

Start Date: 13/09/2016
End Date: 10/10/16
Tutor: Wayne Gallear
Student: Shay Wragg

Game Engines 

What is a game engine?

A game engine is the core of any game, it essentially is a recipe for a game and by that i mean the graphics, code, physics everything created gets put together to make the final product.

There are many game engines out there, some are free for the public to use but most are restricted as they are owned by the companies that created them, this is down to company trademark and a competitive edge against other companies and they are known as Closed Engines. 

Now i am going to compare and contrast the Open and Closed engines.

First i will be talking about the various open engines and how they have evolved over time.

Unreal Engine 

The Unreal Engine is one of the most popular Game Engines out there. Developed by Epic Games in 1998 for an FPS game called Unreal. The Engine is primarily used for FPS games although has been used successfully in MMORPGs, stealth games and other RPG's, the code is written with C++ which makes it a very good tool for Game Developers today. 

The Unreal Engine has been upgraded over the years from Unreal 1 (1998) to Unreal 4 (Present). Every upgrade increases Resolution, AI, Scripting, File Management etc. 

Unreal Engine 1 - 1998


Unreal 1 combined many aspects of game developing for the first time in 1998. Some components used in this engine are: 
  • Integrated Rendering
  • Collision Detection 
  • AI
  • Visibility 
  • Networking
  • Scripting 
  • File Management Systems
The founder of Epic Games Tim Sweeney said that the Unreal Engine was created to be improved over the years. A big reason for the Unreal Engine becoming so popular was because of the Model Architecture and its signature scripting language called Unreal Scripting making it easy for players to modify game properties.

A game called Unreal Tournament was also released using the Unreal Engine 1 and was a big success with players worldwide. 

Unreal Engine 2 - 2002

Unreal Engine 2 was first implemented with a game called America's Army, a game that was funded and create by the US army and the US Government. Other games such as killing floor were also created using UE2



The core code and rendering engine was completely re-written and an additional feature called UnrealEd 2, a level editor. It also included an improved physics engine called Karma physics SDK, the physics engine powered the ragdoll system in Unreal Tournament 2003 and Unreal Championship games. The UE2 Engine also added further support for platforms.

An Update called Unreal Engine 2.5 was released that included:
  • Improved Rendering Performance 
  • Vehicle Physics
  • A particle system editor for UnrealEd 2
  • 64-bit support in Unreal Tournament 2004
Unreal Engine 3 - 2004


Unreal Engine 3 was released in 2004 and was designed with a brand new fully programmable shader software, instead of lighting calculations being done per-vertex they were now done per-pixel  creating higher quality lighting effects. 
UE3 also supports a gamma-correct high-dynamic range renderer.

UE3 supported windows, Xbox 360 and PlayStation 3 platforms at first but then later added support for all iOS devices including OS X. 

The Unreal Engine 3 rendering system supports HDRR, per-pixel lighting and dynamic shadows. 

In 2011 UE3 ported to support Adobe Flash Player 11 by using Stage 3D hardware-accelerated APIs. Epic Games started using this version of UE3 to develop in house games such as Gears of War which was in fact the first published console game developed using the Unreal Engine 3. 


Due to a  high amount of owners of the Unreal Engine 3, Epic Games announced that UE3 would now run on Windows 8 and Windows RT.

Unreal Tournament 3 would receive significant updates that included many new features. Here's a list:
  • A Global illumination solver
  • Improved destructible Environments
  • Soft Body Dynamics 
  • Large Crowd Simulation
  • iPod Touch Functionality
  • Steamworks Integration
  • A real-time global illumination system
  • Stereoscopic 3D on Xbox 360 
  • DirectX 11 Support 
UE3 also branched to TV in which it was used to help with animation a green screen use. Epic Games no longer supports UE3 but it can still be used until 2020.

Unreal Engine 4 - 2012/2016



The Unreal Engine 4 had been in development from 2003 up to 2008 and was directed at the eighth generation of consoles, PC's and Android.

Unreal Engine 4 features:
  • An improved real-time global illumination system 
  • Developer features to reduce iteration time
  • Allows updating of C++ code
  • New "Blueprint" Visual Scripting System
The new Blueprint system allows for quicker development logic without using C++, includes live debugging, all which results in less iteration time and less of a divide with different types of developers such as technical artists, designers and programmers. 

Epic Games released the Unreal Engine 4 in 2014 as subscription service, they also created the Unreal Marketplace that lets users create and sell games that they have created, users can also create different "Asset Packs" and sell them. Asset Packs can include skins, textures, player models, weapons etc.




Unreal Engine 4 - Kite Trailer - https://www.youtube.com/watch?v=Yo2-Pgcmh8U


Unity 



Unity is a cross compatible game engine used to create video games for PC. Consoles, iOS, Android and websites.

The engine has lots of desired features that are being added and upgraded with every version that releases, five major versions have released so far. Some of these features are:

  • specification of texture compression
  • resolution settings specified for different platforms
  • provides support for bump mapping
  • reflection mapping
  • parallax mapping
  • screen space ambient occlusion (SSAO)
  • Dynamic shadows using shadow maps
  • Texture-to-texture and full-screen post-processing effects
  • Advanced shaders
Unity is one of the biggest game engines available to the public with 1.3 million users in 2012, since release the software has received many rewards and has been successful with developers worldwide.

Here is a feature preview of the latest version of Unity:




CryEngine


CryEngine is a game engine created by a German game developer called Crytek. The engine is updated to support new platforms and add new feature to improve their games. 

The engine is available to the public as well as other developers. Many developers have took the CryEngine and altered it to their liking and to create a whole new styl, for example Ubisoft has their own heavily modified version of CryEngine that is not available to the public called the Dunia Engine.

CryEngine 1 

CryEngine 1 was first used to create Far Cry, which was first only a demo to show off CryEngine but when Crytek saw the games potential the game was released. Later on when improved video cards were released Crytek release CryEngine 1.2 which supported better graphics, version 1.3 supported HDR lighting. 

Crytek began licensing the engine to other developers and Ubisoft actually bought the property rights to Far Cry and gained access to the Far Cry version of the CryEngine.



CryEngine 2

CryEngine 2 was first used to create Crysis. CryEngine 2 was licensed to IMAGTP, a french architectural and urban-planning company to show their clients what a structure would look like prior to starting construction. 

In 2007 Crytek announced they would be using CryEngine 2 to creat a brand new game based on a new "Intellectual Property" and that was going to be nothing to do with the Crysis series or even an FPS. Also in 2007 Ringling College of Art & Design licensed CryEngine 2 for educational purposes, becoming the first higher education institute to license CryEngine.




CryEngine 3

In 2011 Crytek announced that CryEngine 3 was in development and would support new platforms such as Windows, Xbox 360, PlayStation 3 and Wii U, it was also said tha the engine would support DirectX 9, 10 and 11. 

It was announced that Crysis 2 would be also created using CryEngine 3. 

In 2010 Crytek released a demo of CryEngine 3 that showed off new features such as Cascaded Light Propagation Volumes for Real Time Indirect Illumination. 

In 2011 he Australian Defence Force revealed that the Navy Personnel would train using a virtual landing helicopter dock ship made using CryEngine 3

Also in 2011, a Mod SDK version of CryEngine 3 became available on Cryteks website that would allow the creation of custom maps, mods and other content for Crysis 2. Crytek also release a free to use version of CryEngine for non-commercial developers called CRYENGINE Free SDK.



CryEngine 3.6-4 

In 2013 Crytek completely rebranded CryEngine from version 3.6.0 to "CryEngine" The reasons for this are that the next version of the engine would be completely different and nothing like the previous versions of the engine, although the development kits available available to lincencees still use version numbers. The new CryEngine added support for Linux and current generation consoles such as the Xbox One, PlayStation 4 and Wii U.

CryEngine V 

In 2016 Crytek announced a CryEngine V which features native DirectX 12, Vulkan and Virtual Reality support. Also a new licensing model was introduced to with a "Pay what you want" model to access to source code.

Here's a showcase of CryEngine V 




Closed and Well Known Engines. 

Frostbite Engine


The Frostbite Engine was developed by EA Digital Illusions CE, commonly known as DICE. 

DICE created the engine to initially create first-person shooters although since its creation the engine has been used in huge range of genres such as First-Person Shooter, Racing, RPG, Sports, Real-time Strategy, Tower Defence and Action-Adventure Platform.

The current engine is designed to run on multiple platforms such as Windows, Xbox 360, PlayStation 3, Xbox One and PlayStation 4 

The engine has been updated over the years along with the release of newer games such as the Battlefield, Medal of Honor and Need for Speed series'. 



Frostbite focuses on three main features, FrostEd, Backend Services and Runtime. These components help create these aspects of the game:

  • Audio
  • Animation
  • Cinematics
  • Scripting
  • AI
  • Physics
  • Destruction
  • Rendering
  • Visual Effects
Frostbite 3 introduced weathering systems, physically based rendering, and support for various development techniques. Frostbite 3 had many upgrades that improves tessellation technology and also features Destruction 4.0 which enhances destruction in-game.

An impressive addition to the Frostbite engine was the Levolution system in Battlefield 4 that allows for wider and more detailed destruction in-game, also the engine has been used in FIFA 17 to add an immersive weather system and more detailed spectators. 

Go to the 0:50 point to see gameplay of Levolution.



RAGE (Rockstar Advanced Game Engine) 

The RAGE engine is a game engine developed by Rockstar Games to develop games on Windows, Nintendo Wii, Xbox 360, Xbox One, PlayStation 3 and PlayStation 4 

The RAGE engine was developed to improve all future Rockstar games, the engine supports DirectX 11 and stereoscopic 3D rendering on the PC platform.

The RAGE engine contains some third party components such as the Euphoria character animation engine that adds unique real time animations, it also uses the open-source Bullet physics engine which simulates collision detection, soft and rigid body dynamics.


What makes a game engine? (Components)

Game engines are made up of many components. These components include things like a physics system, a graphics system, an animation system. The list goes on. 

I will now talk about some of the many components that are used in multiple game engines and how individual engines alter them differently. 

Main Game Program 

Every game engine begins with a written program. The program consists of written algorithms that is essentially the 'engine' of the game engine. Rival developers will often write different programs to make their engine unique.

For example the Unreal Engine would use a different program to the RAGE engine due to one being available to the public and one being completely company orientated.

Rendering Engine 

The rendering engine generates 3D animated graphics by a certain method such as rasterization or ray-tracing. 

Rendering engines are built using application programming interfaces (APIs) such as Direct3D or OpenGL. Other APIs commonly used are DirectX and Simple DirectMedia Layer as they provide hardware-independent to other computer hardware such as mouse and keyboard etc. 

Software rendering is also used in some game engine for modelling reasons or still-rendered images when visual accuracy is valued over real-time performance. 

Game engines are written using programming languages such as C++, C or Java. The languages make it so the developer can access specific features of the engine.

An example of this would be Grand Theft Auto V compared to Crash Bandicoot, these are two massively different games as one is photo-realistic and the other is animated, the two would use completely different rendering systems due to the size of each game.




Audio Engine

The audio engine consists of sound specific algorithms that calculate things on the CPU. There are multiple sound APIs available such as OpenAL, SDL Audio, XAudio2, Web Audio and more.

An example would be Doom 3 uses OpenAL for realism purposes, where as the XAudio2 system is used with a low-level audio mixer. 


Physics Engine

The physics engine simulates the laws of physics realistically. An example of this is the Euphoria system used in some of Rockstar Games' titles such as Grand Theft Auto or Red Dead Redemption, or the Havok engine used for games such as Assassin's Creed.

Euphoria is based completely on a enhanced Ragdoll system where as Havok focuses on movement, destruction and other attributes.

The Euphoria system focuses on generating realistic animations in real time, making each animation unique. 

Here is a demonstration of the Euphoria System:

 

Artificial Intelligence (AI)

AI is how in game entities behave, whether they are aggressive and attack the player or are allies. Any in game character, pedestrian or animal has AI programmed specifically for it. AI is what quite literally brings the game to life.

AI is nearly completely different in all games, it is a huge component in creating a certain genre of video game. For example in the Command & Conquer series, the AI can attack, defend, build etc, but in a game like assassins creed the AI can fight, run or could be a civilian or an animal.


Middleware

Middleware is the 'Glue' to a game engine. It is computer software that allows a bridge to each components of the Game Engine, bringing it together and creating the final product.