Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
the wiki has the details on compatibility for version prior to v50; see https://dwarffortresswiki.org/index.php/Save_compatibility
as a reminder: each version can load any save whose save version that is at least as large as its minimum load version and not larger than its own save version. the save version written into a save is the save version of the version of the game that is writing the save. it does not matter what version was used to create the game originally
50.14 and 50.13 are save version 2082. 50.05 through 50.12 were 2081, and 50.01 through 50.04 were 2080. the minimum load version for all v50 releases is 2047, which does not correspond to any known release of Dwarf Fortress and was presumably a development build that never escaped from bay12's proving grounds
51.01-beta22 and 51.01-beta21 are both save version 3005 with a minimum load version of 2047. i don't have data conveniently available for any other of the 51.01 beta builds. 51.01-beta22 is the current beta build
47.05 was save version 1716 with a minimum load version of 1443
toady generally does not indicate why he decides to bump the save version. in some cases we have determined what the reason was through analysis of the deserializing code in the the game (which will need to behave differently depending on the save version being loaded), but we only do this when it piques our interest to do so, and i don't think anyone has done it for the two version bumps in the v50 era (50.04→50.05 and 50.12→50.13)
to be able to do this, you'd have to extract the deserializers from an appropriate old version of DF, the serializers from the desired new version, and a transformer to translate the game data structures. for v47 to v50, this would be exceedingly difficult, due to the rather substantial changes in how civzones are implemented. not to mention that we haven't even identified all of the deserializers in 47.05 (we probably have about 60% of them tagged) or all the serializers in 50.14 (probably about 70%). and information on the meaning of internal game structures is still fragmentary, especially in older versions
Tarn has historically done a very good job of preserving save compatibility through upgrades. there's only been one save compatibility break from July 2014 to current, at the December 2022 release of v50.01. v47.05 (released January 2021) can load a save from any version from v40.03 (released July 2014) to v47.05. i think it's a safe bet that Tarn is doing everything he can to maintain upward save compatibility going forward, and i wouldn't be all that terribly surprised if v100, when it's ultimately released, will be able to load v50 saves
Just how many compatibility breaks have there been since 34?
Also, your motivation and drive, and your clarity through ,thoroughness and detail is outstanding, and I very much appreciate it :)
Can you share from memory, or link to notes on what causes these incompatibilities? Looking at the wiki I am only finding a simple note that the saves are not compatible with newer versions and no further elaboration, but I may be missing details or links elsewhere.
As a better half measure than merely quickfort, I am wondering and about to try copying old save world data or geology over a newer save. I am just getting familiar with the file lay out of saves and not sure how separate these portions are. This idea is of course less exact than a full update of the save correcting only the minor changes needed.
Not sure where you were looking on the wiki, but https://dwarffortresswiki.org/index.php/Version_history mentions save corruption in the cases of 0.34.02, 0.40.02, and 0.40.03. If you follow the links in that table, you'll find pages with the release notes from each version, e.g. https://dwarffortresswiki.org/index.php/v0.34:Release_information/0.34.02. Those are also on the old devlog: https://www.bay12games.com/dwarves/dev_2012.html for 0.34.02, https://www.bay12games.com/dwarves/dev_2014.html for 0.40.xx.
through some expirimentation, Ive learned saves will load if all the files are replaced or even deleted other than the world.sav, which appears to be the largest , and contains most of the save information. I after also found this https://dwarffortresswiki.org/index.php/User:Andux/Format_research/WORLD.SAV
I have the feeling you may already know all this :)
maybe worldsav is the created state, and the other files are changes to the starting state, but thats pure theory.
the file appears to not be in text format as some other files are, and perhaps the next step is to try and read and edit it with a dissembler or hex editor to see if anything recognizible can be seen and adjusted to the updated state. Another thought it maybe DFHack might have some tools that might be useful in that, Im not very familiar with it. Have either of you ever used it?
Is there a clear and full breakdown of how to fully and clearly see wahts in saves somewhere? That would be the easiest way to see whats going on and be able to figure out how to update saves. For all I know there is something equal to total wars save parser and I am totally unaware of it. :)
Developing a tool to read (or write) DF save files requires extensive reverse engineering which would have to be redone for each new save version. In general, we find it easier to let DF do the read, inspect the in-memory representation, and then let DF do the write, than to write our own readers and writers.
Deleting the unit and art offload files will not prevent the save from loading but it badly damages your save and will probably cause the game to crash eventually. (We also know exactly what those files are; your "pure theory" is not accurate.)
The two people you are talking to in this thread are two of DFHack's lead developers.
DF does have _some_ logic to recreate .dat files that go missing or get corrupted. Specifically, corrupted unit files used to be a common-enough cause of crashes that Toady added a feature that would attempt to rebuilt them from scratch if corruption was detected, as a last-ditch effort instead of refusing to load the save at all. Obviously this results in some data loss, because the data stored in those files is not stored elsewhere, but it only affects the units stored in the replaced files. As far as I know, this does not apply to the other .dat files (e.g. art images) - not sure that deleting those is safe. Also, replacing any .dat files with _valid_ files from another save would probably cause strange behavior at least, if not crashes.
This makes talking about things that are already as it, and talking about new possibilities to build off of that work much easier :)
The unit data I thought might be about living creatures and possible non living creatures everything that is physically in the world that is not the terrain.
Trying to think of a way to build and copy old data into the new data format of a newer save , to if not get something partly working, at least learn something about it, I had a thought while seeing "unit" files that the world sav may be the terrain of the world , and unit data being all the living creatures, copied onto a completely different terrain world would would cause a lot of units loading at.... wrong elevations :) ..... and... a lot of blood spattering , and other unforeseen effects.
I did not do so much as unpause it, and its quite possible, if not highly likely that game would immediately crash, if not .... exhibit some strange or potentially amusing behavior., it was really only testing for the sake of learning whats possible and how things are set up and work, and isolating what parts of the save are what.
I found https://dffd.bay12games.com/file.php?id=14727 here, which looks like it can decompress or otherwise somehow extract save data, its versions are limited but in a wide scale and that may help me learn what the art and unit files are. Though it sounds like you already know :)
That said, perhaps the easiest way particularly if the full state of game is known in ram while running, is to alter the game state in ram on the older versions of the game , "prebreak" , pause the game (probably makes thing easier) and alter the info in the ram into the state it would be in in the next compatibility break phase, copy that ram data , into the ram data of a process of the game running in that later phase, and have the newer post break version save it !
(This of course would require some generating for some things ,like if trees go from single to multi blocks, which could be perhaps done with some generating code :) maybe write a script to delete old trees, after saving their locations, and generate the root/trunk in the same place, the games already present tree generating code would be optimal, and match better the way it generates things of course .
Have you already tried or thought of this kind of approach? It would certainly make a huge difference is Tarn or Zach were to help. Have you tried asking Tarn and Zach (or I heard they have a new third helper?... putnam??? ) for help with this? Am I even thinking right in assuming youve tried to make save updating at all, or is that just me? I think my brain energy is going down now so if Im getting less concise and cohearent, please forgive me. Im going to just pause now.
Anything is possible with the virtual, with a wide range of circumstances and ease/difficulty.
Unfortunately, I doubt we would be interested in pursuing this approach, especially given the relatively few requests we've gotten for it over the years. I think most people who want to play saves from old versions just play those old versions.
Your explanation of what would be a practical is very of implementing this general concept is very logical and has informed me of at least the general idea of what is already known, and what is not known by the two ,(or more?) people who are probably the most informed and aware of DFs mechanics and design along with computer software and at least basic(and perhaps much more) architectural interaction, Ive learned a few new terms (and more importantly actual standards of use and practice ) myself such as data serialization and memory data structures and buckets.
I am unsure, but I think the DFHack tools can alter all world terrain (or most of it), and maybe create units, even better if details about those units are fully alterable, though the basics only would still be a huge gain over not having anything at all from earlier version saves.
This makes me wonder though about the remaining things that are not implemented into the new play session and save state, and if missing data that is not yet known and created/coped would create a critical crash, or have smaller ..... amusements.
I had simply assumed he didnt want to, and/or had introduced new mechanics that made that difficult like the tree mechanics.
Which again, makes me wonder, have you tried asking Tarn or Zach (or thier new co coder? putna---- ok I looked it up and here https://www.reddit.com/r/dwarffortress/comments/zst1ns/putnam_creator_of_the_dragon_ball_mod_among_other/ http://www.bay12forums.com/smf/index.php?topic=100799.0
word on the ... web is Tarn does all the coding and is not very open about his code for whatever reasons, however Putnam, a thorough mod maker himself may share an interest in helping to work on such a project or other collaborations with the DFhack team. There may of course be other interests and priorities , and thats a choice that is up to them , but here is hoping. :) If you have, when is the last time you tried talking to Tarn or anyone them about this?
EDIT: Thats disappointing to hear, I imagine many others feel the same way I do, and would like to see the new mechanics and other upgrades in their play session, how much do you think its worth working on with your personal point of view? Whats your level of interest in this?
Whatever the answer to this, youve given me a lot of helpful, relevant information, with a logical, honest, practical and communicate way, and thats very much appreciate , particularly in contrast to the negative, uninformative, or sometimes even condescending responses I was expecting and usually see when asking about anything that takes effort :)