RetroAchievements / RetroAchievements/RAIntegration

Delta issue when loading save states

Open
#992 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
124
Forks
34
Avg merge
5d 18h
Merged PRs (30d)
13

Description

I've noticed this quite a few times whilst developing achievements, however when you load a save state, if the achievement has a delta condition, the delta check will compare the state of the game on the frame the state is loaded against the state of the game prior to loading the save state.
Because of this, it's possible to incorrectly trigger conditions within an achievement due to the different states of the memory before and after loading a save state.

One example would be if you made a save state during a damageless boss fight attempt, healed yourself, then loaded the save state, the achievement would then pause lock because it detects your health decreasing from the state before loading the save state to after.

The only solution I've found for this whilst testing my own achievements is to load a save state twice in a row.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or entry points are named in the issue. Reproduce the problem by loading a save state after changing health during an achievement attempt, then trace the delta-condition check across the save-state load boundary. Done means loading a state no longer compares it with the pre-load game state or incorrectly triggers the condition.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.