Google Play游戏服务 - 是否通过g +自动共享未锁定的成就?

时间:2013-07-11 16:52:42

标签: android google-play-services

我们正在为我们的游戏(Epic Swords)添加Google Play游戏服务成就。我们正在进行最终测试,它的工作原理除了我曾预料到解锁的成就会通过g +以某种方式显示或发布。我没有看到这种共享发生。

Google的文档暗示这些是共享的,例如“请与Google一起分享您与朋友分享您的分数和成就”http://goo.gl/V3Y41以及其他各个地方,尽管对这些内容的分享方式含糊不清。

Q1:解锁后的游戏服务成就是否通过g +?

自动显示

Q2:如果是,那么我们在测试这些问题时是否做错了什么?

问题3:如果没有......那么,为什么要使用播放服务来实现成就而不是自己动手?执行我们自己的实现会更简单,更可靠(由于将状态与google的云同步,因此存在很多复杂性,更不用说客户代码中的一些有趣的错误了; - )

背景:我们已发布Google Play游戏服务。一切都在游戏中正常运行,并且谷歌正在共享/检索状态。登录游戏服务时,我选择了公众对游戏进度的可见性。

顺便说一句,当成就使用常规共享API http://goo.gl/L70sY解锁时,我们可以添加明确的g +共享...但如果我们必须这样做,那么为什么要使用播放服务成就呢?

2 个答案:

答案 0 :(得分:4)

感谢ianhanniballake的帮助,我正在添加此内容以澄清答案(例如成就可以自动发布)并总结我们在添加此功能时所学到的内容。

希望Google员工可以查看我们的Pro / Con,因为使用1.0 SDK很难推荐API,但是通过改进它会很有价值。

自动分享Google Play服务成就(截至7/13 SDK):

  • 通过g +
  • 不会共享/显示成就进度(例如解锁)
  • sdk不利于分享成就。像PlusShare.Builder.shareUnlock()这样的东西会有所帮助,如果没有添加自动共享,但目前要在g +上分享成就,你必须从头开始实施
  • imo什么都不会妨碍Google 将来添加自动成就分享。他们的登录流程获得用户分享“游戏进度”的权限,其他帖子称排行榜确实有社交分享

根据我们的经验:使用Google Play服务的Pro / Con成就

<强>临

  • 这是谷歌的官方解决方案,所以希望将成为事实上的Android标准
  • Google 可以通过g +分享/显示成就进度,如果他们愿意的话。这将使它更有价值

<强> N

  • 用户必须愿意登录g +才能查看/保存成就。有些用户不会这样做,并且生气他们不能使用成就
  • 同步客户端 - 服务器具有复杂的策略和实现问题。例如。用户可以在大量游戏进度后登录;可以同时在多个设备上播放;可以退出并以游戏中的其他用户身份登录
  • 测试很困难,因为无法通过Android API或服务器UI重置测试帐户的成就进度。我认为谷歌可以解决这个问题...拜托!有些帖子说删除/重新添加测试人员帐户重置,但这对我们不起作用,或者它可能仅适用于预发布
  • Google的设计旨在让他们的服务器管理UI资产(图标,字符串)和成就政策。如果将来在g +中可以看到成就,这是很好的,但在那之前它是一个麻烦。例如。见下面的代码
  • 客户端用户界面很好,但没有完善。例如。描述文本区域有限,“在战斗中击败骷髅王”在某些UI模式中被截断,并且无法查看完整的细节。增量成就限于10,000步(为什么?)

推荐:如果您认为Google会通过g +显示成就,那就是一个很棒的功能,并解释了上面的大部分“Con”。但是,如果成就仍然没有得到共享,那么使用谷歌的API就不那么可靠,而且比推出我们自己的客户端实施工作要多得多。

警告:如果您使用ImageManager,截至2013年7月15日的Google Play游戏服务似乎会出现间歇性崩溃错误。请参阅ClassCastException: com.google.android.gms.common.images.e 我们已切换到在APK中捆绑解锁图片,不再使用ImageManager

这是我们现在不推荐使用的代码,用于在用户解锁成就时检索位图:

    Uri unlockedUri = achievement.getUnlockedImageUri();
    if (unlockedUri != null) {
        ImageManager im = ImageManager.create(context);
        // Warning -- loadImage may silently skip call back if called too soon after achievement load
        im.loadImage(new ImageManager.OnImageLoadedListener() {
            @Override public void onImageLoaded(Uri arg0, Drawable drawable) {
                // Attempt to convert the Drawable to a sharable image; if it fails we'll post text only
                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);
    }

google没有提供自动g +共享的一个好处是,当你不得不推出自己的共享时,除了g +之外你还可以为其他服务做这件事。例如。我们也提供分享解锁的成就到twitter。但是反过来说,这也是为什么谷歌应该在g +上做出社交成就的一个很好的理由......开发人员很懒惰,这将确保很多游戏的社交成就都在g +上; - )

答案 1 :(得分:1)

没有Android应用可以自动发布到Google+ - 您必须通过传统的分享方式或通过您提到的互动式帖子API浏览Google+应用。有App Activities可以由应用程序创建,并通过用户的Apps page通过其个人资料查看(然后由用户从那里共享)。但是,App活动目前尚未整合到Google Play游戏服务中。这并不是说它不会在任何时候神奇地发生(并且,因为它是服务器端的变化,可能会自动发生,因为所有游戏都已经请求创建游戏活动的许可(目前没有))。

成就,如Google Play Game Service main page所述,“鼓励用户以全新且有趣的方式探索您的游戏”,当然,确保在所有支持Google Play的游戏中提供一致的体验。这对您或您的用户来说是否足够重要可能会随着时间而变化,但预先提供完整的体验(因为那些愿意通过Google+登录的人可能会期望)可以提供更好的用户体验。