Optimization and terrain


Hey everyone, since it's been a minute since my last update, buckle up for a longer than normal update on KF. 

So as most of the main features are in playable states our next main task is to start putting all the pieces together to build the MVP (minimum viable product). This means we need to build out the starting HUB and first playable zone. I started with a simple block out in order to start gauging size/playtime/layout concepts. A block out is exactly as it sounds: gray boxes that serve as placeholders for art that will come later. When I dropped our current boat into the scene to start checking things out I noticed that our framerates were much lower than I anticipated. It wasn’t that it was super low (I was getting around 70-75 fps) but with so little geometry in the scene it was obvious that something wasn’t right. So that started a round of testing, basically looking into what could be the cause. Obviously it shouldn’t have been the boxes since they’re literally boxes with a default material. I quickly ruled that out, so that left me with only 2 other options. It was either our ocean shader (unlikely) or something on our boat was totally unoptimized. A quick check on the ocean confirmed that there was something wrong with the boat, which made sense. 

The breakdown of boat checking was pretty straightforward but time consuming. Basically we had to turn off each individual component in the boat one by one to try and track down the culprit. Luckily Unity added a statistics checker to the Editor at some point in the last few years (I'm not sure when this was included, but boy did it turn out to be a time saver here). Previously we would have had an extra step of compiling and running the game then checking the profiler as we turned things off/on to look for large changes in frame rates.

The big offender turned out to be our tacklebox. The original plan for the bait crafting system was to allow players to use individual pieces of the bait in order to do some fancy component based crafting. This meant that our modeler needed to leave each small component of each bait object as a separate mesh/rig. Any of you that know anything about how a game engine draws things onto a screen can probably tell where things went wrong. In order to save some development time we had simplified the crafting system down to just set recipes, so the individual component pieces of a bait were no longer needed, but we neglected to combine the mesh components back up into single objects. So the tacklebox held a copy of each bait, which have many many individual meshes which was costing us many many more draw calls than were necessary.

Once we figured that out, the solution proved to be pretty simple. We could have cracked open Maya (the modeling software we use) and combined each bait into a single object there, but with our recent studio restructure we don’t currently have a dedicated modeler (I haven't touched a modeling program in at least 15 years). I did know however that there were several tools available on the Unity asset store that allow us to combine meshes inside the editor. So rather than re-teach myself Maya I grabbed one of the tools and got to work combining meshes.

I’m happy to report that after the completion of that task our framerates for the blockout scene are very high (I’m getting +/- around 270 pretty consistently). With that out of the way it was then time to start looking at how we wanted to build out the world.

The original plan for the world was a big open ocean with lots of little islands with secrets and fishing coves for you to explore. That’s still the plan, but without a modeler we need to get creative on how we’re going to bring that to life. Before she left, our awesome modeler who’s now over at WizKids made some starter islands for us. Which is what you’ve played around with in the demo. While these are great, without her around to make more, we’d be kind of limited to the environments you’d get to experience and I personally think that the world would get kind of stale pretty quickly. After a bit of brainstorming I settled on what I hope is a solution. Unity has a terrain system, which with a bit of tweaking I thought might work for us to unique/interesting islands out of. 

So off I jumped into the “fun” world of Unity terrain. Yes I put quotes around fun on purpose. It’s… an interesting system to say the least. But after overcoming a bit of a steep learning curve, specifically dealing with keeping our new found gains in frame rate, I’m also happy to report that this is a solution that is working. My first few test islands are looking good. I’ve got a LOD system in and working, so now all the beautiful art that our modeler provided doesn’t slow our frame rate down to a crawl (that was an initial problem I had to work out). 

So yeah, that’s where we’re at. Things are coming together. It’s a bit slower than I had hoped, but our progress continues. Thanks for keeping the faith. I know KF has taken longer than you or we want, but I’m grinding hard to land this beast. 

Until next time.

Get Kaiju Fishing - Pre Alpha Demo

Leave a comment

Log in with itch.io to leave a comment.