[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
[phpBB Debug] PHP Notice: in file [ROOT]/includes/session.php on line 2208: Array to string conversion
• View topic - Steam Achievements

It is currently Mon May 13, 2024 3:20 am


Steam Achievements

THE DUGOUT : Have a technical problem? Share it with the community.
  • Author
  • Message
Offline

Reed

  • Posts: 359
  • Joined: Tue Jul 03, 2012 8:05 am

Steam Achievements

PostThu Jul 05, 2012 2:11 am

I haven't gotten the "First Step" Steam achievement even though I've won several ranked online matches. I have gotten "Starting Blocks" and "Murderer!", though.

I suspect I should also have gotten "One-Handed" and "Monopoly", maybe even "Walker".

I don't know whether it affects this, but I have also the client bought from Cyanide installed on this same PC. I used the same coach ID with both clients. I used the Cyanide client for two ranked multiplayer games, then I bought the Steam version and started using it. I haven't played with the Cyanide client since, but I haven't uninstalled it yet.

When I installed the Steam Dungeonbowl client, I was not asked for the player code or to create a coach ID. They were automatically there from the Cyanide client settings. The player code was different, though, it automatically used the new Steam Dungeonbowl player code.

I don't know whether the system automatically registered the Steam player code under my coach ID. I never did that manually. For the Cyanide client I did enter it manually.
Offline
User avatar

pmcc

  • Posts: 72
  • Joined: Tue Dec 13, 2011 4:42 pm

Re: Steam Achievements

PostThu Jul 05, 2012 11:05 am

If you run the steam version then you are all set to unlock achievements, however they won't work if you run the other client.
Offline

Reed

  • Posts: 359
  • Joined: Tue Jul 03, 2012 8:05 am

Re: Steam Achievements

PostThu Jul 05, 2012 11:23 am

Thanks for the answer!

Unfortunately I did not run the Cyanide-bought client yesterday. I ran only the Steam client. I still did not get the achievements I listed.

I restarted Steam and the game several times between a few games yesterday. I still only got two out of the four-five achievements I should have gotten.

I see from the global achievements (where you can compare your own against others') that many people have gotten "First Step", so the problem is not universal, at least.

Are there any others here who have not gotten a Dungeonbowl Steam achievement they have earned?
Offline

Reed

  • Posts: 359
  • Joined: Tue Jul 03, 2012 8:05 am

Re: Steam Achievements

PostThu Jul 05, 2012 8:40 pm

Another online match won, still no "First Step". Sigh.

Before playing the match, I unregistered my Cyanide-bought player key and uninstalled the Cyanide-bought Dungeonbowl client. Then I rebooted my PC.

When I started up Steam and Dungeonbowl (I validated the game cache files first, no problems), it asked me to register my player key. This did not happen when I first bought, installed and played the Steam client. Obviously at the time the system used the Cyanide-bought player key I had registered earlier. To be clear, I repeat I am now using the Steam player key and used the Steam player key for today's game.

The game launched and played normally. I won the match, but after the match, no achievement.

One reason to buy the Steam version (in my case, in addition to the Cyanide version!) is to get the achievements. Not getting the ones I've earned makes me a little bit sad. Not a great bit, but a little bit.
Offline

Reed

  • Posts: 359
  • Joined: Tue Jul 03, 2012 8:05 am

Re: Steam Achievements

PostFri Jul 06, 2012 8:24 am

Here's a possible reason for this behaviour:

The code makes note of the first time you win an online match, tells Steam to activate the achievement and stores a flag or counter for the victory. When the next match is won, only the counter is incremented. The achievement status is not checked again. This seems to make perfect sense.

Except when a player does what I did, first plays with the Cyanide client and then switches over to the Steam client. My first victory was not supposed to activate an achievement because it was not on the Steam client, but the victory counter might still have been incremented. Thus the condition of first victory is not satisfied when switching to the Steam client as new victories there are not the first one.

What the code would need to do instead is this:
1) player wins an online match
2) check if the player already has the "First Step" achievement (I'd guess this is possible with the Steamworks SDK, but I haven't checked this)
3) activate the achievement if it's not yet active
4) increment the win counter

Equivalent code fixes would be needed for the other achievements as well, not just the "First Step" one. Also, it would be very good if you checked all of the status flags and counters against the achievement statuses when e.g. launching the client so that getting a glitching achievement would not be dependent solely on satisfying the condition again. To clarify, I mean that I would e.g. get the "First Step" achievement immediately when I next started to play and I would not need to wait until I next won a match. This is especially important with the rarer occurrences where it might take quite some time before the condition is satisfied for the next time.

Doing it this way makes the code much less vulnerable to glitches and special cases. In general, it's a very good defensive programming strategy to always check for >= instead of only the very brittle = (combined with checking the achievement status so you don't end up with multiple activations).

This would also explain the other missing achivements I listed in my first post. If you only activate an achievement the first time something noteworthy happens, you will never catch the edge cases where something went wrong the first time the achievement was supposed to be activated.

Changing the code to work the way I suggest would immediately fix the problem for me and all others already or in the future having a problem with the achievements with no fussing around with any player data on your or Steam's servers needed.

Of course, you in all likelihood already figured all this out as you're the code authors and the professionals with access to the source code, but I just thought I'd jot down some idle musings in the case they might serve as a slight jolt for your thinking upon the matter. Thanks for your attention.

---

By the way, the "Monopoly" achievement might be bugged. No way it's the most rare one to get as it's currently listed on Steam (0%, bottom of the list). It's very common that the opponent never gets their hands on the ball as the match ends with the first goal.
Offline

Reed

  • Posts: 359
  • Joined: Tue Jul 03, 2012 8:05 am

Re: Steam Achievements

PostSat Jul 07, 2012 2:26 am

I now have at least partial proof of my theory being true. I know the status counters are incremented also when playing with the Cyanide-bought client.

I got the "Junior Training - Play 10 matches with the same team" achievent after having played one game on the Cyanide client and nine games on the Steam client with the same team.

I'm now pretty sure that what I wrote in my post above is the explanation for this problem. Could you please fix this? Otherwise I'll never get certain achievements with this coach name and that would make me a little sad.
Offline

Reed

  • Posts: 359
  • Joined: Tue Jul 03, 2012 8:05 am

Re: Steam Achievements

PostSun Jul 08, 2012 12:34 pm

As I've unlocked more Steam achievements this has started to bother me more than I first thought. There are maybe as many as five-six achievements I will never get if you don't change the way they are unlocked. I cannot reset them as I cannot remove the game from Steam and start anew.

The game and its achievements have been permanently tied to my Steam account. To fix this I would need to start up a new Steam account. I'm sure you can understand why this is not possible, you must have accounts of your own with dozens of games, friends, achievements, groups etc.

I realise this is a special case where someone first uses the Cyanide client and then switches to the Steam one. But consider this: people who do things like this are your most loyal and appreciative audience. They are your biggest supporters.

I'm not just talking about myself, I figure there must be at least some others who have gone through the same arc I have. Buying the Cyanide client as soon as it came out to support you and because you're eager to play it. Later buying the Steam client as you wish to have the Steam community features, so you can e.g. lure your friends to play the game too when they see you playing it on Steam all the time and obviously having fun, racking up achievements, even.

You know, back in school, when a teacher didn't give you a grade you knew you deserved? Yeah, that's what this feels like.
Offline

Reed

  • Posts: 359
  • Joined: Tue Jul 03, 2012 8:05 am

Re: Steam Achievements

PostTue Jul 17, 2012 3:48 pm

Thinking about this again, would switching to a new coach name work? Not that I would do that at this point.

Do you check and store the achievement triggers/counters based on the coach name? Or the game activation code?

What happens to your already unlocked Steam achievements if you switch coach names?

Are only "unlock achievement" messages even possible with the Steamworks SDK? It would make sense that there are no "relock achievement" messages. Don't know, though.
Offline

Reed

  • Posts: 359
  • Joined: Tue Jul 03, 2012 8:05 am

Re: Steam Achievements

PostThu Jul 19, 2012 5:01 am

I found a workaround. As I own two copies of Dungeonbowl, I was able to create a second coach name. I tried playing with this new coach name using my Steam Dungeonbowl. Lo and behold, it let me play that way. Now, when I won my first match using the new coach name, I got the "First Step" Steam achievement. This way, I was able to get all but one of the missing achievements in a couple of matches. The "Perfect!" one (Win a match without suffering any injury) will probably take some more tries. I've already had matches like that with my main coach name so I know I'll need to use the new name to get it.

What have we learned? Your Steam Dungeonbowl installation is tied to your Steam account and using any coach name with it will get you achievements.The achievement unlock triggers are checked on a coach name basis and the achievements are stored on a Steam account basis. You can play using any coach name with your Steam Dungeonbowl and all of the achievements earned will go to your Steam account.

It doesn't matter which player key the coach name was created with. You can use any player key and any coach name with your Steam Dungeonbowl, no matter which player key was used when Dungeonbowl was installed on your Steam account. That means e.g. that you could earn Steam achievements for your friends without affecting their coach name stats, if you're a better coach than them and don't mind creating a new coach name for that, forsaking your main coach name (probably not many would do that) or buying a new copy.

And by the way, Cyanide, the "Monopoly - Win a match without letting the opponent touch the ball" achivement is definitely bugged. I've fulfilled that condition with two coach names now and the achievement does not trigger. Please fix the achievement! Thank you. You can easily see that it is bugged as according to the global statistics no one has unlocked it despite it being a very common situation in a one-drive game.
Offline

Reed

  • Posts: 359
  • Joined: Tue Jul 03, 2012 8:05 am

Re: Steam Achievements

PostThu Jul 19, 2012 5:15 am

Another issue: Why can't we compare the global Steam achievement stats with our own stats? There's this error when you try to do this:

"Sorry!
An error was encountered while processing your request:

No stats are available at this time."

To try this you need to go to the Dungeonbowl game page in Steam Store, click "View global gameplay stats" and then click "Compare these achievements to your own". Weirdly, there is no link to do this if you look at the game page in your game Library. Usually there's a "View global achievement stats" link on the game's Library stats page.
Next

Return to Technical Forum

Who is online

Users browsing this forum: No registered users and 2 guests