android - Google Play game services -- are unlocked achievements automatically shared through g+ or not? -
we're adding google play game services achievements our game (epic swords). we're in final testing, works except had expected unlocked achievements visible or posted in manner through g+. not see sharing occurring.
google's docs imply these shared, e.g. "sign in google share scores , achievements friends" http://goo.gl/v3y41 , various other places, although vague on how these shared.
q1: unlocked play services achievements automatically visible through g+?
q2: if yes, doing wrong in how testing these?
q3: if no... well, why implement achievements using play services instead of rolling our own? simpler , more reliable our own implementation (there's lot of complexity due synchronizing state google's cloud, not mention interesting bugs in client code ;-)
background: have published google play game services. works fine in-game, , state being shared/retrieved google. selected public visibility game progress when signing in game services.
btw add explicit g+ sharing when achievements unlock using general sharing api http://goo.gl/l70sy again... if have why use play services achievements @ all?
thanks ianhanniballake help, i'm adding clarify answer (e.g. achievements auto-posted) , summarize we've learned adding feature.
hopefully googler @ our pro/con because 1.0 sdk it's hard recommend api, improvements valuable.
automatic sharing of google play services achievement (as of 7/13 sdk):
- achievement progress (e.g. unlock) not shared/visible through g+
- the sdk not facilitate sharing achievements. plusshare.builder.shareunlock() if automatic sharing not added, share achievements on g+ must implement scratch
- imo nothing prevents google adding automatic achievement sharing in future. sign in flow gets user permission share "game progress", , other posts leaderboards have social sharing
from our experience: pro/con of achievements google play services:
pro:
- it's google's official solution defacto android standard
- google could make achievement progress shared/visible through g+ if want. make more valuable
con:
- user must willing sign g+ view/save achievements. users not , annoyed cannot use achievements
- synchronizing client-server has complex policy , implementation issues. e.g. user may sign in after substantial game progress; may simultaneously play on multiple devices; may sign out , sign in different user mid-game
- testing difficult because there's no way reset achievement progress test accounts through android api or server ui. assume google can fix this... please! posts remove/re-add tester account resets did not work us, or perhaps works pre-publishing
- google's design intends server manages ui assets (icons, strings) , achievement policy. if achievements visible in g+ in future, until it's hassle. e.g. see code below
- client ui ok not polished. e.g. description text area limited, "defeat skeleton king in battle" truncated in ui modes , there's no way see full detail. incremental achievements limited 10,000 steps (why?)
recommendation: if believe google make achievements visible through g+, that's great feature , explains of "con" above. if achievements remain unshared using google's api less reliable , substantially more work roll our own client implementation.
warning: google play game services of 7/15/13 appears have intermittent crashing bug if use imagemanager. see classcastexception: com.google.android.gms.common.images.e we have switched bundling unlock images in apk , no longer use imagemanager
this our now-deprecated code retrieve bitmap when user unlocks achievement:
uri unlockeduri = achievement.getunlockedimageuri(); if (unlockeduri != null) { imagemanager im = imagemanager.create(context); // warning -- loadimage may silently skip call if called after achievement load im.loadimage(new imagemanager.onimageloadedlistener() { @override public void onimageloaded(uri arg0, drawable drawable) { // attempt convert drawable sharable image; if fails we'll post text bitmap bitmap = null; if (drawable instanceof bitmapdrawable) { bitmap = ((bitmapdrawable) drawable).getbitmap(); } else { log.warn("not bitmapdrawable ", drawable); } listener.onbitmaploaded(bitmap); } }, unlockeduri); } else { log.debug("no unlockedimageuri"); listener.onbitmaploaded(null); }
one upside of google not providing automatic g+ sharing when have roll own sharing anyway, may other services in addition g+. e.g. offer sharing unlocked achievemets twitter well. perversely reason why google should make achievements social on g+ asap... developers lazy , ensure lots of games social achievements on g+ first ;-)
Comments
Post a Comment