モバイルからFacebook.comにポーティング

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.

ゲームをウェブに配置することで、迅速かつ頻繁なイテレーションが可能になり(レビュープロセス、手数料なし)、ウェブベースのプレイヤーは常にインターネットに接続し、最新バージョンのゲームを利用できるようになります。ウェブ上で公開することで、テストやバランス調整、微調整が簡単かつ迅速に行えます。また、UnityCocos2d-xのようなクロスプラットフォームのゲームエンジンを使っていれば、ウェブで学んだことをモバイル版にも適用でき、その都度書き直す必要はありません。

このドキュメントでは、モバイルプラットフォームからFacebookにゲームをポーティングする際に考慮すべき内容について、簡単に説明しています。

Facebook.com上でリリースするメリット

ウェブとモバイルで、毎月平均4.45億人がFacebookと連携したゲームをプレイしています。そうしたプレイヤーの多くはFacebook.comで直接プレイしているため、Facebook.comは新規プレイヤーにゲームを発見してもらう絶好の場といえます。

Madfinger GamesがFacebook.com上で提供しているDead Trigger 2

Facebook上のゲームを対象としたUnityデプロイが簡略化されたことで、Unity開発者の開発体験が向上しました。ゲームのビジネスをサポートするため、Facebookプラットフォーム機能に対応し、信頼性の高いFacebookの決済システムとのシンプルな連携を可能にするSDKも提供されています。

またCocos2d-xの開発者に関しても同様に、Cocos2D-xチームと協力して、Cocos2D-xエンジンにFacebookプラットフォーム機能へのサポートを組み込みました。Cocos2d-xを使用することで、単一のコードベースから、ウェブとモバイルの両方でコンテンツを共有し、パーソナライズされたソーシャルエクスペリエンスを生みだす機能をプレイヤーに提供することができます。

ゲームアセットのホスティング

モバイルゲームとウェブプレイヤーゲームの重要な違いの一つは、当然ウェブの存在です。Facebookで使用するためには、SSL/TLS("https")をサポートするウェブサーバーでゲームバイナリおよびアセットをホスティングするよう手配する必要があります。

ベストプラクティスや開始方法に関する情報については、Facebookでゲームをホストするをご覧ください。

読み込み時間の最適化

読み込み時間が長いとプレイヤーのリテンションが低下します。ウェブの強みの一つは、発見や探索の容易さです。プレイヤーはゲームクライアントをインストールしたり、大容量データをダウンロードしたりすることなく、ゲームのコンテンツを試してみることができます。新しいゲームの読み込みに時間がかかる場合、一部のプレイヤーは途中で読み込みをやめてしまうでしょう。プレイヤーのリテンションを最大化するには、できるだけ早くゲームを開始できるように努める必要があります。

ビルドサイズの縮小

ゲームで使われていないアセットや不要なアセットは必ず削除してください。サードパーティーのコードやプラグインの量に特に注意してください。これらは、完成したバイナリのサイズを肥大化させる要因となります。また、プレイセッションの開始時には必要のないアセット(レベルなど)を、オンデマンドやバックグラウンドで非同期に読み込まれる外部アセットに移行することで、ゲームサイズを縮小することも検討しましょう。

Unityの開発者であれば、Unityのアセットバンドル機能、またはWWW.LoadFromCacheOrDownloadメソッドを確認してください。ゲームアセットの仕分けには、CDNの使用が有益です。UnityでのWebGL配置のベストプラクティスについては、Unityで始めるも参照してください。

初期段階のファネルパフォーマンスを測定する

効果的な計測と測定でゲームのオンボーディングをモニタリングすることは、ドロップオフを特定し、変化が良い影響を与えているかどうかを確認するうえで重要です。インストールファネル全体で「ハートビート」シグナルを記録することで、読み込み時間のパフォーマンスを測定でき、場合によってはコーナーケース問題も特定できるかもしれません。

読み込みファネルの初期段階でイベントを記録し、プレイヤーがゲームの操作を始めたときのイベントも記録して、読み込みが成功したものと失敗したものを選別します。ハートビートを単に記録することに加えて、デバイスやブラウザ関連の問題を特定するためには、ブラウザ名、ブラウザのバージョン、その他の関連するブラウザ機能など、デバイスとブラウザに関する統計データをイベントとともに記録する必要があります。これは特に、UnityやUnrealが提供するWebGLビルドのような、読み込み時間が長いことで有名なゲームで重要となります。

最初のイベントは、読み込みファネルのできるだけ早い段階(ゲームコード内で制御を開始するよりもかなり前)に記録することが望ましいでしょう。このハートビートを送信するために、index.htmlのトップにスクリプトタグを追加することを検討してください。次にイベントを記録すべきなのは、最初の読み込みが完了し、プレイヤーがゲームの操作を開始できるようになったタイミングです。この2つのタイミングにより、読み込み中のプレイヤーのドロップ率を測定するための最も基本的なファネルが構築されます。これらのイベントの間や後に、ゲームに関連したイベントを追加することで、さらなる最適化が可能です。

ゲームの測定については、Facebookアプリのイベントを詳しく解説するガイドをご覧ください。

ZyngaがFacebook.comで提供しているCastleville Legendsの読み込み画面

インプットデザイン

もちろん、デスクトップコンピューター、キーボード、マウス上のユーザーインターフェイスは、モバイルデバイスのタッチスクリーンやジャイロスコープとは、若干異なります。この異なるタイプのインターフェイスでプレイできるようにゲームを適応させる必要があります。

例えば、ほとんどのプレイヤーにとって、タッチスクリーンよりもキーボードとマウスの方がシューティングゲームのキャラクターを動かしやすく、何かをドラッグする場合はマウスよりもタブレットの方がはるかに操作が簡単です。一部のマルチプレイヤーゲームでは、同じタイプのプラットフォームを使っているプレイヤーとしか対戦しないようにすることが有益となる場合があります。

UIデザイン

デスクトップパソコンのモニターは、スマホの画面に比べてかなり大きいです。また、ほとんどのモニターが16:9または16:10のアスペクト比となっています。3:4のiPhone 4でポートレートモードで動作するようにゲームをデザインした場合、ゲームの左右にレターボックスが出ないよう、利用可能なスペースを効果的に活用できるようなレイアウト調整を検討する必要があるかもしれません。利用可能なスペースを最大限に活用する最も簡単な方法として、背景画像の追加が考えられます。

UIの要素によっては、デスクトップディスプレイ用に再設計する方が効果的な場合もあります。マウスを使えば、モバイルプレイでタップする場合と比較して、より小さなUI要素をクリックすることが可能となります。例えば、モバイルでは複数画面にまたがっていたメニューシステムも、デスクトップでは1画面に収めることができます。これでユーザーインターフェイスがよりクリアになり、使いやすくなります。

Rumble Entertainmentが提供する「KingsRoad」のデスクトップ向けに最適化されたUI

Facebook決済を使用する

Facebook上のゲームはゲーム向けのFacebook決済を使用する必要があります。Unityの開発者は、Facebook上のすべてのゲームで利用できる強固な決済APIをネイティブにサポートする、Unity SDKを使用することが可能です。Cocos2d-xの開発者は、Facebook.comで決済を開始するための特定の呼び出しを実行できます。

ゲーム内の購入可能なアイテムごとに商品オブジェクトを定義する必要があります。各オブジェクトには少なくとも1つの通貨で定義された価格が必要になります。Facebookでは、世界中の人々のために外貨建ての価格を自動表示していますが、オプションで商品オブジェクトを拡張し、さまざまな通貨での価格を定義することで、世界中の人々に自分たちが決めた価格を提示することもできます。

また、取引の通知を受け取るためにサーバを設定する必要があります。必要な手順は、Facebook決済実施ガイドに記載されています。