Skip to content

Achievements: Preserve hardcore mode when toggling encore/spectator/unofficial settings#3661

Merged
stenzek merged 1 commit intostenzek:masterfrom
mariobob:save-hardcore-mode
Dec 17, 2025
Merged

Achievements: Preserve hardcore mode when toggling encore/spectator/unofficial settings#3661
stenzek merged 1 commit intostenzek:masterfrom
mariobob:save-hardcore-mode

Conversation

@mariobob
Copy link
Contributor

Toggling "Enable Encore Mode", "Enable Spectator Mode", or "Test Unofficial Achievements" while a game is running no longer disables hardcore mode.

Problem

Previously, changing any of these three settings during gameplay would trigger a full Shutdown() + Initialize() cycle, which disabled hardcore mode until the game was reset.

This change allows players to toggle these options mid-session without losing hardcore mode.

Solution

Instead of destroying and recreating the rc_client, we can reload the game achievement state by calling ClearGameInfo() + BeginLoadGame(). This unloads and reloads the game on the existing client, preserving the hardcore mode state while still properly applying the settings changes (e.g., Encore Mode correctly resets achievement unlock states and can be done multiple times in a session).

Screenshots

Before After
hardcore-disabled hardcore-enabled

@stenzek
Copy link
Owner

stenzek commented Dec 17, 2025

Probably should save/restore the cheevo state, but eh, whatever.. not like this is being toggled often.

@stenzek stenzek merged commit bc72d58 into stenzek:master Dec 17, 2025
9 checks passed
@mariobob mariobob deleted the save-hardcore-mode branch December 17, 2025 08:58
@mariobob
Copy link
Contributor Author

@stenzek almost forgot about that. I'd really like this to work properly, so I've added save/restore state here: #3663

It will allow players to re-earn the same achievements multiple times in a single session if they want to, without resetting achievement/leaderboard progress. (probably won't be used often, but I'd like to use it :P)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants