gemrb/gemrb

META: Ensure save game compatibility for all games

Open

#1,404 opened on Aug 3, 2021

View on GitHub
 (8 comments) (0 reactions) (0 assignees)C++ (214 forks)auto 404
bugcompatibilitygame: bg1game: bg2game: iwd1game: iwd2game: pstgood first issueresearch needed

Repository metrics

Stars
 (1,214 stars)
PR merge metrics
 (PR metrics pending)

Description

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

[!NOTE] What is needed now is just testing if GemRB saves load in the original.

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
  • bg2ee

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
  • bg2ee

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. DONE

Contributor guide