I've experimented with a few small game engines over the past few years and usually I end up keeping models separate as a .dae or similar file, then designing a scene file format and hand-writing the structure of my scene (flattening the scene hierarchy into a single mesh when loading). Mind you, I'm no professional - I only do this for fun - but the way I see it, this lets me reduce redundancy by keeping models common across multiple scenes in one separate file, and allows me to specify attributes specific to my engine (e.g. the entity type, materials, textures) in a non-hackish way.

But I've recently been noticing a lot of engines forego this, and instead keep the whole scene, including all models, as one file. So that's got me wondering - why would they do this? It seems convenient to lay out my scene and meshes specific to one level from my modelling application, sure, but it seems like it'd result in plenty of duplicate material and model data across levels. I like the hybrid approach taken by engines such as Source, where some scene-specific meshes can be made right within the level editor, though as a hobbyist developer working alone this is a little out of my reach.

Are my priorities wrong here? What would you do?

  • \$\begingroup\$ Probably just for convenience. You might notice that lots of games are really really big. \$\endgroup\$ – user253751 Feb 28 at 18:00