Facebookゲームのホスティング

The Web Games on Facebook and Facebook Gameroom platforms are no longer available for new submissions. This documentation is intended solely for developers with existing games. To learn more, read our blog post.

Facebookゲームはポータルとしてホストされ、実際のゲームコンテンツはゲーム開発者のウェブサーバーでホストされます。FacebookウェブゲームのURLを設定すると、ゲームがFacebook.comで利用できるようになり、iframe内に表示されます。Facebookのアプリセンターとゲームのおすすめを最大限に活用してコンテンツを見つけてもらいやすくすることができ、Facebookプラットフォームのソーシャル機能を使用してよりソーシャルなゲームを作成できます。

Facebookゲームの表示のされ方

アプリ設定に、FacebookウェブゲームのURLを入力するフィールドがあります。このフィールドは、プレイヤーがゲームを読み込んだときに読み込まれるiframeを設定します。これにより、ゲームを完全に管理し、独自のリリースサイクルでバージョンとコンテンツを自由に更新することができます。こちらのアプリ設定をご覧ください。

Facebook.com上でプレイヤーがゲームを読み込むと、Facebookは、アプリ設定で指定されたFacebookウェブゲームのURLHTTP POSTリクエストを実行します。このリクエストに対する応答は、ゲームクライアントを含む完全なHTML応答になっているはずです。JavaScript用Facebook SDKを使用すると、ユーザーを認証し、フレームを操作し、ゲーム内のダイアログにアクセスできるため、このSDKをゲームのHTMLに必ず含めてください。Facebookゲームをするためのログインに関して詳しくは、こちらをご覧ください。

Facebook.comのゲームが表示されるiframe

FacebookウェブゲームURLに対するHTTP POSTリクエストに、ほかのパラメーターも含められます。例えば、プレイヤーがアプリに基本的なアクセス許可を付与している場合は、プレイヤーのFacebook IDを含むsigned_requestパラメーターが含められます。新規プレイヤーの場合、signed_requestパラメーター値を使用してこのリクエストが実際にFacebookから送信されたものであることを確認することができます。詳しくは、Facebookゲームをするためのログインに関するガイドの署名付きリクエストに関する説明をご覧ください。

ドメインとSSLの要件

Facebook.comの閲覧にはHTTPSが必要であり、この要件はゲームコンテンツにも適用されます。そのため、ゲームコンテンツの配信時に有効なSSL証明書が必要になります。ゲームをホストするようにウェブサーバーを設定する際、ゲームが自分の所有する有効なドメイン上にあり、そのドメインに有効なSSL証明書があることを確認する必要があります。

インバウンドリンク

ゲームの起動クエリに独自のカスタムパラメーターを渡すことができます。OGストーリーズ、紹介サイト、または共有リンクのパフォーマンスを追跡する際に便利です。

これには、次の2つの方法があります。

  1. 共有リンクの末尾にクエリパラメーターを追加する
  2. ゲームのURLパスに相対リンクを追加する

クエリパラメーター

FacebookゲームのURLは、必ずhttps://apps.facebook.com/{namespace}/になります。アプリページやインターネット上のほかの場所から飛ぶプロモーションリンクを提供する場合には、このクエリパラメーターを追加することができます。例:

https://apps.facebook.com/{namespace}/?source=mysourceid

これらのクエリパラメーターはゲームの起動時に保存され、signed_requestと共にサーバーに渡されます。

プレイヤーをゲームの一部に直接誘導するリンクを共有することもできます。PHPを使用しているまたは起動スクリプトがあるなら、この方法によってプレイヤーを標準フロー外のゲームエリアに参加させることができます。サーバーへのリクエストでは、フルパスが保持されます。例えば、以下へのリンクを共有した場合

https://apps.facebook.com/{namespace}/special_launch.php

Facebookはゲームのiframeを読み込む際に

https://{your_web_games_url}/special_launch.php

に対してリクエストを実行します。

ゲームの起動について

プレイヤーがFacebookでゲームを起動すると、サーバーへのHTTPリクエストにクエリパラメーターsigned_requestが追加されます。このsigned_requestをデコードすれば、ユーザー情報や、このデータのセキュリティと真正性を確認するための署名を入手することができます。このパラメーターは次のように解析できます。

  1. 署名付きリクエストを「.」文字で2つの部分に区切ります(例: 238fsdfsd.oijdoifjsidf899)
  2. 最初の部分(エンコードされた署名)をbase64urlからデコードします
  3. 2つ目の部分(ペイロード)をbase64urlからデコードし、生成されるJSONオブジェクトをデコードします

user_idフィールドがない場合は、プレイヤーがまだゲームにpublic_profileのアクセス許可を与えていないということです。

新規ユーザーのフロー

signed_requestを解析して、プレイヤーが新規であり、ゲームに基本的なアクセス許可を付与していないことがわかったら、JavaScript SDKを使って読み込み時にこれらのアクセス許可を求めることができます。

FB.login(function(response){
  // Handle the response
});

任意で、emailのようなアクセス許可を2番目のパラメーターとして追加して、求めることができます。

FB.login(function(response) {
  // Handle the response
}, {scope: 'email'});

このペイロードに関するほかの重要な情報は、プレイヤーの年齢設定とロケール設定です。詳しくは、Facebookのゲームをするためのログインをご覧ください。

ベストプラクティス

ローカルマシンでの開発

ゲームを開発している間、おそらくローカルマシンで動作しているウェブサーバー上でゲームをホストして、編集-コンパイル-テストのサイクルをスピードアップしたいと思われるでしょう。最も一般的な方法は、XAMPPのようなサーバースタックを設定することです。ローカルのSSL証明書を作成しインストールして、このサーバーがHTTPSをサポートするようにする必要もあるでしょう。

本番用サーバーへの移行

ゲームを世界に公開する準備ができたら、公開用ウェブサーバーでホスティングする手配を整える必要があります。

CDNを使ったホスティングパフォーマンスの向上

トラフィックが増えてきたら、ホスティングコストを削減してパフォーマンスを向上させるために、AkamaiCDNetworksなどのコンテンツ配信ネットワーク(CDN)の使用を検討することができます。CDNは、ゲームのコンテンツをインターネット上のさまざまな場所にキャッシュすることで機能します。このため、プレイヤーはより近い場所から自分のクライアントにゲームアセットを配信することができます。プレイヤーにゲームをすばやく読み込ませ、サーバーを過度のトラフィックから保護することができます。