I've got a friend I've made on Twitter who has an unusual conundrum with one of my games, and I just cannot figure out what is up with her problem.
The game is The Nine Lives of Nim: Fortune's Fool. This person has played it, unlocked all the achievements, and then updated the game when I released the voice acting update to find that all her achievements are gone in the game's internal achievements record. Steam still has them unlocked though.
BUT, to complicate matters, the galleries in the game are still all filled in!
I'm very confused. I was under the impression that the Achievements API uses persistent data. The only difference I can see in how I programmed my achievements screen and my gallery screen is that the gallery is looking at persistent image unlock variables, and my achievements index is looking at achievement.has. How can one be unlocked, but the other suddenly be locked after an update?
Now, there are a few more complicating factors that I have gleaned from talking to her.
1) It seems another non-Ren'py game is having the same problem for her, internal achievements are showing as locked but Steam says she has them. I asked if she wiped her caches or anything, she can't remember doing so. She's playing on the same machine as before.
2) The game did have a name/branding change after initial release. She unlocked everything before the name change in November last year. I have no idea if this would have any impact. I didn't change any code around the gallery or achievements areas in any of the updates (art upgrade and name change November last year, voice acting update last month).
Does anyone have any ideas? I've tried a bunch of hypotheticals but nothing is working for me. achievements.sync() and achievements.Sync() don't seem to make a difference. Very strange!!
(P.S. I am totally expecting the answer to be something that is going to make me kick myself