It has been a few weeks since our last update. Despite the lack of updates, there has been a ton of work going on in the background. Lets go over a few of them:
We upgraded to UE5.2 and with that we are now fully capable of using all of its new updates. This mostly enables us to use lumen, nanite, PCG and a ton of other important updates. If you are curious, review UE's patch notes (click here).
The first major player test went well. As you can tell from the screenshots, players were being players. These alpha tests really help us to find the obscure cases that a player might find themselves in, and then bug fix from there. Also, these events are rather fun! If you wish to help out with future tests join our discord.
After some alpha testing with friends and family, we had the server in a solid state that could withstand several players trying to crash it. This meant it was time to start pushing the limits of the PCG system.
We pushed the PCG system to the limit and started to notice some issues with FPS. This seemed odd to me so I started to investigate. At the time of the screenshot, we were using Synty Assets as a placeholder. I thought that the textures and/or alpha cards could be causing the issue so I replaced them with a generic texture, but to no avail I was still getting 30FPS.
This made no sense to me and so I dove a bit further, downloaded an asset pack and tried with a "professional" pack.
The professional pack was fairing a bit better, but it still did not make any sense to me why I was taking almost a 50+ FPS hit. From here I went to the UE forums and started to look for answers. Finally, after a day of looking, a helpful person asked me if I was using DX11 or DX12. I assumed we were using DX12, and that the issue was nanite was not properly working. I was partly correct...
Several days of wasted efforts, and I found out that you have to set the engine to DX12, and when you do so nanite will properly work. I honestly thought there was no way that this could be the solution, but the person was right! No sooner had I enabled DX12, nanite started to do its thing and the FPS boosted up to 80+.
Naturally, my first reaction was to push the system to its limit and see if I had resolved all my concerns.
You might be wondering, "Those trees do not look like the ones you had before!" and you would be correct. Lets back up a bit and get into what that process was like.
I wanted to really push the system and see how far nanite would allow me to take this. In doing so, I decided to remove the alpha cards and make each leaf an actual mesh. To do this I need to explore some new tools that I don't normally utilize in Maya, MASH. If I am being honest, I have been missing out because this tool is amazing. After some initial fiddling, I ended up with this:
You could imagine that I did not think this would work, but for SCIENCE! 1MIL+ vertices is not optimized for a tree, much less making a forest. Yet, I had to try:
18FPS is not ideal either, but if you really think about it, that was a pretty decent FPS count for what was being pushed to the engine. Now came the optimization process and to do that I had to play with a few designs:
After getting a style down that I liked it was time to test if the results were worthy, and I must say I am very pleased with what I have been able to achieve. With almost 1500 assets spawned we were getting 115+ FPS.
Now that the mesh was solid, it was time to have Mester work his magic and help with the spawning algorithm. While I was off playing treemaker, he was already working on learning the advanced process of managing how PCG works.
Mester's efforts would enable us to paint down dirt or other materials and PCG would remove trees/shrubs/etc from the spawning. This is a very powerful tool and has unlimited potential with enough development into it. As we were hard at work making PCG our primary focus, the artist ZugZug, was working on the weapon skins.
I was also on the move to new tasking. I have been meaning to complete the new player skin for some time and with trees and the environment in place I felt motivated to finally get it done. This new skin also changes the entire skeleton of the player and fixes some of the issues that I was not aware of with the previous mesh. Primarily, it has twist joints for the shoulder, wrist, hips, and ankle. This means that I need to redo all of the animations, so this is no small undertaking.
With the new player blocked out, I began trying to refine how I wanted the foliage to look for the game. I have played with the polygon count for some time and the following images are what I have arrived at for my style for the foliage, thus far:
I am certain there will be further tweaks the more dense we make the forest. However, for what it is, I am happy with the range of 70 - 110FPS. My focus for this weekend is going to be the player and animations, so expect the next update to go into greater detail about that process. Sorry for the long delay in posting, I will make a better effort at keeping this updated!