リーダーボードは、熱心なファン(公開リーダーボードでトップの座を争うプレーヤー)と、カジュアルなプレーヤー(友だちと進捗を比較して楽しむプレーヤー)のどちらにとっても、プレーヤー間の競争が盛り上がる楽しい方法です。
プラットフォームにリーダーボードを実装する方法については、クライアントの実装をご覧ください。
リーダーボードとは
リーダーボードを作成すると、Play ゲームサービスがリーダーボードのほとんどの面を管理します。通常は次のようなプロセスで機能します。
- ゲームの終了時点(または任意の時点)で、そのゲーム用に作成した 1 つ以上のリーダーボードにプレーヤーのスコアを送信します。
- Play ゲームサービスは、そのスコアがプレーヤーの現在のリーダーボード エントリ(日別、週別、または全期間)を超えているかどうかをチェックします。超えている場合、Play ゲームサービスは、該当するリーダーボードを新しいスコアで更新します。
- Play ゲームサービスがゲーム クライアントにスコアレポートを返します。このレポートでは、日別、週別、または全期間の新しいハイスコアであるかどうかがクライアントに示されます。そうでない場合、Play ゲームサービスは、このプレーヤーの日別、週別、または全期間の現在のハイスコアをクライアントに示します。
- リーダーボード用にプレーヤーの成績を取得するには、期間(日別、週別、または全期間)をリクエストし、ユーザーがソーシャルまたは公開のリーダーボードの表示を希望するかどうかを指定します。Play ゲームサービスは必要なフィルタリングをすべて行い、結果をクライアントに返します。
- レポートするスコアが多い場合、Play ゲームサービスは上位のリーダーボード スコアのデータのみを返します。上位のスコアやプレーヤーの前後のスコアを未加工データとして取得することもできます。
複数のリーダーボード
ゲームのリーダーボードは複数作成できます(70 個まで)。たとえば、マルチレベル ゲームではレベルごとに異なるリーダーボードを用意でき、レーシング ゲームではトラックごとに別々のリーダーボードを用意できます。
リーダーボードの期間
Play ゲーム SDK は、作成されたすべてのリーダーボードの、日別、週別、全期間の各バージョンを自動的に作成します。期間ごとに別々のリーダーボードを作成する必要はありません。
日別のリーダーボードは、年間を通じて UTC-7 時(つまり太平洋夏時間の午前 0 時)にリセットされます。
週別のリーダーボードは、日別のリーダーボードと同じタイムゾーン(UTC-7)における、土曜日と日曜日の間の午前 0 時にリセットされます。
公開リーダーボードとソーシャル リーダーボード
Play ゲーム SDK は、各リーダーボードの 2 種類のバージョンをプレーヤーに表示できます。
ソーシャル リーダーボードは、ユーザーのサークル(正確には、ユーザーがアプリと共有することを選択したサークルのメンバー)のうち、このユーザーとゲームプレイ アクティビティを共有することにした人たちで構成されるリーダーボードです。
公開リーダーボードは、ゲームプレイ アクティビティを公に共有することを選択したプレーヤーで構成されるリーダーボードです。プレーヤーがゲームプレイ アクティビティを公に共有することを選択していない場合、このリーダーボードには表示されません。
リーダーボードの表示
リーダーボードのフォーマット設定と表示に必要な処理はすべてモバイル クライアント ライブラリが行います。プレーヤーに特定のリーダーボードを表示するか、プレーヤーが選択できるすべてのリーダーボードのリストを表示するかを指定できます。
また、クライアント ライブラリからデータに直接アクセスすることで、独自のバージョンのリーダーボードを実装することもできます。
属性
リーダーボードを作成して管理するには、以下のリーダーボード属性について理解している必要があります。
基本情報
すべてのリーダーボードに、以下の基本要素が関連付けられます。
- ID: Google Play Console によって生成される一意の文字列。この一意の ID を使用して、ゲーム クライアント内のリーダーボードを参照します。
- Name: リーダーボードの短い名前(「ハイスコア」、「レベル 3」など)。100 文字まで設定できます。
- Icon: リーダーボードに関連付ける正方形のアイコン。リーダーボード アイコンを作成する際のおすすめの方法については、後述するアイコンのガイドラインのセクションをご覧ください。
- List order: ゲームに関連付けられているリーダーボードを表示するときに、リーダーボードが表示される順序。
- Limits: リーダーボードに表示できるスコアの下限と上限を定義するオプション値。これにより、明らかに不正なスコア送信を破棄できます。また
Players.hide
を使用すると、アプリのすべてのリーダーボードで、不正なスコアを送信したと思われるプレーヤーを非表示にできます。
順位付け
リーダーボードでは 2 種類の順位付けが可能です:
- 大きいほど上位のリーダーボードがデフォルトです。プレーヤーがポイントを獲得するタイプのゲームで一般的な方式です。
- 小さいほど上位のリーダーボードは、スコアが小さいほうが優れている場合に使用します。最も一般的な例としては、レースゲームのリーダーボードが挙げられます。この場合、スコアはプレーヤーの完走時間を表します。
スコアの形式
スコアはすべてリーダーボードに送信され、long 整数として内部的に保持されますが、Play ゲームサービスではさまざまな形式でユーザーに表示できます。
数値リーダーボードは、スコアを数値として表します。これらの値は、整数、または小数点の位置を固定した実数として表示できます。スコアを整数として送信すると、指定した位置に小数点が挿入されます。たとえば
314159
というスコアは、指定した小数点の位置に応じて3.14159
、3141.59
、314159
などと表示されます。時間リーダーボードは、時 / 分 / 秒 / 100 分の 1 秒の形式でスコアを示します。スコアはミリ秒単位で送信する必要があるため、
66032
は1:06.03
と解釈されます。通貨リーダーボードは、スコアを通貨形式で示します。スコアは、メインの通貨単位の 1/1,000,000 として送信します。たとえば 19,950,000 というスコアは、通貨に米ドルを指定した場合、
$19.95
と解釈されます。
数値リーダーボードでは、独自の単位もサポートされます。たとえば、ハイスコアをメートル単位で測るゲームの場合、リーダーボードのデフォルトの単位として「メートル」を指定できます。
翻訳とスコアの形式
モバイル クライアント ライブラリは、Play ゲームサービスにリーダーボード データをリクエストする際に、こうしたスコアを表示する言語と地域を指定します。REST API を使用すると、地域ベースの言語も指定できます。Play ゲームサービスから、指定した言語と地域に適した形式のリーダーボード スコアが返されます。こうした形式のスコアは、リーダーボードに翻訳を追加したかどうかに関係なく表示されます。
数値リーダーボードの場合は、言語によって表示される数値の形式が変わります(たとえば米国では 12,345.78
、フランスでは 12 345,78
)。独自の単位を使用しており、ゲームに翻訳を追加した場合は、追加したすべての言語について、翻訳済みの単位を提供する必要があります。こうすることで、言語に応じて適切な翻訳済み単位が表示されます。
選択した言語によっては、複数の種類の単位名を用意する必要が生じる場合があります。英語では、単数形と複数形を区別する必要があります(「meter」と「meters」など)。一方、ポーランド語では、1 個の場合、数個の場合、それより多い場合、それよりもっと多い場合の単位を用意する必要があります。複数形ルールについて詳しくは、数量文字列(複数形)をご覧ください。
時間リーダーボードの場合は、時刻形式がプレーヤーの言語と地域に応じて表示されます。これは主に、秒の小数点以下が複数桁ある場合や時間の値が 3 桁以上になる場合、顕著になります(たとえば米国では 4,815:16:23.42
、ドイツでは 4.815:16:23,42
)。
通貨リーダーボードの場合は、通貨形式がプレーヤーの言語と地域に応じて表示されます。ただし、通貨単位を変えることはできません。たとえば通貨に米ドルを指定した場合、米国では $19.95
、フランスでは 19,95 $
と表示されます。ただし、米国ではドルで表示し、フランスではユーロで表示する、と指定することはできません。
アイコンのガイドライン
アイコンは、512 x 512 の PNG ファイルまたは JPEG ファイルとして作成する必要があります。ほとんどのゲーム クライアントではアイコンが縮小して表示されるため、細部まで詳しく描かれたアイコンは避けるようにします。アイコンはアルファ チャンネルで送信でき、透明度はそのまま維持されます。リーダーボード アイコンは、Android デバイスでは濃いグレーの背景の上に表示されます。そのような場合でもはっきり識別できるアイコンを選択してください。
すべての言語 / 地域で同じアイコンが使用されるため、アイコンにテキストやローカライズされたコンテンツを含めることはおすすめしません。
リーダーボードを作成する
このセクションでは、新規または既存のゲームのリーダーボードを作成する方法について説明します。
新しいゲームのリーダーボードを作成する
新しい未公開のゲームのリーダーボードを作成するには、ゲームの Google Play Console エントリにアクセスし、[成長] > [Play ゲームサービス] > [設定と管理] > [リーダーボード] に移動して、[リーダーボードを作成] ボタンをクリックします。
次に、このリーダーボードに必要な情報を入力します。
[未公開として保存] をクリックすると、リーダーボードが「未公開」の状態になります。ゲームを公開すると、一緒にゲームのリーダーボードがすべて公開されます。
公開中のゲームのリーダーボードを作成する
すでに公開されているゲームに追加するリーダーボードを作成する場合も、手順は同様です。ゲームの更新版のテストについては、ゲームの変更の公開に関するページをご覧ください。
リーダーボードをテストして問題がなければ、新しいリーダーボードとともにゲームを再公開し、世界中に配信できます。
リーダーボードを編集する
作成済みのリーダーボードを編集するには、Google Play Console の [リーダーボード] タブで、リーダーボードをクリックします。このとき、最初にリーダーボードを作成したときと同じフォームが表示され、任意のフィールドを編集できるようになります。
リーダーボードの編集が完了したら、[未公開として保存] ボタンをクリックします。新しく編集したリーダーボードが、テストできる「未公開」の状態になります。
正常に動作していれば、リーダーボード フォームの上部にあるボックスで [変更を公開] を選択します。更新済みのすべてのリーダーボードとともに、ゲームを再公開できます。
編集を元に戻す
新しく編集したリーダーボードに問題があり、以前の状態に戻す場合は、リーダーボード フォームの上部にあるボックスで [元に戻す] を選択します。これで、リーダーボードが以前公開していたバージョンに戻ります。
リーダーボードを削除する
「未公開」の状態または公開済みのリーダーボードは削除できます。Google Play Console でリーダーボードを削除するには、リーダーボードのフォームに移動し、フォームの上部にある [リーダーボードを削除] をクリックします。
または、Players.hide
を呼び出すと、アプリ内でプレーヤーのリーダーボードを非表示にできます。
リーダーボードをリセットする
未公開のリーダーボードであれば、プレーヤーの進行状況のデータをリセットできます。
- Google Play Console でリーダーボードをリセットするには、イベントのフォームの上部にある [進行状況をリセット] をクリックします。
- リーダーボード データをプログラムでリセットするには、Management API の
Scores
メソッドを呼び出します。
リーダーボードの翻訳を追加する
ゲームに関連付けられているリーダーボードに、独自の翻訳を指定できます。その場合はまず、ゲームの翻訳の追加に記載されている手順を完了してください。また、ゲームのリーダーボードを 1 つ以上作成しておく必要があります。
リーダーボードの独自の翻訳を追加するには、Google Play Console でゲームの [リーダーボード] タブを開き、既存のリーダーボードを選択します。リーダーボードの詳細ページで、以前に [ゲームの詳細] タブで追加した言語のタブをクリックします。その言語のリーダーボードの詳細ページにあるフォームで、リーダーボードの翻訳を編集します。[保存] をクリックして、翻訳済みのリーダーボードの詳細を保存します。
リーダーボードのスコアを非表示にする
Google Play Games サービスには、改ざんの疑いがあるスコアをチェックして自動的に非表示にするリーダーボード改ざん対策機能が用意されています。この機能は Android ゲームでのみ利用できます。
改ざん対策は、Android ゲーム用に作成した新しいリーダーボードではデフォルトで有効になっていますが、既存のリーダーボードでは無効になっています。すでに公開されている既存のリーダーボードの改ざん対策を有効にする手順は次のとおりです。
- Google Play Console で [ゲームサービス] タブを開き、リストからゲームを選択します。
- [リーダーボード] タブを開き、改ざん対策を有効にするリーダーボード インスタンスを選択します。
- [リーダーボードの改ざん対策を有効にする] オプションをオンにします。
- [保存] をクリックして次に進みます。
- ゲームを公開します。
Google Play Console でリーダーボードの改ざん対策を有効にしてから、この機能が有効になるまでに最大で 24 時間かかることがあります。改ざん対策を有効にする前に送信されたスコアが遡及的に非表示になることはありません。
状況によっては、改ざん対策を無効にすることをおすすめします(ゲームが Android だけでなくウェブでも動作し、これらのプラットフォーム間でリーダーボードを共有する場合など)。
クライアントの実装
プラットフォームのリーダーボードを実装する方法については、以下のリソースをご覧ください。