200 000 Sprites take up too much space

By my estimations, my Game for mobile is going to have around 200 000 sprites.
Like 90% of them will be player/enemy sprites (512x512) with a lot of different animations.
Considering that each png is about 100-120kb in size, it is a bit ridiculous, having a 2d game which has 20Gb.
I don’t know the ratio of a compressed build, but I assume it most certainly won’t be around 1-2 Gb (which I’ve been assuming) after that.

I already use 100% png compression.
I also don’t think I could go lower than 512 resolution.

My questions are: Is it actually normal to have such a huge size of a prebuilt game? How will 20Gb translate after being built? If I pack them as sprite-sheets, will it help with the size?
How do you go around that kind of issue?

How exactly are you coming up with 200,000 sprites? And why the need for 512x512? Both numbers seem rather out of whack for me.

It is not a pixel art style and if I lower the resolution to let’s say twice as that, the image becomes too pixelated. I could go a bit lower, like 400x400… is it still going to be a power of 2 principle in regards to unity?

Okay, but why 200,000?

The big amount of different enemies that will have more than one sprite animation (idle, few attacks, block, hurt, death, run). Summing all up it will be roughly 200k of those images.

I think your first problem will be creating 200,000 sprites.

maybe you need to approach your game another way. Can you rig your sprites and animate them using 2D rigged animation instead?

how much time you using unity???

I will drastically reduce the amount of the individual sprites, of course, but the characters in my game run up and down, which cant by animated using 2D rigged animation. (I don’t want them play the side animation while moving up or down)

Or 3D and render in a way to fake a 2D look you’re after?

either draw by hand or use 3d rendering software will be the solutions to imitate up and down movement, so I have yet to decide. Either way, a character in a 512x512 res. is roughly 150kb and in Unity 250kb.
So before starting to draw, I did some calculations based on what I want in the game.

If I have a folder with all the sprites in it, that is, let’s say, 5gb big. How big is this folder going to be after being built with standard compression? Approximately?

I don’t think you understood me.

why not use a 3D character in your game and some clever camera and rendering tricks to make it look 2D.

no sprites needed, just an animated 3D character. It’ll be way way easier.

And to answer your question. I can’t say. It depends on your art and how well it compresses. In my experience crunch compression is amazing and makes things very small, but it doesn’t always work well and leaves some bad artefacts in some cases.

Oh, yeah, I missed that thought.
I was thinking about that, but the only reason I don’t want to use 3d models in my game is that I want to have an outline around the silhouette. Which is pretty hard to achieve in unity, and I thought it would be easier to make it work without 3d meshes.

if you really need 200k sprites and if they really are 120kb, the game will unavoidably take 24gb disk space

But even if this is so, is it really a problem nowadays? Every game has huge file sizes, 50gb is the norm and the largest is call of duty which takes 190gb, if people want to play your game its not the file size that will stop them.
Nowadays everyone has a lot of hard drive space.

Now if you want a strategy to decrease your sprite count you would need to provide more information on how exactly are you using the 200k sprites.

You obviously can’t have them all loaded at the same time ( this would need 20gb ram, which contrary to the hard drive space is prohibitive to the extreme), so you can devise some strategy to only include in the build the information needed to create/download the sprites needed:

Enemy 1 is onscreen, you need his sprites, generate/download them, when you’re done with him delete the sprites.

outlines aren’t that hard to achieve. There are assets in the store and tutorials online for the Scriptable Render Pipeline to achieve them. I use them in my game.

it’ll be a lot easier than wrangling 200,000 sprites even without considering the memory footprint, on disk and in video ram, just the volume of that many assets will not make the project easy.

it will always be easier to solve a technical challenge once that makes all asset creation and management easier than it is to avoid that technical challenge and instead make asset creation and management harder for the rest of the project.

You are probably right, thank you for your answering, I will look into that!

I wouldn’t mind the disk size if it was designed for pc, but I plan to develop my game for android and/or ios. So being under 3gb is my aim.
And of course, some of all the sprites will be enabled once the user of those sprites comes up in the scene. They definitely won’t be active all at once:)

then this is easy for you, dont include the sprites in the build and use UnityWebRequest to download only the sprites that user needs

at that point could use asset bundles to load, but even then it sounds like need to rethink the system,
is there any game, even for desktop, that has so many sprites?

maybe can assemble sprites from re-usable parts,
use shaders to create different color versions/color tints (instead of separate sprites) etc.

The only games i can think of with exceptional 2D animated art are:
Ori and the blind forest
Rayman legends

i would investigate how they achieved it.

but i still think 3D and rigged 2D wherever possible will work best.

i make small mobile games. Major Mayhem 2 is 80MBs but looks like it should be several hundred. 3D, animation and geometry are your friends