[Ohrrpgce] Achievement implementations

Mike Caron caron.mike at outlook.com
Thu Oct 28 09:15:15 PDT 2021


It definitely supports all those things, except for the automatic reward part. Unless I’m missing it in their documentation:

https://partner.steamgames.com/doc/features/achievements#4

These points in particular:

  *   For achievements that have progress bars use ISteamUserStats::IndicateAchievementProgress at significant points to show a pop-up with the progress. For instance, if you need 20 wins you may want to call this at 10 wins to show that the user has made it halfway.
  *   Whenever one or more achievements are unlocked, call ISteamUserStats::SetAchievement for each unlocked achievement and then ISteamUserStats::StoreStats to immediately upload them. Your game will see a ISteamUserStats::UserStatsStored_t callback, plus one ISteamUserStats::UserAchievementStored_t callback for each unlocked achievement. The Steam Game Overlay will display a notification panel to the user.

It does appear that you could use these stats to persist between saves, but we could do that already anyway, and I think a major goal is to be portable, even if the user doesn’t have Steam, so I think it makes more sense to keep track ourselves. If the stats are visible in Steam (which, if they are, then I’m not sure where), the we might want to try and sync them, but that’s a bigger deal, and maybe something we do later.

(Also hi Simon!)

--
Mike Caron

From: Simon Bradley<mailto:neworiginal at gmail.com>
Sent: October 28, 2021 12:01
To: ohrrpgce at lists.motherhamster.org<mailto:ohrrpgce at lists.motherhamster.org>
Subject: Re: [Ohrrpgce] Achievement implementations

I thought Steam had a system where you could update user statistics on Stream and it could automatically award achievements when they reach a specific value? I might be imagining that, or getting it confused with some other achievement system. I don't know if you'd need to save anything locally for cross-save counters, I think you could just increment a count on steam.

On Thu, 28 Oct 2021 at 15:08, Mike Caron <caron.mike at outlook.com<mailto:caron.mike at outlook.com>> wrote:
​The tag_updates function is the place to put hooks for when a tag changes.
I assumed there might be a place like that. Thanks!

If achievements are displayed through steam, how does this work? You
can cause Steam to popup a progress notification with text of your
choice? Or does it have to be numerical, or predefined in Steam's
achievement editor?
​You can just tell it to display progress whenever you want, I believe. I was thinking that we would just do this whenever "value % interval == 0".

What about achievements that can be progressed towards in separate
saved games? The example you put on the wiki of finding all the ways
to die is one where progress needs to be shared rather than
save-specific.
​I was envisioning a game where these deaths were not game-over-and-reloading-your-last-save inducing, but I suppose that's not clear. I am not sure how we might want to handle cross-save achievements. Part of me wants to not handle it at all and let game creators do that themselves (if or when custom IO is a thing), but it also wouldn't be Too​ hard to add it now either. On the third hand, I suspect this is a rather more niche feature, so maybe we can just punt the issue down the road a bit.

Creating an editor for RELOAD-based data is not yet simple, but I'm
going to make a start on generalising the Purchases editor (most
likely) into a class for defining editable RELOAD trees.
Neat. I haven't actually looked too hard into what editors look like these days so I'm not sure how bad "not yet simple" is, but if there's anything I can do to help, please let me know.

Pleased that documentation already exists on the wiki, documenting
everything is a big task!
​If I had to pick one lesson that I've learned over the years, it's that documenting things first makes implementation easier. It's keeping that documentation up to date that is the challenge 😄


From: Ohrrpgce <ohrrpgce-bounces at lists.motherhamster.org<mailto:ohrrpgce-bounces at lists.motherhamster.org>> on behalf of Ralph Versteegen <teeemcee at gmail.com<mailto:teeemcee at gmail.com>>
Sent: October 28, 2021 6:24 AM
To: ohrrpgce <ohrrpgce at lists.motherhamster.org<mailto:ohrrpgce at lists.motherhamster.org>>
Subject: Re: [Ohrrpgce] Achievement implementations

This is going quick!

The permanent data storage you're looking for is
https://rpg.hamsterrepublic.com/ohrrpgce/Persist.reld

The tag_updates function is the place to put hooks for when a tag changes.

> A game may wish to expose the current progress at intervals ("defeat 100 goblins: 20/100") to motivate the player to continue progresing the achievement.

If achievements are displayed through steam, how does this work? You
can cause Steam to popup a progress notification with text of your
choice? Or does it have to be numerical, or predefined in Steam's
achievement editor?

What about achievements that can be progressed towards in separate
saved games? The example you put on the wiki of finding all the ways
to die is one where progress needs to be shared rather than
save-specific.

Creating an editor for RELOAD-based data is not yet simple, but I'm
going to make a start on generalising the Purchases editor (most
likely) into a class for defining editable RELOAD trees.

Pleased that documentation already exists on the wiki, documenting
everything is a big task!

On Thu, 28 Oct 2021 at 14:03, Mike Caron <caron.mike at outlook.com<mailto:caron.mike at outlook.com>> wrote:
>
> Hello friends, sorry I’m late. Got sidetracked with a few things 😊
>
>
>
> As I’ve been discussing with TMC on the Slime Salad discord, I’m working on adding achievements and Steamworks support to the OHRRPGCE. This is based on a post TMC made here just about three years ago: http://lists.motherhamster.org/pipermail/ohrrpgce-motherhamster.org/2018-October/004308.html
>
>
>
> I’ve currently made progress on integrating Steamworks itself, thanks in no small part to TMC helping me get my environment set up, and now I’m thinking about how this stuff will work in the engine itself. I’ve been documenting stuff on the wiki, and I would encourage everyone to take a peek and give any feedback they have. Note that this page is not complete, and suggestions to fill in blanks would be appreciated.
>
>
>
> https://rpg.hamsterrepublic.com/ohrrpgce/User:Pkmnfrk/Achievements
>
>
>
> I’m hopeful to get this implemented soon, so I can get back to my next 13 year hiatus.
>
>
>
> Cheers!
>
> --
>
> Mike Caron
>
>
>
> _______________________________________________
> Ohrrpgce mailing list
> ohrrpgce at lists.motherhamster.org<mailto:ohrrpgce at lists.motherhamster.org>
> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
_______________________________________________
Ohrrpgce mailing list
ohrrpgce at lists.motherhamster.org<mailto:ohrrpgce at lists.motherhamster.org>
http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
_______________________________________________
Ohrrpgce mailing list
ohrrpgce at lists.motherhamster.org<mailto:ohrrpgce at lists.motherhamster.org>
http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.motherhamster.org/pipermail/ohrrpgce-motherhamster.org/attachments/20211028/a2c039f7/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: B5AD7DA463344A7C8EAB566E3E29701D.png
Type: image/png
Size: 144 bytes
Desc: B5AD7DA463344A7C8EAB566E3E29701D.png
URL: <http://lists.motherhamster.org/pipermail/ohrrpgce-motherhamster.org/attachments/20211028/a2c039f7/attachment-0001.png>


More information about the Ohrrpgce mailing list