top of page

Optimization!

Hello Readers! In game development, there’s more than meets the eye. Most people understand there’s concept art and models and those models are arranged in the game’s engine to make the levels and game itself. Everyone always wants the best looking game, far draw distances, but most don’t think about the difficulty in actually achieving that. In order to make the most technically appealing game we have to optimize everything. So how do we do that?

Baking is the biggest way we do this. Baking models is a simple but tedious process. The model being baked must first be created. Generally the model is made very high in its poly count, which can be taxing on the engine, but looks great. From there we duplicate it and reduce its poly count as much as possible so that it’s only a few thousand, or if we’re lucky, a few hundred tris (tris being triangles, the simplest polygon and the one that most game engines measure). From there the low poly model is UV unwrapped, so that it may be textured, and it is overlaid with the high poly model. Later the texture artist will use their software to bake the high poly model as a normal map over the low poly, then texture it. This basically allows the low poly, which doesn’t look too good, to use the high poly as a texture and works as a great way to make things easier on the engine.

LOD groups are effective, but not something we’re using too much right now. Essentially every model has a level of detail, or LOD. When up close to it, the LOD is at 0, and as you get farther away, the level increases, but the model becomes less and less defined so that when you look at it from 100 meters away, it is just a blob that resembles the shape it should. This is incredibly useful in games with an open setting and something the team working on i01 is taking full advantage of. However with us, the majority of our assets are behind doors or obscured by other walls and pillars already. As a result, manually setting up each LOD group would be too time consuming for how little it would impact out game, and we’ve decided to stick with using in-engine LOD groups. These are not as effective as manual LOD groups, where we make every version of the model in changing poly counts, but it works for us.

The last thing we do is work with occlusion culling. What this does is check every bit of the level with the proper set up, bake lights (saving how they look so that the game has to focus less on rendering lighting), and save instances where the player may not see something because it is occluded or eclipsed by another object. As the game updates its images x number of times every second, it will only render what it needs to when the player can see it. This relieves a massive amount of strain from the engine as a whole.

To show the effectiveness of this, we built our level and did not optimize it all. Total the level had about 5 Million tris it had to render, and when un-optimized it got between 2 and 5 frames per second. It hurt our heads to play it. So, we did a quick job optimizing it with LOD groups and Occlusion Culling and we skyrocketed back up to 30 and sometimes 60 frames per second in the optimized sections. Currently the first level is receiving a little extra love and work is being done to bake the models in it to help the next build. This build however will feature the less optimized version, but has been seen to get over 40 FPS on several of our computers. Optimization is important to us and we hope to be able to release a game that can play with 60fps for most people, and we’ll be constantly looking for new ways to achieve that goal over in the new year as well. Don't forget, we are looking for a new concept artist, animator, texture artist, character designer, and PR Manager!

Thanks for reading!

Signing off,

Noah Stavish, Creative Director


Featured Posts
Recent Posts
Archive
Search By Tags
No tags yet.
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page