Road generation speed improvements & new weather/time of day system
This week’s focus was on improvements to the world generation performance and more demo related work. I started the week by writing and posting the October progress report for steam. After that I was looking into possibilities to improve the road network generation because this was by far the least efficient part of the generation, taking between 80 to 90% of the generation time. After lots of testing I found a couple ways to improve the speed for the pathfinding that is used to connect the various points of interest in the world. With those improvements I managed to speed up the road generation by about 2 to 3 times. This consequently brought the overall generation time down significantly. A 100km² or ~39mi² world in this version takes about 30 seconds on my machine. This includes everything from the terrain, vegetation placement, points of interest positioning and road network generation. Depending on how much time is going to be added to the generation process by upcoming parts such as the generation of secondary road networks (inside towns and leading to smaller points of interest), building placements, more diverse vegetation, improved surface generation etc I may need to make changes to the maximum world size. This is very much dependent on what players consider a reasonable time to generate a new world during the loading process. Currently I am aiming to stay within 60 seconds for an entire world. This means I do have a good 30s buffer right now on the largest world of 100km² I would love to make possible. After those improvements I worked on another UI for the demo that offers testers a few settings for easier testing such as the ability to switch between a fly camera and a first person camera. Originally I didn’t want to add any weather or proper lighting effects for this demo but I felt like doing so anyway. I went ahead and added the weather system currently only available in the main projects also to the project for the world generation. I wasn’t really satisfied with the quality or its performance and started looking into another weather asset I recently purchased as part of a Unity bundle. It’s from an established asset publisher of whom I’ve been using other assets from for several years now. This decision was a great one because the quality, performance and ease of use of that asset is really amazing. It’s also based on new Unity features available in the high definition render pipeline like the volumetric cloud system. Being based on built-in features might even make it possible for me to add modding support to the weather system which would be more difficult with an asset that uses its own shaders and internal systems because those are much more difficult to expose to modders. With the addition of the new menu, weather/time of day system the demo is technically ready for testing. However I will be taking a few more days to also add a little automated benchmarking system. This will make sure that test results are comparable between demos and different systems by different testers. I will be adding this benchmarking by essentially using specific settings to generate the world via code and move the player automatically to various spots and capture performance. This performance data will be stored in a text file which testers can simply send to me to analyze. By doing it this way I can remove any possibility of having different setups between testers and systems. Once this little system is implemented I will be contacting people that have expressed interest in testing. If you are interested in checking out the demo and haven’t reached out yet please do so via direct message.
Notable tasks this week:
Added scene controls menu to the demo so testers can enable/disable various features
Posted October steam progress report
Tested various weather/time of day systems and decided to go forward with a different one than I originally had planned to use
Improved road generation efficiency. Roads now generate about 2 to 3 times faster.
Implemented various other performance optimizations for the world generation
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