PleasingFungus / Silicon-Zeroes

Issue repository for Silicon Zeroes. (Contains no actual code.)
12 stars 0 forks source link

Revalidate all puzzles #110

Closed mickael9 closed 7 years ago

mickael9 commented 7 years ago

Sometimes, a solution that used to work becomes no longer valid due to an update to the puzzle/game.

I personally started with the windows version running in Wine, then updated to the Linux version as it became available, and had to run it in steam and manually retest all puzzles to obtain the achievements.

Some puzzles were not valid anymore but still showed up as solved even though loading the "winning" solution and testing it failed.

So it would be nice to have a way to revalidate all "solved" puzzles (perhaps automatically at each update and with a manual trigger as well), so that they aren't considered as solved anymore.

Additionally, the steam achievements should be updated accordingly (I don't know if removing them is desirable/possible but adding missing ones for solved puzzles should be done)

PleasingFungus commented 7 years ago

I'm planning on cleaning up the invalidated puzzles in the next update - should've dealt with them in this one, but it was an oversight!

I'm definitely not removing any achievements, but missing ones for solved puzzles should already appear on game launch. Are there some that you're missing?

mickael9 commented 7 years ago

I just did a test and reset all my achievements (with ISteamUserStats::ResetAllStats(true)) and it seems they all came back the moment I solved the very first puzzle so I guess that part is fine (doesn't happen when launching or loading a profile though) :+1:

PleasingFungus commented 7 years ago

Hm, possibly the on-launch check is firing before the steam load callback returns? Not critical, anyway.

Thanks for checking!

mickael9 commented 7 years ago

I'm planning on cleaning up the invalidated puzzles in the next update - should've dealt with them in this one, but it was an oversight!

Sorry for asking so many questions, but does that mean this will manually invalidate all puzzles that could be affected by the update rather than resimulating all of them (such that the user would need to simulate them manually)? And if that's the case, how would importing an older profile that skipped the update be handled? (I'm guessing some kind of versioning would be needed here)

PleasingFungus commented 7 years ago

Probably manually invalidating with a need for manual resimulation, yes. It'd be possible to be more clever with this, but much more likely to be buggy.

There's already some versioning in the profile data, if I'm understanding you correctly... not sure I completely follow the second question.

In any case, no need to apologize for asking questions! :)

mickael9 commented 7 years ago

I was worried that an update would only invalidate the existing profiles at the time of the update but would not update a profile created with an older version that was later put into the profile directory. With versioning, it's easy to, upon loading the profile, invalidate puzzles based on the version of the game the profile was saved with.

PleasingFungus commented 7 years ago

Yeah. Unfortunately, the profile save version is independent of the game version, so I'm just going to have to nuke the records for the relevant puzzles for every profile created before the next update. C'est la vie...

PleasingFungus commented 7 years ago

This was done in 1.1.2.