Sunday, 30 December 2012

FMP 03 Technical Specification

Because I have opted for creating a realistic current gen scene, I have to produce a technical specification around this. I also have to consider that I am using Cryengine and what specific technical issues this may be produce. Working from;

There are some aspects related to Cryengine that will affect how I will model and texture and plan for this project. I will have to add additional edges to retain proper geometry shading in engine. By chamfering edges or adding additional edges I can save normal map (which are 4 times more expensive than diffuse in Cry) and smoothing groups. I will have to focus on good specular maps and fewer cuts via smoothing/UV borders-splits/material. Cry engine splits geometry depending on how many splits the model contains and by reducing the splits I can reduce the in game vertices count. My normal maps because of the expense should be half the size of my other maps. By modelling I should try to reduce the amount of detail in my normal map to achieve better consistency throughout my level.

LOD’s I use should retain silhouette reducing details in the first instance and transparent materials, reducing material ID’s wear possible. Next I should reduce all curvature not necessary to the silhouette and all additional details. The last LOD should contain basic shapes necessary for the silhouette and contain only 1 Material ID. Each LOD should reduce the tri count by 50%.

Polygons should be distributed In areas the player gets close to and I should neglect area that are far from the players view. Because I have quite a playable area my assets will have to make use of LOD’s for areas that are further from view. My Vista and non playable area will be the only areas that I can reduce my tri count and I will aim to use as few polygons as possible using the LOD plan as a base for how far away the areas are and how they are constructed. Using lower texture resolution for these areas.

I want my texture resolution to be as high as possible as I want a high degree for fidelity and detail as I want it to showcase my work. Textures should contain basic information and details and should use decals to add other information to break up tilling. Decals should be on 1 texture and placed in 3DSMAX to avoid placing in engine and limiting the amount of memory and complexity they add.

I will use standard modelling practices to reduce tri counts by deleting unseen geometry and back faces. By merging meshes into unique meshes I can save on draw calls. Cry engine processes square textures fasters than 2:1 ratio textures so I should consider this when producing my level. Where possible I will aim to reuse textures and shader’s and when using alphas reduces the amount of screen space they take up by adding geometry. The larger the screen spaces used the more expensive it will be to draw as alphas use a second draw call. I will have to consider overdraw and try to reduce this by reducing sizes and the amount of overlap on screen of alphas. By doing this I can also maximise the amount of texture space I’m using per texture.

Mirrored information should be merged where possible to reduce UV splits, problems with smoothing and texturing. Diffuse Alpha should be used when possible for greyscale specular’s and should be stored in the diffuse with gloss alpha. Specular’s can avoid the need for normals at some point. Spend time on speculars rather than greyscalling as this is a waste of memory and doesn’t perform any bonus to the texture.

Tileable textures should not be expanded and where possible should be as small as possible. Memory wise, normal maps are four times as expensive as a simple diffuse or specular map. Detailed normal maps are very expensive. Avoid them as much as possible and compensate by using detailed colour maps. Always use the Gloss in Diffuse Alpha shader generation option when the spec map contains no additional colour information (grayscale). You can compensate for the loss of colour information by using a specular colour in the shader. By doing this, you can also save a draw call.” Objects that need multiple colours can use a greyscale diffuse and then cry engine can tint the texture in the engine to produce multiple variations. These textures should contain the small material ID.

By producing an excel spreadsheet I have allowed for initial budgeting of my level, I have 150k of asset planned but I will allow another 50k additional budget for the non instanced scene. I have 100mb of texture space initially allocated but will allow another 50mb for extended scope and unplanned texture usage. I think this will allow me to produce all of my assets and from this I can use instances to populate the level. I can reduce the draw call’s of this by merging localised assets into one object, however I will not consider this part of this initial budget. I will aim for a minimum of 30fps and will have this as my main consideration of what I will produce or cut in the level.

Friday, 7 December 2012

FMP 01

I've left the FMP alone for a few weeks, as I already had a pretty solid idea of what I wanted to achieve from the project or enough of an idea to present to the tutors. But as December draws on there is much need for me to research and plan an in depth document, with information on my technical specification, detail and full project outline, assets lists and aspects to research and understand. Rather than produce a lengthy document straight off the bat, I'm going to produce a series of blog posts that can be stitched together to create an in-depth project brief. These post would be broken down as following;

Platform -                           Both Console/PC and Engine.
Technical Specification-      What Limitation I will set myself and budgets for textures/models.
Project Outline-                  What am I creating for what purpose and set a back story.
Assets List-                         Research what is needed, what is viable, extended scope.
Tools & Software-              Research on what programs and plugin's I can use to develop and showcase my                                                              .                                          work.

I will also aim to complete one piece of concept art for each of these post as this can develop the amount of visual material I have as reference.


Realistically because of the equipment that we have available to this course my only limitation is the power of the labs machines and the engine we use. We do not have capabilities to port our levels onto consoles so there isn't much I can do to change that. But if I had the option which would I pick, I did some research and the results are surprising. For what I can actually interpret. Below are the specifications for both of the consoles;

I was surprised, both are easily capable of running on screen hundreds of millions of triangles and billions of shader operations. But I assume that is the limit of what the machines are capable of and with running other aspects of software and running systems this would be reduced somewhat. The articles are also quite old, although from their respective companies. Rather than pick a specific machine I opted for a PC standard game. Computer graphics have improved and it is now the high end PC market that is on top. With the limitations of an engine I'm sure I could run my level on all three quite easily. I will use my computer as my base as it is slightly less powerful than what the lab machines are supposed to run. However coming back and forth from Uni I will have to be able to run these both and this is probably for the best. 

As this project will only be displayed and run on a PC that it the platform I am opting for.

I will aim to have a realistic budget and on screen triangle count for a Next-gen game (Current) and to the upper limit of what each engine can handle. This is because I want to make the most of what I've got and make it the best of what I can. I want to showcase my work and that is my ultimate goal for this project.

With this in mind I have researched what game engines I will be using to run my level. Firstly looking as performance.
















FP Character




There is an around 60k limit per model for each engine, so having my ship as one object may not be possible, but it would probably be better to break it into chunks anyway. 
One thing to point out is that triangle counts do not effect F.R. (frame rate) as drastically as Draw calls, Draw calls are when multiple meshes are overlapping and the engine has to render each one of these, slowing down performance. So as above shows a million poly's is a safe maximum guideline for Cry engine 3 and from play UDK I know it can handle this amount safely as well. To keep my FPS below an acceptable level it would come down whether I can keep the draw calls below 2000, which at this point in the project wouldn't seem to be a massive problem but I might have to look at this again later. My decision on which engine to use would rely on other more personal preferences between the engines.

UDK has the advantages that I have already used this program before and I'm quite able and capable of using it right from the offset. It is a stable platform and has a very easy to use interface. You are able to create material shaders easily with a node based system and importing and creating assets is very easy . However it does have some disadvantages, you have to 'build' lighting which takes a long amount of time and means that any changes you make to the level then has to be re-computed. 

Cry Engine has the advantages that its post effects and time of day settings are easily changed and everything is shown in real time without the need for pre-computed lighting. However this does effect computing with multiple light sources. Cry also doesn't have the ability to edit shaders which means it can be difficult to get the exact effect that you were looking for that might be relatively easy in UDK. Cry does look very nice and interactive and for the water based scene I am producing it is probably the right choice. However having to set up plugin's and having to be on-line to work is another issue that might be a problem, however these aren't significant issues once the project is under way.

Below is a comparison between the two engines, There are differences between them but a lot of the setting can be mirrored and achieved on the opposing engine anyway.

I think based on the fact that I am showcasing asset and level creation rather than particular shaders and I want dynamic lights regardless in my scene. As well as the engines are otherwise vary similar in capabilities and that I want to understand and learn a new engine, I am opting for using the Cry Engine 3. I feel this will showcase my work the best. As long as i respect the amount of draw calls and don't go overboard with my texturing and budgets and stick to respectable current gen limit, this project should be successful. 

Tuesday, 4 December 2012

Container texture Practice

Created a container 1024x512 texture around 1k tri's, trying to get my hand used to working again after fracturing my knuckle, took on and off around 5 hours from start to renders, trying to get quicker.

Finished Vehicle..Forgot to post

Here it is, really happy with how it turned out