META: Ensure save game compatibility for all games
Usually early-game saves made in gemrb load fine in the originals, while later we often cause crashes. Historically it has been for a number of reasons including not writing everything back, not writing something specific back (like expecting some unused field to be 0), case differences, new variables (pst) and sometimes even the order of the sections (#359 is an example). And sometimes the bad state is only visible ingame, where the actionbar might be foobared, search map corrupted and so on.
Instructions with two approaches are on the site: https://gemrb.org/Dev-docs.html#save-game-compatibility
The first goal is to check what our current status is with saves right after character generation:
- [ ] bg1
- [ ] bg2:soa
- [ ] bg2:tob
- [ ] iwd1
- [ ] iwd1:how
- [ ] iwd2
- [ ] pst
While the real goal is to be able to load any game. A good test case would be loading an end-game save:
- [ ] bg1
- [ ] bg2:soa
- [ ] bg2:tob
- [ ] iwd1
- [ ] iwd1:how
- [ ] iwd2 (as far as we support it)
- [ ] pst
Open new bugs for actual items, this one is to track overall progress.
And once we have a better understanding, maintaining compatibility can be added to release criteria. Unlike, but also if we ever managed to create bit-exact saves, then we could automatically test this on the bots by resaving a provided game and comparing to the input.
PST new game save doesn't load.
~~Hm, creating a new IWD2 game in GemRB makes the original game freeze on loading. And by freezing I mean I haven't seen a modern Windows fail so hard in a while that it may freeze as well and become unresponsive.~~
Fixed.
iwd2 will need the new spell focus feat effect moved lower, replacing some noop in the original. Now we crash on load, since the opcode number is too high.
PST new game save doesn't load.
Yeah, this one damn variable leaks into the savegame again.
~~Reproducibly making original BG2 hang: https://github.com/gemrb/gemrb/issues/2125~~ fixed