So this thing has been happening a lot lately as I observe game developers talk about data. They have multiple phases to how data is dealt with, namely:
- Data when it must be written to (designed)
- Data when it is being read (played)
And they treat the data in very different ways. During the design phase, data is expressly flexible and transformable. Store it in XML? Dynamically allocate all the things? Objects whose properties can be discovered at runtime? All acceptable ideas, because efficiency isn't the /point/ during this phase.
But in the transition from design phase to play phase will traditionally have a baking step, wherein the data as designed is turned into a very efficient (and mechanically simple) representation. What was once a 2MB XML file is now a 200kb packed binary representation that can be mmap'd and read directly from structs.
The efficiency in this case isn't the thing I'm interested in, however. It's the guarantee of representation and the understanding that data as it enters