このチュートリアルでは、交互にプレイする、おなじみの三目並べゲームを例にとって、初めてインスタントゲームを構築する方に役立つ情報を提供します。ここでは、ゲームのアップデートとゲームボットを使用します。 |
アプリの設定をしたら、最初の手順を実行することができるようになります。
アプリの設定が終わったら、ゲームクライアントを作成する必要があります。ゲームクライアントのルートディレクトリには、index.html
ファイルを置く必要があります。まず、この行を追加してインスタントゲームSDKをインポートします。
<script src="https://connect.facebook.net/en_US/fbinstant.6.2.js"></script>
重要な注意点:
FacebookのSDKでは、非同期機能にPromiseを幅広く使用しています。FBInstant.initializeAsync()
を解決した後にのみ、読み込みUIとやり取りできるようになります。
FBInstant.initializeAsync() .then(function() // Start loading game assets here );
Facebookのゲームクライアントでは、バンドル(.zip
ファイル)はまとめてダウンロードされません。代わりに、ルートで設定(fbapp-config.json
)とメインファイル(index.html
)を検索します。次に、メインファイルに含まれるロジックを実行し、そこからアセットのダウンロードを開始します。開発者は、読み込まれるアセットの順番とタイミングを詳細に管理できます。
ゲームの初期化に必要なアセットのダウンロード開始後は、Facebookがプレイヤーに読み込みリングを表示できるように、読み込みの進行状況を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のインフラストラクチャにホストされるため、独自のインフラにゲームのコンテンツをホストしたり、サードパーティーのサービスを使用する必要はありません。ゲームのテスト準備が整ったら、すべてのゲームファイルを1つの.zipファイルにパッケージ化します。
注: index.html
ファイルはこのアーカイブのサブフォルダではなくルートに配置してください。
.zipファイルをアップロードするには:
これで、ビルドをモバイル機器でテストできます。公開したビルドは、[開発中]セクションのMessengerのゲームリストに表示されるようになります。
開発プロセスを速めるには、グラフAPI経由でコマンドラインからビルドをアップロードする方法や、開発サーバーから直接テストする方法をお試しください。詳しくはインスタントゲームのテスト、公開、シェアをご覧ください。
コンテキトは、ゲームをプレイできる環境を定義します。通常、コンテキストではFacebook投稿やグループなどを特定できます。
下の例では、コンテキストのアップデートを送信する方法と、Messengerスレッドでどのように表示されるのかを説明します。
カスタムアップデートを宣言するには、fbapp-config.json
という名前の設定ファイルを作成し、index.html
ファイルとともにバンドルのルートに配置します。
サポートされる設定について詳しくは、バンドルベースの設定に関するセクションをご覧ください。このデモに使用するファイルの内容は次のようになります。
{ "instant_games": { "platform_version": "RICH_GAMEPLAY", "custom_update_templates": { "play_turn": { "example": "Edgar played their move" } } } }
カスタムアップデートのテンプレート設定を使用すると、カスタムアップデートごとにIDが付与されるため、より詳細な分析が可能になります。すべてのゲームにテンプレートIDを割り当てる必要があります。
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
のいずれかを使用して、より適したコンテキストに切り替えることができます。
ゲームボットにより再エンゲージメントに効果的なチャネルをゲームに組み込むことができます。その作成については、ゲームボット設定ガイドをご覧ください。
インスタントゲームとゲームボットの構築と設定方法を理解できた後は、次のガイドをご覧ください。