Weekly Wrap-up #88
This week I found a rather large performance issue on mobile devices. The same problem also existed on desktop, but since they’re faster machines, it wasn’t noticed. The issue was with texture swapping when drawing to the screen. If you have more than one texture being used on the screen at the same time, LibGDX swaps between each one during runtime. This can cause a rather distinctive increase in processing time on smaller devices (even some larger one’s too).
The resolution was to merge in several previous textures into one and come up with an in-memory texture that would then also include the addition of fonts generated upon start up. This seems to have helped a lot in the combat area and in the main map also. In the end I was able to reduce the previous 28% processing time used for texture swapping during combat down to only 2.8%!
I then went onto the adventure maps and made some adjustments there for layers. I didn’t realize it until now, but the best way to do maps with tiles is to use only one tile texture per layer and if you need more, add additional layers. You do end up using more layers with complex maps, but the performance gained from doing so does seem worth the effort. After making adjustments to the forest map (which used many different textures) I ended up reducing the texture swapping by over 50%.
With this fun little side track, I was only able to get a few more things done this week:
- [UPDATE] Enhanced the sound system again to allow for additional play back options.
- [UPDATE] Yet another performance improvement change made to the mini map console.
- [BUG] Load/Save window slots were not being set correctly after drag/drop from server side.
- [BUG] Fixed a memory crashing bug that showed up in only one mobile test device but likely would have shown up in others also later.
As I’m drawing closer and closer every day to my first “public” release, I wanted to share today a little screen shot showing how much Mischieviots has changed over the last couple of years.