• Register

Fursan al-Aqsa: The Knights of the Al-Aqsa Mosque® is a Third Person Action Game on which you play as Ahmad al-Falastini, a young Palestinian Student who was unjustly tortured and jailed by Israeli Soldiers for 5 years, had all his family killed by an Israeli Airstrike and now, after getting out from the prison, seeks revenge against those who wronged him, killed his family and stolen his homeland, by joining a new Palestinian Resistance Movement called Fursan al-Aqsa: The Knights of the Al-Aqsa Mosque®. Fursan al-Aqsa® is a Registered Trademark of Nidal Nijm Games © 2022, all rights reserved.

Post news Report RSS Fursan al-Aqsa Dev Blog #12 - Performance Optimization for Consoles

In this article I explain the new changes I made to my custom UDK/Unreal Engine 3 to fix textures streaming on consoles and make the game run and render as intended on both PS3 and Xbox360.

Posted by on

User Posted Image

Hello guys (and girls)!

After one intense week of work, headaches, distress, and almost throwing everything (my PC and my consoles) out the window :), I finnaly got that last map, Camp Filon, running smoothly on consoles, the way it was intended to run, as you can see in this video below:

Until now, all the gameplay features I implemented on my game, like Knife Kills, UI, Pause Menu, Game Over Screen, HeadShots Counter, and so on, if you see, I tested them on debug maps, empty maps, merely blocks, without texture, particles, or any effect. I mean, these scenarios did not represent how the final game will run.

So, whenever I compiled the last map, Camp Filon, to run on PS3 and Xbox360, I discovered another bug, which I did not observe before. All the textures on the map were terrible blurry, I mean, indeed blurry to such extent that the visuals became horrible!!!

I know that consoles have much limited RAM memory than PC, and specifically PS3 and Xbox360, in rough terms, they have 256MB and 512MB of RAM, respectively.

What was driving me nuts is the fact that the game run fine on PC, just on consoles the textures got extremelly blurry. After searching on legacy UDK Engine forums (https://forums.epicgames.com/udk) and on UDN Network (https://docs.unrealengine.com/udk/Three/WebHome.html), I began to learn more deep about Unreal Engine 3 on Consoles. The good of developing a game alone, is that it can be a true classroom for anyone. I myself, learned a LOT on this project. Specially, whenever I began developing this game, I did not know too much about Unreal Script Programming. Now, I learned a LOT, and I am able to do many things I could not do before.

Coming back to my journey, I discovered about Texture Pool in Unreal Engine 3, which, in rough terms, is kinda fixed memory space used for loading (streaming) textures to the screen. From what I understood (I may be wrong, but what matters here is that now it is working), Unreal Engine 3 throws all the textures currently loaded (which can be seen by the player view camera) inside this texture pool, and then it loads the mipmap of these textures as it is needed. The mipmaps here are kinda different versions of the same texture in different resolutions, to be loaded according the camera view distance, like, the closer the player view camera is to a texture, it will load a higher resolution of the texture, the further, it will load a lower resolution version of the texture. This is essential for performance.

So what was happening? The texture pool was filled up in consoles, so it was only loading the lowest resolution of each texture (16x16). The default Texture Pool Size in UE3 is 140MB, so I increased it to 200MB and voila! Problem solved! Not yet...

Again I compiled the map and did run on PS3 and Xbox360. It run beautifully and smoothly, with the textures on it`s full resolution, and the mipmaps loading correctly. However, another problem happenned, whenever I added the enemies on the map, it simply crashed the game on consoles with the error OUT_OF_MEMORY.

I was already entering into despair because this problem, however, my last try, was to compress all the TGA textures of this map in photoshop using the RLE algorithm. I created a small photoshop action script to batch compress all the 465 TGA textures (diffuse, normal and specular), and was able to reduce by almost half the total size of the textures. Before compression they were 576MB, and after they turned 278MB!!!

So this compression of textures compensated the increased texture pool size, allowing the game run, without crash, and with the mipmaps working flawlessly, as you could see on the above video.

Finnaly, I can use this new map as a template whenever building my other maps, as I know now that I need to optimize the maps as much as I can, and keep the maps size small, just like this, for the sake of performance, and gameplay.

Cheers and until next update.

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: