syntax-tm / SteamAchievementManager

Steam Achievement Manager
zlib License
149 stars 4 forks source link

issue with baldur's gate 3 #16

Closed jackwaecow closed 7 months ago

jackwaecow commented 7 months ago

image

syntax-tm commented 7 months ago

Can you share the log for that exception? There should be one in the /logs/errors.txt. My guess is that it's maybe protected but non-achievement user stats are rare and protected user stats are even more rare (I can't think of any off the top of my head).

I don't own Baldur's Gate 3 so I can't check it myself but I verified that stat save is working for me.

jackwaecow commented 7 months ago

2024-03-17 09:44:09,600 [1] FATAL App [(null)] - No app ID argument was supplied. Application will now exit... 2024-03-17 09:44:43,239 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest09_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest09STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153 2024-03-17 09:45:49,488 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest09_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest09STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153 2024-03-17 09:45:53,332 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest09_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest09STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153 2024-03-17 09:46:41,000 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest10_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest10STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153 2024-03-17 09:50:18,574 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest09_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest09STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153 2024-03-17 09:50:43,175 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest09_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest09STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153 2024-03-17 09:50:45,836 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest09_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest09STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153 2024-03-17 11:58:06,130 [1] FATAL App [(null)] - No app ID argument was supplied. Application will now exit... 2024-03-17 20:33:37,921 [1] FATAL App [(null)] - No app ID argument was supplied. Application will now exit... 2024-03-17 20:35:05,861 [1] FATAL App [(null)] - No app ID argument was supplied. Application will now exit... 2024-03-17 20:53:19,945 [1] FATAL App [(null)] - No app ID argument was supplied. Application will now exit... 2024-03-17 20:54:01,135 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest09_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest09STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153 2024-03-17 21:43:27,950 [1] FATAL App [(null)] - No app ID argument was supplied. Application will now exit...

syntax-tm commented 7 months ago

Did some more testing and was able to get (hopefully) that error when saving a stat. In my case, I was setting trying to save 99 to 98 and got the Failed to update Integer stat XXXXXX error.

I checked and saw that the stat definition had incrementOnly set to true but that wasn't reflected in the UI (the grid in SAM.Manager). This has been fixed and the changes can be viewed here:

dfed13100a7e23a67a8cec846b596a294a5fe235

If you want to test this you can download the build artifact here (click the SAM link in the Artifacts section).

Note that this will only fix the "Increment Only" column not displaying properly.

image

Ideally validation should be done upon editing and if any errors are present they should be highlighted and prevent you from saving. So, I created an issue to track adding (actual) validation for incrementOnly.

17

jackwaecow commented 7 months ago

image 2024-03-19 01:58:43,580 [1] FATAL App [(null)] - No app ID argument was supplied. Application will now exit... 2024-03-19 01:59:10,849 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest09_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest09STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153 2024-03-19 01:59:19,658 [1] ERROR SteamGameViewModel [(null)] - An error occurred attempting to save stats. Failed to update Integer stat BG3_Quest09_STAT. SAM.Core.SAMException: Failed to update Integer stat BG3_Quest09STAT. at SAM.Core.ViewModels.SteamGameViewModel.SaveStats() in //src/SAM.Core/ViewModels/SteamGameViewModel.cs:line 153

jackwaecow commented 7 months ago

you are right, it can only increase but not decrease

syntax-tm commented 7 months ago

Yeah, I never noticed it so I must have always incremented when testing that and didn't know it wasn't showing properly. When I tested it earlier I just incremented the first stat value in L4D and then I went to test it again and tried to undo that earlier save and that's when I got the error and noticed that wasn't set properly in the UI.

I'll eventually add nice validation and stuff so to make this more obvious sometime in the future.


In the meantime, if you really want to reset the stat, I'm 90-ish percent sure that you can use the Steam console's reset_all_stats function.

If you've never used the Steam console, the easiest way is to open the Windows Run dialog (Win + R) and then type steam://open/console.

Click "OK" and Steam should open the Console tab.

image

Here you can type reset_all_stats <appid> and press Enter and you should see reset_all_stats success for appid <appid>. In your case, Baldur's Gate 3's appid is 1086940 so you would enter:

reset_all_stats 1086940

[!NOTE]
You will need to have the app installed in order to be able to reset the stats.

jackwaecow commented 7 months ago

steam console method actually doesn't work either image

syntax-tm commented 7 months ago

Found this which might help, seems like it would.

Hi i just created account just for help people suffering from this issue, i found solution myself after many years.First you need to turn auto updates off and also steam cloud sync from steam settings, then install and launch that specific game.After you install,you need to just press new game then save that game and turn on cloud sync again.Then you can reset all progress including bugged ones with reset_all_stats in steam console.For how to open and use steam console, search internet. Your welcome.

jackwaecow commented 7 months ago

it didn't help, still doesn't work

syntax-tm commented 7 months ago

@jackwaecow i'll buy the game and see what i can do. i think it's just the order of operations that's the issue. basically, if the stats or your save used to generate those stats are still available then the reset won't be permanent.

I just tested this with Left 4 Dead to make sure it works but here's the full order of operations:

  1. Launch Steam
  2. Install game
  3. Turn off auto updates
  4. Turn off Steam cloud sync
  5. Open Steam console
    • Press Win + R
    • Type steam://open/console
    • Click OK
  6. Run reset_all_stats <id>
    • Where <id> is the app's id
  7. Play game
    • Get to a point where you can save the game
  8. Exit game
  9. Enable Steam cloud

If you load any of your previous save data then you're likely going to immediately unlock all of your previous achievements along with your stats being restored as well. The key to making it persist is just having your local data, which you have reset, be newer than what's in the cloud so when you re-enable Steam cloud it overwrites the cloud data with your (reset) local data.