10
\$\begingroup\$

Say I have an achievement in my game, "Collect your first thingamajig", and I publish this to the live version of the game without a progress stat. Later on I decide I want to add some new achievements in an update, including one based on the previous achievement: "Collect 10 thingamajigs".

I create a progress stat for this one which is updated in code, but I also edit the original achievement so that it's unlocked through the progress stat rather than an AwardFirstThingamajigAchievement() function in code.

What are the consequences of this? Will a player that already had this unlocked find the achievement has been relocked because the achievement has been edited, technically making it a new one? Will it remain unlocked, but still cause a little popup for the first achievement on the next Thingamajig collected? Or will Steam simply not touch already unlocked achievements?

\$\endgroup\$
  • \$\begingroup\$ I would assume renaming the achievement will cause it to stay unlocked for those who earned it. Removing the achievement to replace it with a new one should do the opposite. \$\endgroup\$ – Rudey Nov 23 '17 at 22:51
1
\$\begingroup\$

From what I remember about the Steam API you can set/reset the players progress through the steam API manually which allows you to solve the problem in multiple ways.

As long as the achievement identifiers in the backend reflect the values in your code you should be fine and the new achievement should reflect the already achieved progress in the old stat.

if you want to migrate the already running achievement to new type you can "deprecate it".

  • Make the old one "hidden" and remove the game code that updates the value.
  • Create new achievement in the steam backend
  • Create a game code that will take the players value from the old achievement and save it to new one plus will set the old value to 0.

I think you get my point here. This approach has some ups and downs but is pretty safe and will probably cause the popup. But I'm more or less sure that you can set the achievement value without causing the popup.

On the other hand I don't think that steam will wipe the players data if you change the original achievement to "progressable". It is is just a flag that makes the progress bar popup and even if you change the max value or modify the achievement in other way it still shoud keep the already existing data. So just do it and observe!

If you don't want to take the risk do a little experiment. If you are taking the steam deployment seriously you should have a testApp ID anyway.

Hope this helps!

| improve this answer | |
\$\endgroup\$
-1
\$\begingroup\$

I'm not familiar with how steam handles things (yet to publish there) but I would assume that any player that has unlocked an achievement already would keep the achievement. This is because achievements are not like bool variables that are switched on and off. An achievement will be registered on the steam server as having been achieved. Therefore, any additional progress made after that, regardless of any changes to the code shouldn't matter. This way, even if I deleted the game, my achievement would still be there. If Steam didn't do this (i.e. the achievement would have to be reunlocked when you change the code), the achievement would also be gone when you redownloaded the game- as all local data about the acheivement conditions would have been deleted. However, steam keeps the client unaware of the Servers computation of achievements, so that a fresh client running for the same user can keep acheivements.

Hope this helps.

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.