facebook instant game 发布指南-快速入门

小游戏快速入门

本教程将介绍如何构建第一款小游戏:回合制版本的经典井字棋游戏。我们将使用丰富游戏功能游戏智能助手

您可以点击下方按钮下载源代码:

版块:

设置应用

SDK 第一步

测试和上传

游戏环境更新

设置智能助手

后续步骤


设置应用

即便您已有托管到 Facebook.com 的网页游戏,或托管到移动应用商店的移动游戏,也需要为自己的小游戏创建一款新应用。您无法使用与其他应用相同的 Facebook 应用编号制作一款小游戏。

将类别设置为“游戏”

前往应用面板的基本设置版块,确保将类别设置为游戏。保存更改。

为应用添加管理员、开发者和测试员

Facebook 正在逐步面向更广泛的受众推广小游戏,您的游戏目前可能无法对所有用户开放。要确保游戏的所有发开者和测试员拥有访问权限,请在应用面板的用户身份选项卡中将他们添加为应用的管理员、开发者或测试员(请参见下方截图)。详细了解用户身份

在应用面板中启用小游戏功能

请注意:请勿向针对 iOS、Android 或 Web 环境配置的原有 Facebook 应用添加小游戏。为小游戏创建的 Facebook 应用编号不适用于其他平台。新建 Facebook 应用

要为应用启用*小游戏功能,点击导航菜单底部的+ 添加商品按钮。这一操作将打开应用中的可用产品列表。在列表中找到小游戏,并点击开始按钮。这一操作将为菜单添加一个小游戏版块。确保开启在小游戏平台上架开关。保存更改,然后继续。

SDK 第一步

导入

现在您已设置好应用,需要开始创建游戏客户端。游戏客户端根目录下需要有一个index.html文件。请首先从此文件导入小游戏 SDK。

初始化

我们的 SDK 广泛使用Promises来实现异步功能。您只能在FBInstant.initializeAsync()解析完成后与加载的用户界面互动。

FBInstant.initializeAsync() 

    .then(function() {       

         // Start loading game assets here 

    });

游戏客户端不会一次性下载所有捆绑包(.zip文件),而是会搜索配置根文件 (fbapp-config.json) 和主文件 (index.html)。之后,它将开始执行主文件中所含的逻辑,并开始从此处下载资产。开发者可以全权控制资产加载的顺序和时间。

在开始下载初始化游戏所需的资产后,您需要将加载进度告知 SDK,以便我们向玩家展示加载进度环。

var images = ['sprite1', 'sprite2', ...];

for (var i=0; i < images.length; i++) { 

   var assetName = images[i]; 

   var progress = ((i+1)/images.length) * 100; 

   game.load.image(assetName); 

   // Informs the SDK of loading progress 

   FBInstant.setLoadingProgress(progress);

}

// Once all assets are loaded, tells the SDK

// to end loading view and start the game

FBInstant.startGameAsync() 

     .then(function() {   

        // Retrieving context and player information can only be done   

        // once startGameAsync() resolves   

        var contextId = FBInstant.context.getID();   

        var contextType = FBInstant.context.getType();


        var playerName = FBInstant.player.getName();   

        var playerPic = FBInstant.player.getPhoto();   

        var playerId = FBInstant.player.getID();   


         // Once startGameAsync() resolves it also means the loading view has   

         // been removed and the user can see the game viewport   


         game.start(); 

     });

如需详细了解initializeAsync()、setLoadingProgress()和startGameAsync()方法,请参阅SDK 参考文档


测试和上传

小游戏内容在 Facebook 基础设施上托管,因此,无需自行托管游戏内容或使用第三方服务。在准备好游戏进行测试后,将所有游戏文件打包为一个 .zip 文件。请注意,index.html文件应位于此存档的根文件夹中,而不应位于任何子文件夹中。

要上传 .zip 文件,请点击应用面板中的虚拟主机选项卡。从该选项卡的下拉菜单中选择“小游戏”,然后单击+上传版本,即可将 .zip 文件上传到 Facebook 的托管服务中。

之后,构建版本会处理文件,仅需数秒时间。状态更改为“待命”时,单击“★”按钮将构建版本推送到生产。


之后,您可以在移动设备中测试构建版本。现在,在 Messenger 内的游戏列表中,您可以在“开发中”版块下看见已发布的构建版本。为了加快开发流程,您可以参考此指南,了解如何通过图谱 API 从命令行上传构建版本,或者如何直接从开发服务器进行测试:测试、发布和分享小游戏

游戏环境更新

我们已经介绍过使用小游戏 SDK 的基本知识,现在来看看如何让您的游戏与游戏环境互动。

我们用游戏环境一词来定义可以玩游戏的任何环境。更多情况下,游戏环境是指 Messenger 对话,但如果游戏不是在 Messenger 中玩,游戏环境也可以指其他各种位置,例如 Facebook 帖子或小组。

以下示例说明了如何发送游戏环境更新及其在 Messenger 对话中的展示效果。

第 1 步:在配置文件中声明模板

为了声明自定义更新,您需要创建名为fbapp-config.json的配置文件,并将其放在捆绑包的根目录中,与index.html文件放在一起。如需详细了解受支持的配置,请参阅捆绑包配置部分。在本示例中,文件内容应该如下所示:

    "instant_games": {   

       "platform_version": "RICH_GAMEPLAY",   

       "custom_update_templates": {     

           "play_turn": {       

              "example": "Edgar played their move"     

            }   

        } 

   }

}

通过自定义更新模板配置,我们可以为每个特定的自定义更新分配一个编号,从而更好地进行分析。您必须为所有游戏分配模板编号。

第 2 步:使用updateAsync发送自定义更新

在配置文件中声明模板后,便可将模板用于填充FBInstant.updateAsync中的必填template字段。以下示例说明井字棋游戏如何利用调用通知对手轮到他们出棋。您可以在右侧看到消息的展示效果。

  // This will post a custom update. If the game is played in a messenger

// chat thread, this will post a message into the thread with the specified

// image and text message. And when people launch the game from this

// message, those game sessions will be able to access the specified blob

// of data through FBInstant.getEntryPointData().

FBInstant.updateAsync({ 

    action: 'CUSTOM', 

    cta: 'Play', 

    image: base64Picture, 

    text: {   

       default: 'Edgar played their move',   

       localizations: {     

          en_US: 'Edgar played their move',     

          es_LA: '\u00A1Edgar jug\u00F3 su jugada!'   

         } 

    } 

    template: 'play_turn', 

    data: { myReplayData: '...' }, 

    strategy: 'IMMEDIATE', 

    notification: 'NO_PUSH'

}).then(function() { 

   // closes the game after the update is posted. 

   FBInstant.quit();

});


有关自定义游戏环境更新的更多信息,请参阅我们的小游戏 SDK 参考文档

如需查看相关最佳实践指南,了解何时向其他玩家发送消息、何时向他们发送通知以及最好在游戏环境更新中添加哪些内容,请参阅我们的最佳实践部分。

请注意,游戏环境更新不会发送到 Messenger 以外的地方。通过使用context.getType()方法和检测THREAD来定制游戏体验非常有用。您可以使用context.switchAsync、context.chooseAsync或context.createAsync切换到更为合适的游戏环境。

(可选)设置游戏智能助手,再次吸引玩家

小游戏的一项重要功能是能附加 Messenger 平台智能助手。这项功能虽为选择性配置,却为游戏提供了一个强有力的再参与渠道。以下指南说明了如何创建和设置游戏智能助手。

第 1 步:创建主页

如需创建游戏智能助手,您首先需要创建 Facebook 主页。主页要正确地与小游戏关联,需要具备一些特殊的属性:

1.主页类别需要是应用主页

2.主页名称需要包含应用名称

3.主页不能与其他应用关联

您可以前往“应用面板”,在小游戏产品的应用主页版块创建满足这些特殊条件的主页。    在执行下一步操作前,请确保应用主页版块如右图所示:


注意:如果小游戏未与上述类型的主页正确关联,智能助手将不会收到 messaging_game_plays 事件

第 2 步:激活智能助手

创建主页后,您需要确保响应其消息 webhooks。Webhooks是在向您的主页发送消息事件时,我们向您的后端发送的 HTTP 调用。之后,您的服务器的逻辑将决定如何正确地响应每个事件(如果响应适用)。如需将服务器的端点与主页事件相关联,请按照Messenger 平台快速入门教程中的说明为主页启用智能助手。下表介绍了将智能助手与小游戏关联所需的 webhooks 和权限:



第 3 步:响应messaging_game_playswebhooks

正确配置智能助手后,您的服务器端应用程序将开始在玩家每次关闭小游戏时接收messaging_game_playswebhooks。下面是服务器端应用程序检测到并响应一个 webhook 的示例。

if (event.game_play) { 

  var senderId = event.sender.id; // Messenger sender id 

  var playerId = event.game_play.player_id; // Instant Games player id 

  var contextId = event.game_play.context_id;

  var payload = event.game_play.payload; 

  var playerWon = payload['playerWon']; 

   if (playerWon) {   

     sendMessage(     

         senderId,

         contextId,

         'Congratulations on your victory!',

         'Play Again'   

      ); 

    } else {   

       sendMessage(     

           senderId,

           contextId,

           'Better luck next time!',

           'Rematch!'   

       ); 

    }

}

您可以参阅 Messenger 平台文档,详细了解 webhook:“玩游戏”Webhook 文档

第 4 步:吸引玩家重回游戏

以下是如何使用图谱 API 向玩家发送 game_play 按钮的示例。

curl "https://graph.facebook.com/v2.6/me/messages?access_token="

     -X POST

     -H "Content-Type: application/json"

     -d '{

  "messaging_type": "UPDATE",

  "recipient": {

     "id": ""

  },

  "message": {

      "attachment": {

         "type": "template",

         "payload": {

            "template_type": "generic",

            "elements": [

               {

                   "title": "It has been a while since your last game. Time to get back",

                   "buttons": [

                      {

                         "type": "game_play",

                         "title": "Play Tic-Tac-Toe.",

                         "payload": "{}",

                         "game_metadata": {

                             "context_id": ""

                }

              }

            ]

          }

        ]

      }

    }

  }

}'



您可以参阅 Messenger 平台文档,详细了解此按钮:“玩游戏”按钮文档。

第 5 步:遵循我们的指南和政策

发布至生产阶段后,您的游戏智能助手应进入Messenger 平台提交流程。提交智能助手之前,请确保遵守下面的最佳实践:

建议:

向玩家提供相关及时有价值的更新。如需获取更多信息,请访问我们的最佳实践版块。

给予用户掌控权(例如:让用户确认他们是否想要接收通知以及以接收的频率)。

对玩游戏按钮使用入口点数据,以环境相关的方式加载游戏。

为智能助手设置与游戏相同的名称。

利用社交更新,如回合提醒、比赛结果、限时奖励和挑战。

确保为玩家提供适当的奖励刺激,促使他们通过智能助手消息打开游戏。为此,您可使用消息负载为玩家提供有价值的游戏内奖励。一般来说,如果智能助手消息打开的是游戏的开始页面,这条消息便没有什么价值。

使用固定菜单提供常见操作,如启动游戏。

设置默认操作,在自定义更新中使用game_play,以便整个图片都能将用户带入游戏中。

通过智能助手公布新功能或内容。

针对每位用户优化每天的消息发送时段,考虑用户所在的时区。

借鉴Messenger 智能助手的通用最佳实践

请勿:

在玩家关闭游戏后立即发送消息。

发送没有任何背景信息的消息再次吸引玩家(例如:“立即回到游戏中!”)。建议首选包含丰富背景信息的消息来重新吸引玩家(例如:“你的侦查员为你带回了更多信息”)

使用其他 Facebook 用户的口吻,或误导玩家以为他们好友在与他们沟通。

在用户屡次不想加入游戏的情况下继续向他们发送智能助手消息。这种情况将适用政策限制,并阻止您发送消息。当前的限制为,自最后一次游戏会话结束后 10 天最多可发送 5 条消息。如需详细了解,请参阅我们的开放平台政策文档中的第 9.4 条

将messaging_type设置为RESPONSE或UPDATE以外的其他任何值

链接至任何应用商店。


后续步骤

了解如何构建和配置小游戏游戏智能助手后,请务必参阅下面的指南:

最佳实践— 优化游戏表现的最佳实践和建议

发布检查表— 提交游戏之前需要检查的各个方面

常见问题— 常见问题和疑难解决方法。

另外我创建了一个 Facebook Instant Game   交流QQ群:814298516



欢迎同行们加入讨论技术

猜你喜欢

转载自blog.csdn.net/box_square/article/details/80900979