Why you shouldn't use the load state feature
This text was previously entitled: "Issues when NOT playing in hardcore mode"
Some users like to use the save/load state feature to save their progress in a game. As you may know, this feature isn't allowed when playing with hardcore mode. But some users aren't hardcore gamers and prefer to keep hardcore mode disabled (let's call this mode as softcore).
From time to time some users report that an achievement isn't triggering, and when asked they say they were playing in softcore.
One thing you all have to keep in mind is:
If you use the load state feature expect to have issues of cheevos not triggering when they are expected to trigger.
Here we'll try to explain for those who don't know the details of achievements development why this kind of issue happen.
Basic concept behind an achievementlink
Technically an achievement is a group of conditions that must be met in a particular frame of the video game.
When you launch a game on an emulator with the RetroAchievements feature, the emulator is always checking if those conditions are met in the current frame. When all conditions for a particular achievement are met, it is awarded and the emulator stops checking the conditions for that achievement.
Examples of conditions:
- lifebar is full
- lifebar decreased
- have 9 lives
- currently on stage 3
- at the title screen of the game
- starting the boss fight
- the game is paused
The problem with the softcore is that when you load a saved state you can ruin the logic behind an achievement.
Example 1: Beat the game without passwordslink
Imagine a game with 5 stages and with the password feature.
Probably the conditions to trigger the "Beat the game without passwords" are (in a real cheevo there will be more conditions, but for this explanation let's consider only these ones):
- be at stage 1 (and memorize this event as something that happened)
- be at stage 2 (memorize it)
- be at stage 3 (memorize it)
- be at stage 4 (memorize it)
- be at stage 5 (memorize it)
- finish stage 5
So to get this achievement you have to pass through all stages and then beat the game.
When you are at the stage 1, the emulator memorizes it, same thing for all other stages. And when you finish the stage 5 (beat the game) you get the achievement.
Now imagine this scenario:
- a softcore player started the game and played stages 1, 2 and 3
- he needed to stop playing when at stage 4 and then he saved a state to continue later
- he closed the emulator
- later he could play again, started the game and loaded the state he saved
- played stages 4, 5 and beated the game
In this scenario the achievement won't trigger.
After closing the emulator it "forgets" that you passed through stages 1, 2 and 3. When you run the emulator/game again and load the state being on stage 4, the emulator won't detect that you passed through the previous stages. Then the achievement won't trigger.
Example 2: Defeat boss X without taking damagelink
Most likely the conditions to be met in a frame to make this achievement trigger are:
- entered the boss room (and memorize this event as something that happened).
- if take any damage, forget it entered the boss room.
- beat the boss.
In other words: to get this achievement the emulator must "know" that you entered the boss room, didn't get any damage, and beated the boss.
The important detail to pay attention here: when you get any damage, the emulator "forgets" that you entered the boss room. Then even if you load a state to a point where you didn't get any damage but already entered the room, the emulator won't detect that you entered the room. And then the achievement won't trigger.
When reporting a broken achievement give as many details as possible, and don't forget to mention if you are playing on hardcore mode or not.
If you want to request an admin to manually award to you an achievement that didn't triggered, be sure to provide a qualified proof. Specially for achievements like those in the examples above (no damage, no passwords, no death, etc).