This long overdue update will cover recent progress and trials with environment art, post-processing, and optimization.
The first Survival/PVP map has now been greatly enlarged and outfitted with terrain features, trees, various grasses and vegetation, and upgraded sky, weather, and lighting. I’ve also done a lot of experimenting with post-processing, including adding environmental anti-aliasing and ambient occlusion. These additions come with a pretty hefty performance cost, so I’ve also started to dive into script and scene loading optimization to keep the performance acceptable. Here’s a first look at the environment art work-in-progress:
I ran into several issues with the new features, from Unity bugs, to resource constraints and my own mistakes with various tool settings. First, Unity 2017.2 had a bug which caused issues with UI elements containing a Content Size Fitter. This issue would slow my performance to a crawl with multiple UI panels opened. Upgrading to Unity 2017.3 made matters worse by introducing a bug that crashed my build when loading the main scene and trying to set many UI objects inactive on start. I also created some additional problems by trying to load all of my new environment elements at once and allocating far too much memory on scene load. After several weeks of sorting through these issues and learning some new tools/techniques, however, I’m quite pleased with the new look of the first map. This is not a finished product, and I still plan to tweak the load distances, add some grass tree/variations, and add some more detail to the terrain, but I’m eager to get back to gameplay features and will likely save some of that polishing work for later in the development cycle.
It becomes quite expensive to run a mix of 2k/4k textures with wind zones and detailed lighting, but with some optimizations to some of my heavier AI scripts, I’ve been able to run the new scene with basically max settings and maintain 70-80fps. Most of the heavy lifting has been pushed over to the GPU now, and even on a fairly modest rig with a single GTX 970, the gameplay is still pretty smooth. Adding some object pooling should also remove a few of the rendering hiccups that I’m seeing in the current build on level/round load. Unity’s profiler has helped tremendously with highlighting a few of my worst performing scripts, and this is allowing me to shoot for my goal of an art style that favors realism over the more stylized art seen in most modern MMOs and RPGs.
Before getting back to gameplay features, I need to complete the integration of my new UI elements into the character inventory, tower, and basic game settings menus. I’ve also been working on a new and improved loot system which is quite different from what was seen in the first couple of devblogs and videos, and I hope to implement that system with the new Inventory UI in the next update. From there, I’m very excited to move back into gameplay with some new mechanics and spells for the combat system, improved friendly unit AI, and new NPC models and animations. Design of the class-specific spell and talent trees is also near completion of a first draft and should be implemented over the next several updates. All in all, things are really starting to come together and we’re hopefully only a few updates away from a playable demo.
Thanks for reading! Be sure to register with the site to save your spot in line for Closed Beta and stay up to date with all the latest progress for Defend The Night.