Flatbuffers are great. I am using them for my persisted data, for passing buffers between native and managed libraries and for my resource caches. You can have it spit out a .json file if you like to have a text file to read and edit, but its flat nature offers a ton of benefits. Not a lot of work remaining in that part for me, but I am a bit anal about getting the design right.
I am a big fan of compact data, minimal work and simplistic designs.
A simple solution can be time consuming to create, and a complicated solution can be very easy to build. Most software these days, especially games, follow the latter path. It is so easy to just mash out demos in a haste fashion, make the screen sparkle, and create something that might be a promising application, but to actually ensure that the whole application performs and scales, could be “easy” if you plan ahead and dig for the groundwork, but it can be deadly to try and fix it afterwards.