Two main ways of optimizing size are picking a better way to lay out the data and compressing it.
For laying out the data, imagine filling a box with various items. If you throw things in without thinking, you’ll have a lot of empty space in between items. If you carefully plan where each item goes, you can fill the box more tightly and thus use up less of it’s space. This method works well with small data that you want to pack very tightly, but does not do as much once you start dealing with large data such as high-quality textures for video games.
The other main way is to compress what you’re trying to store. The real world analogy is seeing the difference in size between a balloon before and after it is inflated. When you want to use the balloon/data, you need to inflate it first. This means you are trading off some time spent inflating the balloon/data to it’s proper form in exchange for a smaller balloon/data size.
For a game to optimize it’s size, more time can be spent on the compression and layout of the data of the game.
Latest Answers