Missed a week, but not because I was slackin. Lets get into it.
Small Feature Update
Last time we talked about all of the jump compression stuff and Alex had done a huge update to it, removing the need for individual animations on each character (yay!) This time we exposed a few more variables that he had that lets us customize it a bit further.
Now you can have different times that the character stays at their lowest point on a jump, based on whether or not they were walking, jogging or sprinting. Not a huge change, but one that makes all the jumps feel a lot better.
For materials we made a few minor fixes. Fia’s material was ignoring any part of the texture that didn’t have a color from the engine on it. Like her knives and the bottom of her boots. So now those don’t look like untextured shiny pitch black anymore.
Shold got his scarf back, now that we’re done with his skinning updates. He also had some updates to his physics asset, so he can simulate the scarf a bit better without it going through his arms and torso.
We can now support blood decals on character after hits thanks to Alex. I went in and added the layer to all of our characters which started to push the material complexity a bit too far. Which means that I had to go in and optimize a bit to make sure that our materials don’t become too much of a burden for the engine.
Which leads us on to…
When we make characters, we try to make them as high quality as possible, and leave optimization till later. Overall this is good, because the characters end up looking great, but also comes with that looming threat of optimization in the future that no one wants to think about.
After our last playtest and the several nights we spent rushing to optimize everything in a panic, I figured it was probably a good idea to get ahead of it this time. So Unreal has a handy feature that generates LODs for you.
What’s a LOD?You, probably
LODs stand for Level of Detail. You’ve seen these in every game before, don’t lie to me.
LODs are those low detail models that pop in the farther you get away from something. They change the detail on the model because it assumes that you’ve gotten far enough that you shouldn’t notice a drop in detail, and it changes back to the higher quality one, the closer you get.
The more levels in between, the smoother the transition.
Having these be lower quality helps the engine run faster because it has less geometry and less bones to animate, so less work overall. In addition we also needed to optimize the textures to save on memory. Memory as it turns out, is a pretty big deal. Most graphics cards don’t have a ton of memory to dish out, which means that we need to make the most out of the memory that we do have.
Most graphics card range anywhere from 2GB to 8BG of VRAM, which is a pretty big range. Meaning we need to plan for the worst and hope for the best. The closer you get to using all of your VRAM the slower your game will run. If you run out, that it slows down to an unplayable crawl and I weep bitter tears.
So, armed with that knowledge, what can we do?
Memory optimizations are a man’s passionAlbert Einstein
So we went in and found out how much memory each character was taking up, and as it turns out, each character was taking up roughly 1.2 -1.5 GB each. So that adds up concerningly quickly. So the answer it turns out is pretty simple. Unreal lets us change the LOD for each texture just like we would for a character. So that way, we don’t have to compress the source texture down. Which means that people with higher end machines would be able to use the textures at a higher resolution.
The way to do that is to look at each the character overall and reduce every texture down to its smallest size, and bring it back up slowly to see what the lowest resolution we can get away with is.
So doing that we ended up reducing the memory size down to about 80 MB for each enemy, and about double that for each hero at around 150-200MB.
While that doesn’t solve it completely, it does reduce the cost by roughly 80% for very little loss in quality. It can still be reduced further, but it would come at a significant loss in quality. So there’s still a bit more balancing to be done, but I do think we can squeeze out a bit more performance. Possibly with the lower quality modes.
Now comes everyone’s favorite portion of the blog….
A good third of these is the Sword Knight, since we needed him to test out a bunch of hit reactions.
Shold is starting to get back up to speed with his locomotion for His Hammer + Shield and his 2-Handed Axe looking pretty good. Still need to get his Rock Armor finished though. Don’t have much of his melee done, but at least his light attacks are in there.
Fia had some minor cleanup to make her locomotion more smooth. She now has Light and Heavy In-Air attacks as well. Now she just needs standard heavy attacks to be all done with melee.
Most of the animations are locomotion updates for walking, jogging sprinting, etc, but I like to sprinkle in attacks just to keep it fresh.
Lastly, we started porting over all of the impact effects from the last project. All of the effects were enhanced a bit to be more visible. The impact effects are all based of the type of surface you’re hitting, and the current list we support is:
- Flesh (Characters)
Each one spawns its own different impact effect, and its also based on your weapon type. Currently we only support, sharp and blunt weapon types, BUT we’re going to be adding more as we go.
For example, we cant use blunt or sharp effects, if you’re using a spell like a fireball. We’d need to add fire effects to any impact as well. This also lets us bundle sounds with the effect, but we’re not quite there yet.
See ya’ll next week.