Attnam / ivan

Iter Vehemens ad Necem - a continuation of the graphical roguelike by members of http://attnam.com
GNU General Public License v2.0
303 stars 42 forks source link

Autosave bug in 0.53 #487

Open ryfactor opened 6 years ago

ryfactor commented 6 years ago

@AquariusPower, here's one from the forum: https://attnam.com/topics/Autosaves

Any ideas?

AquariusPower commented 6 years ago

interesting!

The presence of .bkp files is 100% related to the "windows blue screens", it means he was not able to save and return to the main menu successfully (btw, if there were .tmp files means something wrong happened during the game being saved and would be more problematic).

"Player not found" means:

TODO the flow above could be improved: the current dungeon level, with player at the dungeon exit square should be saved with the player STILL present on the dungeon level, and a .bkp file be created AFTER that, because between the last .bkp and trying to exit the dungeon level, happened things that would be lost if the AutoSave functionality didnt happen in between, but I think this may be just a minor improvement (not sure tho).

ok, if he manage to upload the compressed savegame it will help but I guess it will still be a big upload. ( The ".sav" files isolated would help already to determine what is the current dungeon file. After that, uploading only such dungeon files, including the bkp one, would be enough to analyze the missing player problem. all compressed .7z.zip preferably xD )

I think ivan 0.53 is quite old code related to fixing such problem. Apparently providing "restore backup" option didnt kick-in automatically at that time. So I guess, it may be on the config menu, not sure tho, I dont remember well how it was activated...

Also, if he wants to try manually fixing it, he can (backup all savegame files first, and then...) rename all .bkp files removing ".bkp" from them, and try to load the game again, the player will probably still exist in one of them! Unfortunalely this is not so simple to recover the savegame correctly, see below :/

now, thinking better, the game should NOT keep so many backup files... when a dungeon is saved, just before doing it a backup is created to the current dungeon level. But the moment the player moves to another dungeon level, the previous dungeon level .bkp file will still be there and will be outdated relatively to the normal file (the non .bkp one) that was already correctly saved, therefore such dungeon level .bkp outdated file is not needed anymore. When recovering automatically (now at v0.54) there is no problem, outdated .bkp files will be discarded/ignored (TODO confirming this is 100% correct would be good). But manually, this means that "rename all .bkp files removing '.bkp' from them" will just provide a messed outdated game to all dungeon levels other then the current one :( The only way to properly manually recover the game would be to know what is the current dungeon file from the .sav file. A screenshot of the savegame list showing what is the current dungeon could hint me on providing a proper manual recovering instruction (probably discarding all .bkp files but the current dungeon one that would overwrite the normal one), but I dont remember if v0.53 has such feature (to show the current dungeon on the list)!

There are many files saved at 10:32 PM (the newest save time), the seconds (even miliseconds) would help more tho... So, the current dungeon stored at .sav file is or id=11 or id=12. Sorting that file list on windows explorer by time could hint the correct one if windows explorer considers seconds/milis on the sorting, if not it may still be wrong...

When you discover the correct one do this:

But.. it will be even better if he install v0.54 and manage to successfully import the old save (because of all new features and fixes including about recovering from lost/dup player), but that is not granted at all, so initially putting effort on trying to manually recover still at v0.53 is more granted to work.

PS.: anyone feel free to post a shorter reply summarizing this bloated comment I did if it helps :)