Android ゲームのイベント

このガイドでは、Google Play Games サービスが提供するイベント API を使用して、ゲーム分析のためにプレーヤーのゲームプレイ データを収集する方法について説明します。API は com.google.android.gms.games.event パッケージと com.google.android.gms.games パッケージに含まれています。

始める前に

イベントゲームのコンセプトをまだ確認されていない場合は、イベント ゲームのコンセプトを確認することをおすすめします。

イベント API を使用してコーディングを開始する前に:

イベント クライアントを取得する

イベント API の使用を開始するには、まずゲームで EventsClient オブジェクトを取得する必要があります。そのためには、PlayGames.getEventsClient() メソッドを呼び出してアクティビティを渡します。

イベントを送信する

コードをゲームに追加して、ゲームに関連するイベントが発生したときに Play Games サービスに通知することができます。

イベントの更新を送信するには、 EventsClient.increment() を指定して eventId 値と 0 以上の整数 incrementAmount を呼び出します。

  • eventId は、Google Play Console で初めてイベントを定義するときに Play Games サービスによって生成され、ゲーム内でこのイベントを一意に識別するために使用されます。

  • incrementAmount 入力を使用すると、ゲーム固有の目標の達成に向けた、プレーヤーの定量的な進行状況を指定できます。たとえば、ゲームでトラッキングする イベントが「目の飛び出たモンスター 500 体を倒す」である場合、 incrementAmountの値はプレーヤーが倒した モンスターの数となります。

増分を 1 としてイベントを送信する方法の例を次に示します。

public void submitEvent(String eventId) {
  PlayGames.getEventsClient(this)
      .increment(eventId, 1);
}

イベントを取得する

`EventsClient.load()` を呼び出すことで、ゲーム用に Google のサーバーに保存されているすべてのイベントデータを取得できます。このメソッド呼び出しでは、Play Games サービスがユーザーのデバイス上にローカルにキャッシュされたデータを消去するかどうかを示すブール値を渡します。

Google Play Console で定義した特定のイベントのデータを取得するには、 EventsClient.loadByIds() を呼び出して、入力パラメータにイベント ID の配列を渡します。

次のスニペットは、ゲームのすべてのイベントのリストについて Play Games サービスにクエリを行う方法を示しています。

public void loadEvents() {
  PlayGames.getEventsClient(this)
      .load(true)
      .addOnCompleteListener(new OnCompleteListener<AnnotatedData<EventBuffer>>() {
        @Override
        public void onComplete(@NonNull Task<AnnotatedData<EventBuffer>> task) {
          if (task.isSuccessful()) {
            // Process all the events.
            for (Event event : task.getResult().get()) {
              Log.d(TAG, "loaded event " + event.getName());
            }
          } else {
            // Handle Error
            Exception exception = task.getException();
            int statusCode = CommonStatusCodes.DEVELOPER_ERROR;
            if (exception instanceof ApiException) {
              ApiException apiException = (ApiException) exception;
              statusCode = apiException.getStatusCode();
            }
            showError(statusCode);
          }
        }
      });
}