ネイティブおよび Android Studio の Java クイックスタート

このクイックスタートは、PlayFab JavaSDK と簡単な Java プログラムを使い始めるのに役立ちます。

PlayFab API を呼び出すには、PlayFab 開発者アカウントが必要です。

このチュートリアルの目標は次のとおりです。

必要な JAR ファイルを取得する

PlayFab JavaSDK を利用するためには、PlayFab クライアント JavaSDK とその依存関係である Google GSON が必要です。

PlayFab クライアント JavaSDK JAR ライブラリをここからダウンロードします。 client-sdk-*.jar と対応する Java ドキュメントを探します (省略可能ですが役立ちます)。

最新の Google GSON はこちらでダウンロードできます。 gson-*.jar を探します。

Intellij Idea によるプロジェクトのセットアップ

シンプルな Intellij Idea Java プロジェクトを初期化したら、次の例に示すように、必要な JAR ファイルを配置してください。

Intellij - プロジェクトのセットアップ

次の手順では、クラスパスに JAR ファイルを追加します。 次の例に示すように、ファイル -> に移動します。

Intellij - JAR ファイルをクラスパスに追加する。

下の画像に示すように、[ライブラリ] に移動し、新しい Java ライブラリを追加します。

Intellij - 新しい Java ライブラリを追加する

Libs フォルダーに追加した JAR ファイルを選択し、次のように [OK] をクリックします。

Intellij - JAR ファイルの選択

モジュール が求められた場合、一覧で最初のモジュールを選択します。 すべての JAR ファイルがライブラリ リストに追加されていることを確認します。

Intellij - JAR ファイルが追加されたことを確認する

IDE を使ったプロジェクトのセットアップ

主な要件は、クラスパスに JAR ファイルを追加することです。 JAR ファイルをクラスパスに追加する方法については、IDE のガイドを参照してください。

最初の API 呼び出しのセットアップ

メインクラスコードとして次のコードを使用します。

import java.util.concurrent.*;
import java.util.*;

import com.playfab.PlayFabErrors.*;
import com.playfab.PlayFabSettings;
import com.playfab.PlayFabClientModels;
import com.playfab.PlayFabClientAPI;

public class Main
{
    private static boolean _running = true;

    public static void main(String[] args) {
        PlayFabSettings.TitleId = "144";

        PlayFabClientModels.LoginWithCustomIDRequest request = new PlayFabClientModels.LoginWithCustomIDRequest();
        request.CustomId = "GettingStartedGuide";
        request.CreateAccount = true;

        FutureTask<PlayFabResult<com.playfab.PlayFabClientModels.LoginResult>> loginTask = PlayFabClientAPI.LoginWithCustomIDAsync(request);
        loginTask.run();

        while (_running) {
            if (loginTask.isDone()) { // You would probably want a more sophisticated way of tracking pending async API calls in a real game
                OnLoginComplete(loginTask);
            }

            // Presumably this would be your main game loop, doing other things
            try {
                Thread.sleep(1);
            } catch(Exception e) {
                System.out.println("Critical error in the example main loop: " + e);
            }
        }
    }

    private static void OnLoginComplete(FutureTask<PlayFabResult<com.playfab.PlayFabClientModels.LoginResult>> loginTask) {
        PlayFabResult<com.playfab.PlayFabClientModels.LoginResult> result = null;
        try {
            result = loginTask.get(); // Wait for the result from the async call
        } catch(Exception e) {
            System.out.println("Exception in PlayFab api call: " + e); // Did you assign your PlayFabSettings.TitleId correctly?
        }

        if (result != null && result.Result != null) {
            System.out.println("Congratulations, you made your first successful API call!");
        } else if (result != null && result.Error != null) {
            System.out.println("Something went wrong with your first API call.");
            System.out.println("Here's some debug information:");
            System.out.println(CompileErrorsFromResult(result));
        }

        _running = false; // Because this is just an example, successful login triggers the end of the program
    }

    // This is a utility function we haven't put into the core SDK yet. Feel free to use it.
    private static <RT> String CompileErrorsFromResult(PlayFabResult<RT> result) {
        if (result == null || result.Error == null)
            return null;

        String errorMessage = "";
        if (result.Error.errorMessage != null)
            errorMessage += result.Error.errorMessage;
        if (result.Error.errorDetails != null)
            for (Map.Entry<String, List<String>> pair : result.Error.errorDetails.entrySet() )
                for (String msg : pair.getValue())
                    errorMessage += "\n" + pair.getKey() + ": " + msg;
        return errorMessage;
    }
}

完成と実行

以下の方法でアプリケーションを実行します。

  1. 右上隅の再生矢印 > を選択します。 これにより、プログラムの実行が開始され、出力パネルが表示されます。
  2. デバッグ メッセージ を見つけます。 これは、API 呼び出しが成功したことを示します。

Intellij - プログラムを実行する

この時点で、他の API 呼び出しとゲームのビルドを開始できます。

利用可能なすべてのクライアント API 呼び出しの一覧については、PlayFab API リファレンス ドキュメントをご覧ください。

コードを分解する

省略可能なこの最後のセクションでは、GettingStarted.java のすべての行について詳しく説明します。

  • インポート

    • これは、PlayFab API 呼び出しを行うために使用されるインポートの最小セットです。
  • public static void main(String[] args) {

    • API 呼び出しを開始する基本的なループにすぎず、完了するまで待機します。

    • PlayFabSettings.TitleId = "xxxx";

      • すべての PlayFab 開発者は、ゲーム マネージャーでタイトルを作成します。 ゲームを公開するとき、ゲームにそのタイトル ID をコードで記述する必要があります。 これにより、クライアントは PlayFab 内で適切なデータにアクセスする方法を知ることができます。 ほとんどのユーザーにとって、これは PlayFab が機能するための必須の手順です。
    • PlayFabClientModels.LoginWithCustomIDRequest request = new PlayFabClientModels.LoginWithCustomIDRequest();

      • ほとんどの PlayFab API メソッドには入力パラメーターが必要であり、それらの入力パラメーターは要求オブジェクトにパックされています。

      • すべての API のメソッドには一意の要求オブジェクトが必要であり、オプション パラメーターおよび必須パラメーターが混在しています。

        • LoginWithCustomIDRequest の場合、プレイヤーを一意に識別する CustomId と、この呼び出しで新しいアカウントを作成できるようにする CreateAccount の必須パラメーターがあります。
      • ログイン時、ほとんどの開発者は適切なログイン方法を使うことを希望します。

        • すべてのログイン方法と入力パラメーターの一覧については、PlayFab ログイン ドキュメントをご覧ください。 一般的な選択肢は次のとおりです。
          • LoginWithAndroidDeviceID
          • LoginWithIOSDeviceID
          • LoginWithEmailAddress
    • FutureTask<PlayFabResult<com.playfab.PlayFabClientModels.LoginResult>> loginTask = PlayFabClientAPI.LoginWithCustomIDAsync(request);

      • これにより、Java FutureTask フレームワークを使って LoginWithCustomID への非同期要求が開始されます。
    • { if (loginTask.isDone()) { OnLoginComplete(loginTask); } } 実行中

      • 簡単なメイン ループを実行し、loginTask が完了するまで非同期に待機します。
      • OnLoginComplete の呼び出しが完了した場合。
  • OnLoginComplete (loginTask)

    • result = loginTask.get();

      • 非同期の結果を取得します (これによりブロックは発生しません。FutureTask が既に完了していることを確認済みであるためです。
    • (result.Result != null) の場合、API 呼び出しは成功しました。

      • 成功すると、多くの API コールバックの result.Result オブジェクトに要求された情報が含められます。

      • LoginResult具体的には、プレーヤーに関するいくつかの基本的な情報が含まれています。 ただし、ほとんどのユーザーにとって、ログインは他の API を呼び出す前の必須の手順です。

    • (result.Error != null) の場合、API 呼び出しは失敗しました。

      • API 呼び出しは多くの理由で失敗するため、必ずエラーの処理を試みる必要があります。
      • API 呼び出しが失敗する理由 (可能性が高い順)
        • PlayFabSettings.TitleId は設定されていません。 タイトルにTitleIdを設定しなかった場合、何も機能しません。
        • 要求パラメーター。 特定の API 呼び出しの正しい情報や必要な情報が指定されていない場合は失敗します。 詳しくは、error.errorMessageerror.errorDetails、または error.GenerateErrorReport() をご覧ください。
        • デバイス接続の問題。 携帯電話の接続が絶えず失われて再取得されるため、API 呼び出しが常にランダムに失敗し、その後すぐに機能する可能性があります。 トンネルに入ると完全に切断される可能性があります。
        • PlayFab サーバーの問題。 すべてのソフトウェアと同様、問題が生じる可能性があります。 最新情報については、リリース ノートをご覧ください。
        • インターネットの信頼性は 100% ではありません。 メッセージが破損したり、PlayFab サーバーに到達できないことがあります。
    • 問題のデバッグで問題が発生し、エラー情報内の情報が不十分な場合、フォーラムをご覧ください。