> ## 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.

# Démarrage rapide Lua pour Defold

> Configurez un projet Defold et effectuez votre premier appel d'API PlayFab en Lua à l'aide du SDK client PlayFab pour Defold, pour le développement de jeux multiplateformes.

Ce démarrage rapide vous aide à effectuer votre premier appel d'API PlayFab à l'aide de Defold.

Avant de pouvoir appeler une API PlayFab, vous devez disposer d'un [compte de développeur PlayFab](https://developer.playfab.com).

## Configuration du projet Defold

Système d'exploitation : ce guide est rédigé pour Windows 10. Il devrait également fonctionner correctement sur Mac.

1. Créez un compte et téléchargez Defold, ou connectez-vous sur [https://www.defold.com/](https://www.defold.com/) (utilise Google O-Auth) : [https://d.defold.com/stable/](https://d.defold.com/stable/).

2. Si vous n'avez pas encore suivi le « Getting Started Tutorial » de Defold, faites-le maintenant.

3. Créez un nouveau projet dans le tableau de bord Defold, comme illustré ci-dessous.

<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="Créer un nouveau projet Defold" width="162" height="376" data-path="images/playfab/sdks/lua/defold-add-project.png" />

4. Exécutez **Defold** et chargez votre nouveau projet. Plusieurs fenêtres semblables à l'exemple ci-dessous devraient s'afficher.

<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="Tableau de bord Defold" width="1626" height="1360" data-path="images/playfab/sdks/lua/defold-dashboard.png" />

5. Mettez à jour les paramètres du projet et incluez PlayFab dans les dépendances :

   [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="Ajouter PlayFab aux dépendances" width="865" height="294" data-path="images/playfab/sdks/lua/defold-dependency-1.png" />

6. Sélectionnez **Project** -> **Fetch Libraries**. Un nouveau dossier PlayFab intégré devrait apparaître, comme illustré ci-dessous.

<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="Récupérer les bibliothèques du projet" width="812" height="289" data-path="images/playfab/sdks/lua/defold-dependency-2.png" />

7. Créez quelques fichiers :

   * **main/PfGettingStarted.gui**

   * Sélectionnez le dossier « main » -> **new** -> **Gui File** -> **PfGettingStarted.gui**.

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

   * Sélectionnez le dossier « main » -> **new** -> **Gui Script File** -> **PfGettingStarted.gui\_script**.

8. Raccordez notre nouvelle interface graphique dans main.collection.

   * Sélectionnez main.collection pour l'ouvrir.

   * Dans le panneau Outline :
     * Sélectionnez **Add Game Object** (vous pouvez éventuellement le renommer en **PfGui**).
       * Sélectionnez le nouvel objet, puis **Add Component From File...**
         * PfGettingStarted.gui (créé ci-dessus).

   * Le panneau Outline affichant main.collection devrait ressembler à l'exemple ci-dessous.

     <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="Panneau Outline principal" width="259" height="110" data-path="images/playfab/sdks/lua/defold-main-outline.png" />

L'installation de PlayFab est terminée. Ce projet n'est pas encore prêt à être généré, mais nous corrigerons cela à l'étape suivante.

## Configurer votre premier appel d'API

Ce guide présente les étapes minimales nécessaires pour effectuer votre premier appel d'API PlayFab. La confirmation sera visible dans la fenêtre du jeu.

1. Dans l'éditeur Defold, double-cliquez sur **PfGettingStarted.gui\_script**.

2. Le fichier devrait s'ouvrir pour l'édition de texte.

3. Mettez à jour le contenu de PfGettingStarted.gui\_script comme indiqué ci-dessous.

<Note>
  Pour connaître le format correct de l'objet loginRequest de cet exemple, consultez la référence de l'API pour [LoginWithCustomID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid).
</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. Dans l'éditeur **Defold**, cliquez avec le bouton droit sur **PfGettingStarted.gui** -> **Open With** -> **Text Editor**. Malheureusement, cela modifie un paramètre interne de Defold, donc :

   * Rouvrez-le : cliquez avec le bouton droit sur **PfGettingStarted.gui** -> **Open With** -> **GUI Editor**. Cela rétablit le comportement par défaut.

   * Sélectionnez l'onglet d'édition de texte de **PfGettingStarted.gui**.

   * Mettez à jour le contenu texte de PfGettingStarted.gui comme indiqué ci-dessous.

```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
```

## Terminer et exécuter

Tout d'abord, assurez-vous que tout est enregistré et sélectionnez un autre onglet. Recherchez ensuite les marqueurs « \* » : il arrive que Defold ne s'actualise pas.

Ensuite, générez votre jeu (Ctrl+b ou via les menus : **Project** -> **Build and Launch**). Le texte suivant devrait s'afficher à l'écran :

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

Pour obtenir la liste de tous les appels d'API client disponibles, consultez notre documentation [Références de l'API PlayFab](/fr/services/playfab/api-references).

Bon codage !

## Analyse du code

* `PfGettingStarted.gui`
  * Nos instructions pour `PfGettingStarted.gui` visent la rapidité, pas l'apprentissage. Ce fichier est une définition d'interface graphique qui ajoute une zone de texte à l'écran et la lie à notre autre script : `PfGettingStarted.gui_script`. En règle générale, vous ne modifiez PAS ces fichiers sous forme de texte.
  * Pour obtenir des instructions appropriées sur la création de widgets d'interface graphique Defold, consultez ce guide :
  * [Scènes GUI dans Defold](https://www.defold.com/manuals/gui/)

* `PfGettingStarted.gui_script`
  * Instructions require et configuration.
    * `PlayFabClientApi` vous permet d'effectuer des appels à l'API Client ; c'est la raison de votre présence ici.
    * IPlayFabHttps et PlayFabHttps\_Defold :
      * Les plug-ins PlayFab pour Defold reposent sur le LuaSdk de PlayFab. Le langage Lua ne dispose pas d'un véritable module HTTPS. Chaque moteur de jeu qui utilise Lua implémente le sien. Ces deux variables indiquent à PlayFabSdk comment accéder à HTTPS. Vous n'avez besoin de le faire qu'une seule fois dans votre projet, dans la première scène. Sinon, il s'agit d'un code réutilisable obligatoire.

  * `PlayFabClientApi.settings.titleId = "144"`
    * Chaque projet utilisant PlayFab doit créer un titre unique sur le site web de PlayFab, que nous appelons Game Manager. Recherchez votre `titleId` dans Game Manager et remplacez `144` par votre `titleId`.

  * `function init(self)`
    * Fonction Defold : elle est appelée lors de l'initialisation de l'interface graphique.

  * `local loginRequest = { TitleId = PlayFabClientApi.settings.titleId, CustomId = "GettingStartedGuide", CreateAccount = true }`
    * La plupart des méthodes de l'API PlayFab nécessitent des paramètres d'entrée, et ces paramètres d'entrée sont regroupés dans un objet de requête
    * Chaque méthode d'API nécessite un objet de requête unique, avec un mélange de paramètres facultatifs et obligatoires
      * Pour `LoginWithCustomIDRequest`, il existe un paramètre obligatoire `CustomId`, qui identifie un joueur de manière unique, et `CreateAccount`, qui permet de créer un nouveau compte avec cet appel.
    * Pour la connexion, la plupart des développeurs voudront utiliser une méthode de connexion plus appropriée
      * Consultez la [documentation sur la connexion PlayFab](xref:titleid.playfabapi.com.client.authentication) pour obtenir la liste de toutes les méthodes de connexion et de leurs paramètres d'entrée. Les choix courants sont :
        * [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)`
    * Effectue l'appel d'API à l'aide de la requête et fournit des fonctions de rappel pour les cas de réussite et d'échec.

  * `function OnLoginSuccess(result)`
    * L'objet result de nombreux rappels de réussite d'API contient les informations demandées.
    * `LoginResult` contient des informations de base sur le joueur, mais pour la plupart des utilisateurs, la connexion est simplement une étape obligatoire avant d'appeler d'autres API.

  * `function OnLoginFailed(error)`
    * Les appels d'API peuvent échouer pour de nombreuses raisons, et vous devez toujours essayer de gérer les échecs.

    * Raisons pour lesquelles les appels d'API échouent (par ordre de probabilité)
      * PlayFabSettings.TitleId n'est pas défini. Si vous oubliez de définir titleId sur votre titre, rien ne fonctionnera.

      * Paramètres de la requête. Si vous n'avez pas fourni les informations correctes ou requises pour un appel d'API particulier, celui-ci échouera. Consultez `error.errorMessage`, `error.errorDetails` ou `error.GenerateErrorReport()` pour plus d'informations.

      * Problème de connectivité de l'appareil. Les téléphones portables perdent et retrouvent constamment la connectivité. Ainsi, n'importe quel appel d'API peut échouer de manière aléatoire à tout moment, puis fonctionner immédiatement après. Entrer dans un tunnel peut vous déconnecter complètement.

      * Problème de serveur PlayFab. Comme pour tout logiciel, des problèmes peuvent survenir. Consultez nos [notes de publication](/fr/services/playfab/release-notes) pour connaître les mises à jour.

      * Internet n'est pas fiable à 100 %. Parfois, le message est corrompu ou n'atteint pas le serveur PlayFab.

    * Si vous avez des difficultés à déboguer un problème et que les informations d'erreur ne suffisent pas, rendez-vous sur nos [forums](https://community.playfab.com/index.html)

  * `local pfTestOutput = gui.get_node("pfOutput")`
    * Il s'agit d'une autre fonction GUI de Defold. Elle récupère l'objet GUI `pfOutput` défini dans notre fichier PfGettingStarted.gui et lui attribue le texte à afficher à l'utilisateur.


## Related topics

- [Démarrage rapide Lua pour Corona](/fr/services/playfab/sdks/lua/quickstart-corona.md)
- [Démarrage rapide C++ pour Linux](/fr/services/playfab/sdks/playfab-cpp/quickstart-linux.md)
- [Démarrage rapide Unity](/fr/services/playfab/sdks/unity3d/quickstart.md)
- [Démarrage rapide C++ pour Windows](/fr/services/playfab/sdks/playfab-cpp/quickstart-windows.md)
- [Démarrage rapide Unreal Engine](/fr/services/playfab/sdks/unreal/quickstart.md)
