For images:
I think if you are manually enabling PSNR optimizations you are way over thinking things.
PSNR optimizations are old school and an outdated methodology. The default psychovisual tuned settings are best for most situations. Applying a good quality de-noising filter can help reduce size without resulting in terrible blocking artifacts. Just go very light on the filtering otherwise the image will become too blurry.
Yeah, I just noticed that PSNR gave me a better fidelity and more consistent files sizes when doing a few test runs, but I obviously didn't test enough. It mangled lower-contrast images.
use cwebp.exe, as that is newer and has more quality tuning options(the [-af, -m 6, -alpha_q 80] switches can save an additional 10-15%). You can't use cwebp to convert webp-to-webp directly because it mangles transparency.
I am using cwebp already, with -m 6, -af and -sns, and I want to experiment with -pre and -hint to see if it'll do even better. I didn't bother with -alpha_q cause 99% of my images are opaque, but I guess it won't hurt.
For Video:
Please try using VP9 for video; you will get both higher quality and smaller size.
I've had horrible time with VP9 on just slightly older Android devices
Like, mostly smooth playback with VP8, and one frame per 2 or 3 seconds on VP9. I don't know, I'll see what I can do.
For Audio:
You can save about 50MB by converting to OPUS audio. I recomend a bit rate in the 48-64kb/s range.
Ooh, yes, you're right, thanks. I totally forgot that some (most?) of my music tracks are 320kbps for no good reason.
I look forward to my builds being made redundant.
Will do my best
It doesn't happen very often for me, but it is literally the only game I've seen it happen in. There must be something you're doing differently.
Well, I know for sure that many games store animations as frame sequences, literally. If other RenPy games with non-fullscreen webm movies don't do that, then I'm at a loss. SDK version, the way I switch clips (which is a simple
call
to a sub-label), who knows. There's only one way to init videos in RenPy, and it doesn't really accept any flags or anything besides "loop or no loop".