Blog

reducing 2-4 gb Console builds weight; improving texture management on PCs

Check out how we reduced 2-4 gb Console builds weight and improved texture management on PCs, thanks to automated scripts, allowing one person to efficiently maintain texture organization in less time.
Case: Brigada Games ported the game, which was originally developed for PC/Console, to all platforms, which allowed a developer and a publisher to tap into a new mobile games audience.
Process description:
The main objective of optimization was to ensure that the game could run smoothly on past-generation consoles and mobile devices that had limited memory capacities. To achieve this, the task involved organizing textures into groups based on their characteristics. Additionally, to accommodate cross-platform compatibility, extra texture groups were required. These additional groups would allow for more flexible utilization of DeviceProfiles, ultimately reducing the memory usage on textures for past-generation consoles. However, the challenge lay in the fact that the project already contained thousands of textures, all of which needed to be organized and assigned accordingly.
We utilized tools like Memory Dumps, Stats commands, and Unreal Insights to analyze and improve the game's performance. For architectural and engine optimizations, we wrote Python scripts using the UE5 API and executed them in the UE Editor to collect necessary data in tables and resave assets in required form. Additionally, we optimized textures in bulk using scripts where we set the Max Tex Size, did not use Bias, zeroed it, allocated textures to albedo, specular, normal map compression groups and various appropriate texture groups, then used DeviceProfilies to set thresholds for textures.
We evaluated the success of the optimizations by utilizing performance metrics and indicators such as Memory Dumps from target devices, Builds weights, Stats commands, and Unreal Insights.
Specifically for the past-generation consoles, we improved the quality of essential textures while reducing the size of less significant textures. As a result, the graphics improved without significant performance impact, and the overall build size decreased.
Throughout the optimization process, we conducted testing and debugging tasks by assigning QA to provide screenshots, videos with repeatable gameplay, and Stat Memory and memory dumps.
Automating the reassignment of texture sets offers great convenience and eliminates human errors. It also allows for better order management, with only one person responsible for the process. We have incorporated various filters to provide flexibility in customizing the script's execution. For instance, you can analyze the size ratio between StaticMeshes and their textures, enabling intelligent distribution of textures based on size. The script operates as a batch file, eliminating the need to open the UE Editor and saving time. Additionally, it automatically generates xlsx tables containing valuable asset information, allowing for easy tracking and revision.