Thanks for the files, most of them weren't parsing correctly, which is fixed now. When this goes into a release, I should probably add some sort of graceful handling for unexpected or out-of-order subrecords, rather than aborting with an error. But for the time being, this gets issues to my attention quickly which is good.
The more I decode the format, the more it convinces me we should have done this sooner... much sooner. Ideally before we started implementing our own save format.
In some instances, this reveals things we forgot to do.
In other instances, it reveals things we did better than the original does them... but in order to stay compatible, we'll have to implement the flawed solution anyway. And while doing so, maintain backwards compatibility with the existing OpenMW save files.
In (rare) instances, it reveals things we did
plain wrong and will have to redo them.
What's giving me a headache right now are the differences with the journal. Put simply, the vanilla files store the journal as one continuous HTML blob, with no meta information on the date of the entry, or the info ID that caused the entry. Obviously this will make filtering difficult, say we want add a date range filter to the GUI later.
Quest states are stored with the
quest name instead of the quest ID as identifier, which will conflict with our post-1.0 goals of making save files localization independent.
Another curious thing, the "seen responses" for a dialogue topic in the journal aren't actually stored verbatim, only the info ID. As result, if the dialogue response was "Hello %PCRank", the journal entry might change later to reflect changes in the player's rank, even if you haven't talked to that NPC since.
So now we're back to the original question - compromise on the quality of the save format, or compromise on having the importer require loading the ESM files, so that it can properly convert the data? This is a difficult one.