May update Part 5: Art Optimizations
Welcome to the last part of the May (and now June) updates. Do not worry, we will have another update coming out end of the month to keep you all apprised of the work we have done this month, what to expect and a few other sneak peeks.
Art assets have been a challenge in and of themselves. One of the things we are focusing on as we build the new Island is the art. It is not so much about the style as it is the overhead and errors related to the art. We are working at this and updating some of the visual aspects of the art as well. In some cases this is just cleaning up the art in 3ds Max and photoshop, while in other cases it is replacing it all together.
Art Asset Visuals and Optimizations:
Scaling size of the art:
A lot of the issues with collision and line of site is not just the current combat system, but also the invisible collision boxes. This is most commonly seen by the players with rocks and trees.
As assets are scaled up, their collision boxes are scaled accordingly. This means that the gap or space between the collision box or mesh get larger as the asset itself does. So a lot of the art that has been scaled 100, 500 even 5000% will be redone to scale so we follow a standard of no more or less than 25%.
This will also improve performance for the players as well since it takes more calculations client side for those assets that are over or under scaled. The less number of calculations your computer has to do client side to render the correct visual size the better it is for you, those around you and the server.
To solve this problem, we are going through all of the art, bringing it back into 3Ds Max and setting the scale correctly. This has already been done for most of the rocks, and we are now working on the buildings and other architecture.
Some of the scaling changes will also come into housing as well to help improve performance for all player housing and guild/nation cities. Though some things will be brought down to basics to start, we will be adding more assets to help keep your creativity showing.
Having the proper scale, and limiting the amount of how large or small you can scale the assets, will not only let us improve performance, we can also offer more items for players with different styles- all the while being more optimized.
More on the topic of Player Housing will come at a later time.
A lot of the flora is getting a total revamp. Most of the issues are due to the scaling. However there are visual aspects as well that we are working on. Some of the more blatant visual issues we see are with the trees in a distance.
The popping of the billboards, billboards not quite matching up with the trees and the white glow from a distance will be fixed with the new trees. Grouping trees that are using the same textures helps a lot to improve the performance. This also means adjusting the LOD’s so that they fit ALL of the trees in that SpeedTree library and not having duplicate textures and materials.
We are redoing most of the trees so we have accurate lod’s, as well as scale. The lods (level of detail) should flow well and blend so you do not see the popping you see currently in the trees.
Not only will this improve the styling and visual appearance, this will also improve performance as the trees themselves are optimized. Instead of building and importing each tree separately we will be doing this in groups to utilize the texture/material bank system that is in the engine.
This means instead of 10 to 15 textures for each separate tree, each in the group will use the same textures improving load and draw times.
When we say flora we do mean all plants and trees. We want to make sure that we are consistent across the board for all assets. The flora revamp will and does include the following:
We have already brought some of these into the world and you can find them in the new Ghetti Gorge and a few around the Plymouth Control Center with the next update.
Along with the new trees we are also focusing on the collision. All trees will have full mesh collision to start with. This will allow us to see how players interact with them in game and issues they have with getting stuck in the trees themselves. We will then look at removing the collision from the leaves and possible fronds as start the polish.
Which trees we do this with will will be based on which ones the players have difficulties with. There are times where collision is important, and other times when it is just a plain hindrance with no real purpose. We want to keep the collision for all flora semi realistic but not allow players to get stuck or have added difficulties when it comes to game play. For more information on SpeedTree in HeroEngine you can visit this link: http://hewiki.heroengine.com/wiki/Speedtree
More on Scaling:
Some of the additional flora and dynamic detail will be getting an overhaul as well. Most of this will be scaling and optimizing. Several of the flora meshes are very small by default and were scaled up to 1000 to 5000% in some areas. We want to optimize these while keeping to the same style so everything flows well.
In upcoming updates you will notice that some of the textures will be adjusted also. In addition we will be adding more flora styles to fill in the gaps and fit with the world and blend in well with the new harvesting system.
We will also be using the foresting system, by grouping and exporting trees as single assets. This might increase slightly the first load time for some players, but will greatly improve the performance by reducing the draw count by a huge amount.
Currently if you are in an area with 20 trees using 5 textures each, the draws would be (20x5)3 for lights and multiply that by 3 for shadows. With using the foresting method that is built in, we can cut that down to 1x3 (x3 for shadows) greatly reducing the draw calls and overdraws.
With SpeedTree 6 already integrated into HeroEngine, we can use the foresting system to create anything from thin to thick forests. How and what trees and bushes we decide to use will be determined by the regions biome type. This is a process that will continue throughout to the polish stage. Once we know what the terrain will be, we can easily build the trees to match the overall hills and even mountains to keep the draws and rendering down.
The last stage, which will occur during the polish stage in Beta, will be foresting the areas and finalizing how you see this. Some of this was already done in the new Ghetti Gorge which will be pushed out with the combat update later this summer.
Optimizing the static assets has begun and will be done in phases. We have broken this down to Architecture, Flora, Geology and Clutter (non specific assets). Some of this you will see as well with the new Starter area. The optimization of these assets is described below.
One of the first things we noticed was the scaling issues which we covered above, and missing textures and other errors related to textures. When you see assets that flash either with bright colours or what seems like under the mesh, this is because the texture cannot be found.
We have found several where it is looking for textures on someones D or J drive, which does not translate to the pathing in engine nor what you installed. So finding the missing textures or creating new ones and having them in the correct and absolute path will fix this.This will remove the disco animation. HeroEngine’s default to let you know there is a problem) as well as the overhead it has when it tosses the errors up.
Missing textures causes not only the visual headache inducing flashing textures. HeroEngine applies the default flashing texture instead of a solid grey, black or fuchsia that many engines use as a default instead. Though we do have some developers that have changed this to be a bright pink/fuchsia colour depending on what they are used to using in the past. What you will see in The Repopulation is the engines default flashing texture. You can read more about how the engine handles this here: http://hewiki.heroengine.com/wiki/Object_has_checkered_flashing_texture_instead_of_the_correct_texture
While we do this, we will be adjusting the textures to be a higher resolution as well as removing any of the 4k and 8k textures that are in the world. Optimizing them to be a higher resolution, as wel as hand painting and updating the textures allows us to have cleaner and more crisp images that will give a much newer and updated feel to the game.
All of this work also includes the normal and bump maps. Adjustments to these, or even remaking them to fit the correct lighting will help as well with the crispness of the images, as well as giving them a better appearance of depth and detail.
Incorrect textures and errors:
One of the more common error we see is the texture does not quite fit the model. Sometimes it is subtle but on a few assets including some structures players have sent us, just do not fit at all. HeroEngine uses both texture and material banks. This what some may have seen if they looked in their error logs as a Material Redefinition error. These will be fixed as we merge the art or rename the texture and material banks.
When you have two different texture banks with the same name, it will load the first texture, and apply to all assets with that bank name to all assets that load afterwards. This then toss up an error, “Material Redefinition error”. This error lets both world builders and artists know that there is an issue with the material name and there are more assets from different files using the same material name.
Texture banks can be used for any type of asset from static to characters. Dynamic texture banks can also be applied to give world builders or even players more options to the appearance, as well as giving the benifit of improved performance. You can read more about how HeroEngine handles the Dynamic Texture banks and how it can greatly improve performance here: http://hewiki.heroengine.com/wiki/Dynamic_Texture_Banks
Asset files, grouping and more optimizations:
As we are going through the art assets we had found several of the same appearing assets that were exported into different directories and used throughout the world.
One example is the red bunkers in the world. We had found over half a dozen of the same exact appearing model and textures but in different directories and being used in game. We have already finished this set, and will use only one model and texture group for all buildings of the same style.
We have also created multiple versions/shapes of this bunker while using the same textures to keep load, rendering and draw counts down. What we have done for the red bunker we are doing with all of the other art assets as well.
While we are able to bring the assets into a single art file and export them, we are also cleaning up the art as well. Reducing vertices, removing isolated vertices, merging textures into atlas maps and so on. This will also improve performance and some of the visual appearance. Most of the architecture so far we have been able to bring down between 20 and 120% in the vertices per model.
Improving the UV Maps:
As we go through the art not only are we adding a few more variations in the same art file using the same texture banks as you can see above, we are also improving the UV layout of the assets. This helps with the visual appearence as well as light and shadow maps for the art assets.
Using correct UV Maps will take away some of that flat look of many of the assets and improve the actual layout of the the diffuse (colour), normal (bump) and specular (light) appearances. It will also help us remove some of the visible holes in assets where the vertices do actually match up, but leave a gap in the texture itself.
This process will continue throughout Alpha and Beta. Once we start getting in the new art, please let us know if you find any problems or bugs.
Vertices are the points in between where edges of the faces (the polys or quads) meet. All game engines to date use vertices to render the faces you see in game. So when you take, as an example, a cube with six sides you can have an un-optimized version that has 36 verts or an optimized one that has only 8. The less verts there are the better performance you will have.
Part of this process is also closing any holes in the art that is not from improper UV layout of the textures. We have identified several assets where either edges leave a gap or multiple verts can be merged into one to help improve performance and close any holes or gaps that are found in the art asset.
Holes in the actual mesh itself not only causes more calculations to be done in any engine, it also allows a gap that could cause a player to fall through the art- such as through a window, steps or along walls. As we group the art into type and optimize the verts themselves, you should start to see a markable improvement in both performance and not being able to fall through or get stuck in the art as often.
► Long Story Short: Art asset optimizations is going to slowly improve performance to the players. It is not the only area of concern, but is a large majority of it. Not only will we be working on optimizations we will also be working on a unified style that will help The Repopulation feel like a single world, we will also be improving the art assets and textures with new textures, better bump maps, and normals and spec maps. Some of this will come later during the polish stage, but the first iterations will be seen on the new Starter island.
Below are some sneak peeks at some of the changes in the art, including a couple before and after images from in engine: