• Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

Android Google Play Incremental Achievement increments too much

W

Wamtu

Guest
I'm trying to release my first game on Android, and I've been trying to give it Google Play Services achievements. The game in question is one of those types of games where you play as a fish and eat other fish to get bigger. During testing, I've gotten most of the achievements working, but I'm having trouble with my incremental achievements. Namely, on most of them, the progress seems to be going up twice as fast as it should be.

So far, only one of them has worked as expected. I have one for eating a total of 10,000 fish across all games. To minimize the calls to Google Play Services, I keep track of this in a local variable and just dump it into the achievement at the end of the game, like so:
Code:
achievement_increment(gp_ach_hogfish,FishEaten_Total);//Add to total amount of fish eaten.
After testing it, the achievement's progress went up at the rate I was expecting it to.

However, my other incremental achievements are incremented immediately, since they happen far less often. One in particular involves allowing a special enemy to escape at the end of a level 25 times (Now that I think about it...that's not a very good achievement. I really ought to replace it. Oh well. For now, it's good for testing this problem).
Here's how the code for this achievement works:
Code:
///Detect successful retreat
if((x<-abs(sprite_width)&&image_index==1)
||(x>room_width+abs(sprite_width)&&image_index==1)
||(y<-abs(sprite_width)&&image_index==1)
||(y>room_height+abs(sprite_width)&&image_index==1))//Check if shark has left the playing field.
{
    if(!NextLevel)
    {
        NextLevel=true;//Time to go to the next level.
        audio_play_sound(mus_win,0,false);//Play victory jingle.
        if(os_type==os_android && achievement_available())
            achievement_increment(gp_ach_sharkescape,1);//Increment shark escaping achievement by one.
    }
}
The achievement should only be going up by 4% each time (1/25 = 0.04), but instead it's going up by 8%, twice as much. There are a few other achievements which seem to have the same problem of incrementing twice as much as I want them to. What really stumps me is why the one tracking the total fish works. I even tried sending 2 instead of 1, but then it just incremented by 16%. RRGGHH!!!

Anyway, trying to figure this out has been a real pain in the neck. For all I know, it could be a problem with me, with GameMaker, or with Google Play Services. Has anyone here had experience working with incremental achievements on Google Play Services?
 
F

firezone

Guest
I would do a ctrl+shift+f on "gp_ach_sharkescape" in case you forgot you put it somewhere else.

to be sure do a search on "NextLevel" too, in case you're reverting it to 0 somewhere else after this event.
 
E

Equality Empires

Guest
I'm having the same problem.. Did you have any luck finding a fix?

If nay, some things i have found:
If you look in the debug window it apparently sends the score out to google twice, the first being the previous value that has already been sent previously and the second being the current value wanting to be posted. Well, i've noticed this when posting to leaderboards so i can only assume based on results (double amounts for increment) it is doing the same for increments.

In my case these variables change but yours will always be 1 but sent out twice (hence twice as much). Don't want to be the guy pointing fingers but this may have something to do with the new google play extension... Or it might be something to do with Logging in code at the start of the game (doubled up google play services?)..
 
H

Howard Lehr

Guest
This is happening to me also. Never tried it with the "old" Google Play Extension, so can't compare.

Using v1.4.760 ('cause of the libpng issue)
latest GooglePlayLicensingAsExt
latest PlayAPKExpansionExtension (not sure if it's really needed though)
latest GooglePlayServicesExtension

Strangely, when they work, this doesn't seem to be happening with the % that stacks on achievement_post(<id>, %). They seldom work though, so it's slim consolation. :) Seriously, though, it means it's not necessarily endemic to the whole achievement system, just the increment function?

I made a small program that doesn't use the Expansion Extension, but runs fine in the Google Play Console under closed Alpha. It does nothing but increment/post and count achievements. There's a thread posted with a description of other inconsistencies it uncovered.... at least it seems to have uncovered them.
 
P

p055ible

Guest
This started happening to me when I linked Firebase to my gplay app :(
 

Slyddar

Member
I'm noticing this as well. I'm sending an incremental achievement to Google Play and sometimes it gets sent twice, but not always. I'm using this code to send, and I know it only runs once, as the output window shows the debug message once only, and the _id I'm using only appears once in my whole project.
_id is the unique achievement id from the Google Play Console.
Code:
achievement_increment(_id, 1);
show_debug_message("Posting for: " + string(_id));
I tried to just use achievement_post(_id, percent) and track the percent complete myself, but GMS gives an error stating "GPS does not currently support posting partially complete achievements. Either call achievement_post() when the achievement is complete or use achievement_increment()", so had to go back to using increment.

I believe this to be a bug, considering how many of us have encountered it. Did anyone find a solution?
 
Top