I'm no game dev so I definitely don't have any sort of comprehension of how things with Unity work, but I have to imagine there's gottta *some* way to 'optimize' things?
Yes, that goes without saying. I've certainly been unhappy with build sizes of some Unity projects I've worked on, but nothing like what is happening here. Way outside of normal for Unity.
Some things to check:
-Textures are most likely larger than they need to be, and this is also likely affecting performance. They may be uncompressed. Not talking about the physical files in your project, but the texture import settings for each file (eg. "max size" and "format"). At the least, something (or things, most likely) are affecting performance rather dramatically. To be fully honest, even though a 16 GB build kind of sucks in and of itself, unless you're hurting for HDD space or trying to port to a more limited platform it doesn't matter much. I'd be significantly more worried that whatever is inflating my build size might also be contributing to poor performance.
-Similar thing for sound file import settings, but I doubt this would be the main culprit.
-I'm assuming none of your animations use one image per frame, but if they do, that can add up very quickly.
-I'm also assuming that none of your scenes are overly huge, although it is possible for garbage to accumulate in scenes. It also might be possible that you have, say, disabled GameObjects somewhere that reference unused assets so that those assets cannot be stripped.
-Are you including any scenes in your build that you don't need to? That would also cause otherwise unused assets to not be stripped.
-One thing to check is if some textures are non-power of 2, in which case depending on settings and context Unity may scale them behind the scenes to the next highest power of 2 resolution.
-If color variations on items are separate textures, and it seems that there are many variations, recoloring could be handled with a shader instead. It's technically possible to do this with only one texture, but imho the best way is to have a base texture and a "color map," where you use the red, green, blue, (and, if you really need four different color regions, because it's a bitch to work with, alpha) channels on the color map to create regions that can be recolored. Pretty straightforward to make this in shadergraph.
-If not done already, can try building with LZ4HC compression.
-You may have some unused built-in packages that you can remove. Just because you do not use these does not mean that they are stripped.
-Ditto for anything in your Resources folder.