Though I’m not a trainer developer, I’ll try and provide a bit of an explanation here.
Computer games use your computer’s memory to store data that is specific to the game which is playing. Such data might be:
- Level of player health
- Total primary weapon ammunition
- Total secondary weapon ammunition
- Amount of currency player has
- Current skill level of player’s endurance stat
- Current skill level of player’s intelligence stat
And so on and so on.
A trainer works by changing these specific memory addresses by injecting values/codes into them. But before it can do that, the trainer maker has to locate exactly where in the player’s memory such data is stored.
The location of this data can vary depending on:
- Version of the game
- DLCs added to the game
- Store where the game was purchased
- Re-designed versions of games to comply with regional laws (common in Germany, for example where references to Nazism are heavily edited out for legal reasons).
This is why there needs to sometimes be different trainers for the same game purchased from different stores, because the memory data for certain values, such as those listed above, are sometimes stored in completely different places. It can also explain why trainers can stop working when a game is updated - because the memory data location may have changed.
Sometimes a trainer for a game from Steam will also work on the same game purchased from, say, Epic Games - if the location of the memory data is stored in the same place on your computer for both game versions. But that’s not always the case or may sometimes just be half the case (as in only half the cheats will work).
The only way to know for sure if a trainer for a Steam game will also work on the same game from the Epic Games store (for example) is to try it, but don’t expect it to work, the chances of it working flawlessly is probably 50% or less.