Tech demo version 3 & performance optimizations
this week’s focus was getting the 3rd tech demo out to testers, doing a lot of project organization and implementing a few smaller systems such as the dynamic occlusion culling and object preloading. I started sending out the tech demo on Tuesday and everyone that has shown interest in testing it has received the demo. After gathering feedback I am happy that nobody has encountered saving/loading issues so far so I am hopeful that the major issues with it are indeed fixed. The biggest critique I got for the demo was the usability of the opening and closing of drawers because each action uses a dedicated key. This gets cumbersome fairly quickly, isn’t intuitive and will take away the fun of the new scavenging system that by itself has received great feedback. After several discussions I decided to rework the system for the 4th tech demo by having the player click and drag the drawer instead. This will still allow the freedom of choice to either open or close it while having it be bound to only one key. This should also make the scavenging even more immersive as this would be even closer to the real world interaction with drawers and doors. There is a game I found that has this type of interaction with drawers and doors which is called Phasmophobia, which is a pretty successful indie game. Since this system works well in that game I am hopeful that it will work well in my game too. I’m looking forward to getting feedback from testers once tech demo v4 is ready for testing with this new system.
For better spawning performance I implemented object preloading this week which essentially allows modders and myself to add a label to their objects in the mod which is then used to find all objects of that label and preload them during the game’s loading process. The labels to preload will be exposed to a file so modders have the ability to use their own labels and have them included in the preloading process. Preloaded objects allow spawning to be smoother as the objects don’t need to be created on demand in most cases as a certain amount of a given object is already readily available. This system coupled with the dynamic chunk loading and unloading (which recycles objects) will in most cases result in no additional objects needing to be created. Creating objects in Unity is a performance heavy process so having this done ahead of time greatly impacts performance during gameplay by trading it with additional memory usage by storing said objects in memory ahead of time.
A second performance improvement system I added this week was the dynamic occlusion culling I briefly talked about in last week’s devlog. For that, I am utilizing an asset from the asset store that does most of the heavy lifting to achieve this functionality. Since the asset is not strictly built for runtime modifications it required a bit of a workaround to make it work with my dynamic modded objects. After a bit of experimenting I did find a suitable workaround that seems to be achieving exactly what I need it to. I’ll be doing additional stress testing of the system in the coming days and weeks to see if it holds at a large scale scenario that is to be expected in the game. Lastly I did invest a good amount of time into additional testing for improving the art style of the game. I will be talking about this in more detail in the next devlog once I have finished all my tests.
Notable tasks this week:
Finished tech demo v3 and distributed it to testers
Implemented support to preload objects per label in a mod
Implemented dynamic occlusion culling
A ton more experimentation for art style improvements
Lots of project organization (updated assets, removed no longer required assets etc.)
Lots of testing and minor improvements/bug fixes
Wishlist on Steam
Join the Discord
That’s all I got this week. I hope you are all doing well.
Stay safe out there and I’ll see you next week.
0 comments