> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Defold 向け Lua クイックスタート

> Defold プロジェクトをセットアップし、クロス プラットフォームのゲーム開発のために PlayFab Defold クライアント SDK を使用して Lua で最初の PlayFab API 呼び出しを行います。

このクイックスタートでは、Defold を使用して最初の PlayFab API 呼び出しを行う方法を説明します。

PlayFab API を呼び出す前に、[PlayFab 開発者アカウント](https://developer.playfab.com) が必要です。

## Defold プロジェクトのセットアップ

OS: このガイドは Windows 10 向けに書かれています。Mac でも問題なく動作します。

1. アカウントを作成して Defold をダウンロードするか、[https://www.defold.com/](https://www.defold.com/) (Google O-Auth を使用) でログインします: [https://d.defold.com/stable/](https://d.defold.com/stable/)。

2. Defold の「Getting Started Tutorial」を完了していない場合は、今すぐ実施してください。

3. 以下に示すように、Defold ダッシュボードで新しいプロジェクトを作成します。

<img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/lua/defold-add-project.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=cb5e329e814177d3456031004cccfe39" alt="新しい Defold プロジェクトを作成" width="162" height="376" data-path="images/playfab/sdks/lua/defold-add-project.png" />

4. **Defold** を実行し、新しいプロジェクトを読み込みます。以下の例のようないくつかのウィンドウが表示されます。

<img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/lua/defold-dashboard.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=3451047b4d248b54063ae35d647b01f4" alt="Defold ダッシュボード" width="1626" height="1360" data-path="images/playfab/sdks/lua/defold-dashboard.png" />

5. プロジェクト設定を更新し、依存関係に PlayFab を含めます:

   [https://github.com/PlayFab/LuaSdk/raw/master/Defold/PlayFabClientSdk.zip](https://github.com/PlayFab/LuaSdk/raw/master/Defold/PlayFabClientSdk.zip)

<img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/lua/defold-dependency-1.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=801a76d9fbd6fd3c4d1c2674a6cae4be" alt="依存関係に PlayFab を追加" width="865" height="294" data-path="images/playfab/sdks/lua/defold-dependency-1.png" />

6. **Project** -> **Fetch Libraries** を選択すると、以下のように新しい組み込みの PlayFab フォルダーが表示されます。

<img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/lua/defold-dependency-2.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=ce12f4685d293dc015acdf6132997d53" alt="プロジェクトのライブラリを取得" width="812" height="289" data-path="images/playfab/sdks/lua/defold-dependency-2.png" />

7. いくつかのファイルを作成します:

   * **main/PfGettingStarted.gui**

   * 「main」フォルダーを選択 -> **new** -> **Gui File** -> **PfGettingStarted.gui**。

   * **main/PfGettingStarted.gui\_script**

   * 「main」フォルダーを選択 -> **new** -> **Gui Script File** -> **PfGettingStarted.gui\_script**。

8. main.collection で新しい GUI を接続します。

   * main.collection を選択して開きます。

   * Outline パネルで:
     * **Add Game Object** を選択します (オプションで **PfGui** に名前を変更)。
       * 新しいオブジェクトを選択し、**Add Component From File...**
         * PfGettingStarted.gui (上で作成)。

   * main.collection を表示している Outline パネルは、以下の例のようになります。

     <img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/sdks/lua/defold-main-outline.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=cdc7b1fa9078bf5fcd4bb85877858a7a" alt="Main Outline パネル" width="259" height="110" data-path="images/playfab/sdks/lua/defold-main-outline.png" />

PlayFab のインストールは完了しました。このプロジェクトはまだビルドできる状態ではありませんが、次のステップで修正します。

## 最初の API 呼び出しをセットアップする

このガイドでは、最初の PlayFab API 呼び出しを行うための最小限の手順を説明します。確認はゲーム ウィンドウで行えます。

1. Defold エディターで **PfGettingStarted.gui\_script** をダブルクリックします。

2. これによりファイルがテキスト編集用に開かれます。

3. 以下に示すように、PfGettingStarted.gui\_script の内容を更新します。

<Note>
  この例の loginRequest オブジェクトの正しい形式を確認するには、[LoginWithCustomID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid) の API リファレンスを参照してください。
</Note>

```gui_script theme={null}
local PlayFabClientApi = require("PlayFab.PlayFabClientApi")
local IPlayFabHttps = require("PlayFab.IPlayFabHttps")
local PlayFabHttps_Defold = require("PlayFab.PlayFabHttps_Defold")
IPlayFabHttps.SetHttp(PlayFabHttps_Defold) -- Assign the Defold-specific IHttps wrapper

PlayFabClientApi.settings.titleId = "144" -- Please change this value to your own titleId from PlayFab Game Manager

function init(self)
    local loginRequest = {
        -- See the API reference for LoginWithCustomID
        TitleId = PlayFabClientApi.settings.titleId,
        CustomId = "GettingStartedGuide",
        CreateAccount = true
    }
    PlayFabClientApi.LoginWithCustomID(loginRequest, OnLoginSuccess, OnLoginFailed)
end

function OnLoginSuccess(result)
    local pfTestOutput = gui.get_node("pfOutput")
    gui.set_text(pfTestOutput, "Congratulations, you made your first successful API call!")
end

function OnLoginFailed(error)
    local pfTestOutput = gui.get_node("pfOutput")
    local message = "Something went wrong with your first API call.\n"
    local message = message .. "Here's some debug information:\n"
    local message = message .. error.GenerateErrorReport()
    gui.set_text(pfTestOutput, message)
end
```

4. **Defold** エディターで、**PfGettingStarted.gui** を右クリック -> **Open With** -> **Text Editor**。残念ながら、これは Defold の内部設定を変更するため、次のことを行います:

   * もう一度開きます: **PfGettingStarted.gui** を右クリック -> **Open With** -> **GUI Editor**。これによりデフォルトが通常に戻ります。

   * **PfGettingStarted.gui** のテキスト編集タブを選択します。

   * 以下に示すように、PfGettingStarted.gui のテキスト内容を更新します。

```gui_script theme={null}
script: "/main/PfGettingStarted.gui_script"
fonts {
  name: "system_font"
  font: "/builtins/fonts/system_font.font"
}
background_color {
  x: 0.0
  y: 0.0
  z: 0.0
  w: 1.0
}
nodes {
  position {
    x: 100.0
    y: 620.0
    z: 0.0
    w: 1.0
  }
  rotation {
    x: 0.0
    y: 0.0
    z: 0.0
    w: 1.0
  }
  scale {
    x: 1.0
    y: 1.0
    z: 1.0
    w: 1.0
  }
  size {
    x: 1080.0
    y: 520.0
    z: 0.0
    w: 1.0
  }
  color {
    x: 1.0
    y: 1.0
    z: 1.0
    w: 1.0
  }
  type: TYPE_TEXT
  blend_mode: BLEND_MODE_ADD
  text: "Logging in..."
  font: "system_font"
  id: "pfOutput"
  xanchor: XANCHOR_LEFT
  yanchor: YANCHOR_TOP
  pivot: PIVOT_NW
  outline {
    x: 1.0
    y: 1.0
    z: 1.0
    w: 1.0
  }
  shadow {
    x: 1.0
    y: 1.0
    z: 1.0
    w: 1.0
  }
  adjust_mode: ADJUST_MODE_FIT
  line_break: false
  layer: ""
  inherit_alpha: true
  clipping_mode: CLIPPING_MODE_NONE
  clipping_visible: true
  clipping_inverted: false
  alpha: 1.0
  outline_alpha: 1.0
  shadow_alpha: 1.0
  template_node_child: false
  text_leading: 1.0
  text_tracking: 0.0
  size_mode: SIZE_MODE_AUTO
}
material: "/builtins/materials/gui.material"
adjust_reference: ADJUST_REFERENCE_PARENT
max_nodes: 512
```

## 完了して実行する

まず、すべてが保存されていることを確認し、別のタブを選択します。次に「 \* 」マーカーを探します。Defold は時々更新されないことがあります。

次に、ゲームをビルドします (Ctrl+b またはドロップダウン: **Project** -> **Build and Launch**)。画面上に次のテキストが表示されるはずです:

"Congratulations, you made your first successful API call!"

利用可能なすべてのクライアント API 呼び出しの一覧については、[PlayFab API リファレンス](/services/playfab/api-references) のドキュメントを参照してください。

Happy coding!

## コードの詳細解説

* `PfGettingStarted.gui`
  * `PfGettingStarted.gui` に関する手順は、教育目的ではなく、効率を優先したものです。このファイルは GUI 定義であり、画面にテキスト ボックスを追加し、それを別のスクリプト `PfGettingStarted.gui_script` にバインドします。通常、これらのファイルをテキスト形式で編集することはありません。
  * Defold GUI ウィジェットを構築する適切な方法については、次のガイドを読んでください:
  * [Defold の GUI シーン](https://www.defold.com/manuals/gui/)

* `PfGettingStarted.gui_script`
  * Require ステートメントとセットアップ。
    * `PlayFabClientApi` を使用すると、Client API 呼び出しを行うことができます。これがここにいる理由です。
    * IPlayFabHttps と PlayFabHttps\_Defold:
      * PlayFab Defold プラグインは PlayFab LuaSdk 上に構築されています。Lua 言語には適切な HTTPS モジュールがありません。Lua を使用する各ゲーム エンジンは独自の実装を提供します。これら 2 つの変数は、PlayFabSdk に HTTPS へのアクセス方法を伝えます。これはプロジェクト内で最初のシーンで一度だけ行う必要があります。それ以外は必要なボイラープレートです。

  * `PlayFabClientApi.settings.titleId = "144"`
    * PlayFab を使用するすべてのプロジェクトは、Game Manager と呼ばれる PlayFab の Web サイトで一意のタイトルを作成する必要があります。Game Manager で `titleId` を見つけ、`144` をご自身の `titleId` に置き換えてください。

  * `function init(self)`
    * Defold 関数 - これは GUI が初期化されたときに呼び出されます。

  * `local loginRequest = { TitleId = PlayFabClientApi.settings.titleId, CustomId = "GettingStartedGuide", CreateAccount = true }`
    * ほとんどの PlayFab API メソッドは入力パラメーターを必要とし、それらの入力パラメーターはリクエスト オブジェクトにまとめられます。
    * すべての API メソッドには、オプションと必須のパラメーターが混在した一意のリクエスト オブジェクトが必要です。
      * `LoginWithCustomIDRequest` には、プレイヤーを一意に識別する必須パラメーター `CustomId` と、この呼び出しで新しいアカウントの作成を許可する `CreateAccount` があります。
    * ログインについては、ほとんどの開発者はより適切なログイン メソッドを使用することを望むでしょう。
      * すべてのログイン メソッドと入力パラメーターの一覧については、[PlayFab ログイン ドキュメント](xref:titleid.playfabapi.com.client.authentication) を参照してください。一般的な選択肢は次のとおりです。
        * [LoginWithAndroidDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithandroiddeviceid)
        * [LoginWithIOSDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithiosdeviceid)
        * [LoginWithEmailAddress](xref:titleid.playfabapi.com.client.authentication.loginwithemailaddress)

  * `PlayFabClientApi.LoginWithCustomID(loginRequest, OnLoginSuccess, OnLoginFailed)`
    * これは、リクエストを使用して API 呼び出しを実行し、成功と失敗の条件に対するコールバック関数を提供します。

  * `function OnLoginSuccess(result)`
    * 多くの API の成功コールバックの result オブジェクトには、要求された情報が含まれます。
    * `LoginResult` にはプレイヤーに関する基本情報が含まれますが、ほとんどのユーザーにとって、ログインは他の API を呼び出す前の必須ステップにすぎません。

  * `function OnLoginFailed(error)`
    * API 呼び出しはさまざまな理由で失敗する可能性があるため、常に失敗を処理するようにしてください。

    * API 呼び出しが失敗する理由 (可能性の高い順)
      * PlayFabSettings.TitleId が設定されていない。titleId をタイトルに設定するのを忘れた場合、何も動作しません。

      * リクエスト パラメーター。特定の API 呼び出しに対して正しい情報や必要な情報を提供していない場合、失敗します。詳細については、`error.errorMessage`、`error.errorDetails`、または `error.GenerateErrorReport()` を参照してください。

      * デバイスの接続の問題。携帯電話は接続を頻繁に失ったり回復したりします。そのため、いつでも API 呼び出しがランダムに失敗し、その後すぐに動作することがあります。トンネルに入ると、完全に切断される可能性があります。

      * PlayFab サーバーの問題。すべてのソフトウェアと同様に、問題が発生する可能性があります。更新については [リリース ノート](/services/playfab/release-notes) を参照してください。

      * インターネットは 100% 信頼できるわけではありません。メッセージが破損したり、PlayFab サーバーに到達しなかったりすることがあります。

    * 問題のデバッグに苦労しており、エラー情報内の情報だけでは不十分な場合は、[フォーラム](https://community.playfab.com/index.html) にアクセスしてください。

  * `local pfTestOutput = gui.get_node("pfOutput")`
    * これはもう一つの Defold GUI 関数です。PfGettingStarted.gui ファイルで定義された `pfOutput` GUI オブジェクトを取得し、ユーザーに表示するテキストを割り当てます。


## Related topics

- [Corona 向け Lua クイックスタート](/ja-jp/services/playfab/sdks/lua/quickstart-corona.md)
- [Linux 向け C++ クイックスタート](/ja-jp/services/playfab/sdks/playfab-cpp/quickstart-linux.md)
- [Windows 向け C++ クイックスタート](/ja-jp/services/playfab/sdks/playfab-cpp/quickstart-windows.md)
- [GDK 向け C/C++ クイックスタート](/ja-jp/services/playfab/sdks/playfab-cpp/quickstart-gdk.md)
- [クイックスタート Linux](/ja-jp/services/playfab/sdks/c/quickstart-linux.md)
