The thing is, the exporter/importer descripted in the attached file already exist, i want to expand on it.
What i mean by grouping is, you know, when your in studio max, you can group stuffs(meshs) together in a scene, and then group two or mores other groups together ect, like directory and file in windows explorer for example.
I know the file format seem a bit weird but, it's not that bad actually. im basically exporting mesh data in 3 groups, indexed data for curved stuffs, non-indexed data for blocky stuff (ie cubes), and studio max data required for the importer only. Having both indexed and non indexed vertices might seem like a weird choice at first, but it has it's use. I can choose which mode to use when loading them in my engine. I just made a compromise to use them both instead of only one in the file format, so i can use one code path when importing later, i kinda choosed more flexibility at the little cost of a bigger file size if you want. also, since the file format support compression internally, this is not a big problem.
The thing with cubes is, if your vertices are indexed, you can't use per face lighting, which look wierd, and you can't texture each face independently either, but a sphere for example don't usually require per-face lighthing and using the same texture uv on a sphere work usually well, but not a cube, that's why i export both way.
But, all this dosen't really matter for the question im asking, it's just to clarify the format i used.
Well, just do the math, a 32x32 24 bits texture only use 2208 bytes, while a 4096x4096 texture take about 50 mb, so, it scale up fast, not to mention video cutscene. Like others said, it's not the .exe that take this space, it's the amount of allocated memory to hold those assets, for example, using new and malloc in c++.