I’m putting in my custom splash screens for my project. The 6 custom size splashes I created total just 697kb in their original .png form. In order to use these in the project as trucolor images, it takes 26.9MB!
I understand that Unity uses a different image format that loads quicker than a stock .png, but is this really necessary for splash screens? The splash screens literally triple the binary size of my game.
Am I missing something? Is there some better way to make the iOS splashes work without creating 6 completely separate huge files? Is there a compression that will still look nice and crisp? At least Android will scale a single file to fit.
You should use PVRTC compression for them. The funny thing here is that the compression is so “lossy” that compressing for example an iPhone3 320x480 splash screen makes it look like crap, so what we did in our company is (re-) use a higher resolution splash screen (from iPhone 4 i think) with the same aspect ratio for iPhone3 splash screen.
I can’t remember by heart which of the splash screens are interchangeable but at least we are using the 2048x1536 retina iPad splash also for the old iPad with 1024x768 resolution. This is worth doing of course because the PVRTC packed retina splash takes way less memory than an unpacked 1024x768 image.
You should be able to get down to a few megabytes.
EDIT: here’s what we used
Testure type advanced / POT to larger / PVRTC 4 bit (Best quality)
“mobile splash” - 320x480 (we are not supporting iPhone 3 but if we were this should actually probably be the 640x960 image to get decent quality)
“ipad portrait /retina” - 2048x1536
“5.5 /retina” - 640x960
“4.7 /retina” - 640x960
“4 /retina” - 640x1136
“3.5 /retina” - 640x960
The answer appears to be that it doesn’t matter. When you output to the Xcode folder, Unity then compresses those splash screen images using PNG, and they’re placed in a folder called Images.xcasset/LaunchImage.launchimage. Since it’s compressing to PNG as part of the export, I’d recommend keeping the images at full size and truecolor until that point.
I imported all my images into Unity as Truecolor, full size, non-power of two, and these are the final sizes that they were after PNG compression (see image):