• 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 / Amazon Fire Google Play doesn't like the YYG achievements implementation


The Bestest GMC Jam Host
GMC Elder
Hey guys (paging @Dan I guess) - I tried to submit this as a bug through the proper form but it kept failing (and deleting what I'd wrote) and have also tweeted it here (but recognise that that's not really the best way to get you) so posting again on the forums.

If you try submitting an app with Google Play Services achievements to the Google Play store using YoYo Games' marketplace extension, Google sends you a warning that achievements are not implemented correctly. The achievements unlock correctly if you check them in your Google Play Games account, but they do not show the achievement unlocked banner in game. While it's not a blocker, Google does view it as incorrect behaviour and it's likely to affect whether or not a game gets featured.

I dug into it myself and found the problem. Around line 970 of GooglePlayServicesExtension.java the YYG extension uses unlockImmediate() to fire achievements instead of just unlock(). As I understand it this is because unlockImmediate allows YYG to fire an async social event in GameMaker. However, according to all the Android documentation this is not preferred behaviour and they'd rather developers just used the plain unlock() version. (Using the correct one also correctly shows the achievement unlocked banner in game).

I have worked around it myself by swapping this functionality (and taking out the task & listener stuff related to firing an async event) but it would be nice if there was an update in future that addressed this for developers.

  • Adding a new function achievement_post_no_async (or similar name) which uses just the unlock() method.
  • Keeping the old functionality as is to avoid breaking older projects which make use of the async stuff.
  • Explaining the difference in the docs.


EDIT: additional note. The code for the YYG extension doesn't appear to send incremental steps to Google for incremental achievements with an in-line comment saying Google doesn't support it. As far as I can tell they do support it, and this could be added to the extension at the same time.