A small percentage of players are not receiving badges, and I'm unable to reproduce. Any ideas or common mistakes I should check for?

10 posts

Flag Post

A small group of users have reported that they are unable to earn badges for Dillo Hills. In all of their cases, they have been able to earn other badges from other games, they are all using typical operating systems and browsers (mostly Windows + Chrome), and they have all tried multiple times. Two of them have also sent me screenshots of them on level 5 or higher, which should trigger the second badge immediately and would be difficult to spoof.

I have been completely unable to reproduce this problem. Every test run I have done works successfully, and I’ve been awarded the badges without so much as a hiccup. If I was able to reproduce the problem myself, I’d run debug tools and see where it’s getting stuck, but I don’t think I can walk the players who are having the issue through that.

The only thing I’ve considered is that there may be some sort of a throttle somewhere. I’m currently throttling my stat updates to one update (4x kongregate.stats.submit calls) per 5 seconds. Is this within a normal range?

The number of users who have reported issues is fairly small, but I don’t want to write them off as flukes without asking for ideas/help. Thanks in advance. :D

 
Flag Post

How are you submitting stats? When do you submit stats?

 
Flag Post

Throughout the course of the game, I keep a running tally for four “Add” type stats. Once every 5 seconds, I send a kongregate.stats.submit() call for each stat, then reset it to 0 and resume tallying. This behaves as expected for almost all players.

For the “Max” type stats, I simply submit them when they are applicable (maybe one kongregate.stats.submit() call per 10 seconds, but usually much longer).

 
Flag Post
Originally posted by fexLabs:

Throughout the course of the game, I keep a running tally for four “Add” type stats. Once every 5 seconds, I send a kongregate.stats.submit() call for each stat, then reset it to 0 and resume tallying. This behaves as expected for almost all players.

For the “Max” type stats, I simply submit them when they are applicable (maybe one kongregate.stats.submit() call per 10 seconds, but usually much longer).

This might not be it, but are you using Timer-Based or Frame-Based timers for submitting stats? Could you post the relevant code?

 
Flag Post

You should change your “Add” to “Max” and have it submit at the end of the game – or between the ‘flying levels’ and never reset your in game counter (the max will handle it for you on kongregate’s side).

 
Flag Post
Originally posted by RTL_Shadow:
Originally posted by fexLabs:

Throughout the course of the game, I keep a running tally for four “Add” type stats. Once every 5 seconds, I send a kongregate.stats.submit() call for each stat, then reset it to 0 and resume tallying. This behaves as expected for almost all players.

For the “Max” type stats, I simply submit them when they are applicable (maybe one kongregate.stats.submit() call per 10 seconds, but usually much longer).

This might not be it, but are you using Timer-Based or Frame-Based timers for submitting stats? Could you post the relevant code?

Framerate-independent countdown, like so:

kongDelay-=timeElapsed/1000;
if(kongDelay<=0) {
kongregate.stats.submit(“CrystalsCollected”,ngCrystal);
kongregate.stats.submit(“BirdsStomped”,ngBird);
kongregate.stats.submit(“MillisecondsFlownAtMaxAltitude”,ngPilot);
kongregate.stats.submit(“PerfectJumps”,ngNavigator);
ngCrystal = 0;
ngBird = 0;
ngPilot = 0;
ngNavigator = 0;
kongDelay += 5;
}

 
Flag Post
Originally posted by UnknownGuardian:

You should change your “Add” to “Max” and have it submit at the end of the game – or between the ‘flying levels’ and never reset your in game counter (the max will handle it for you on kongregate’s side).

The issue with that is that players should be allowed to hit the birds over multiple playthroughs, even if they leave the game. It’s sort of like a “lifetime achievement.”

 
Flag Post

Errr, and for what it’s worth, the users who aren’t getting the badge for the “Add” stat are also not getting it for reaching level 5, which is a “Max” stat.

 
Flag Post

Could be some connectivity issue then.

I’m suggesting a max stat simply because of complexity. You can store their lifetime in a .sol if you wish and load it at runtime. Or do the “Add” and only submit between levels. (Having the delay between stats submit is double redundant because the Kongregate API has an internal stat submission delay as far as I know, as well.)

 
Flag Post

Found the issue, it was partially my fault.

I don’t track one of the stats once it reaches a certain threshold, because there are no more rewards beyond that threshold, which means that anyone who returned to the game post-badging who had already reached the limit would not send any more updates for that stat.

However, the reason I didn’t notice this problem immediately is because I was awarded the badge simply by running the game, even though I had already reached the limit. It’s unusual that some users who had already reached the threshold were not immediately awarded the badge. Either way, I fixed the problem by removing the limit and making it always send updates for that stat.