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

# Actions en bloc pour un segment de joueurs entier

> Didacticiel de création d'une tâche PlayFab qui exécute une ou plusieurs actions en bloc, comme l'octroi de récompenses, sur chaque joueur d'un segment cible.

Ce didacticiel vous guide à travers les étapes nécessaires pour créer une tâche qui effectue une ou plusieurs actions sur chaque joueur d'un segment.

Les tâches sont un élément essentiel des opérations en direct de tout jeu. Elles vous offrent un ensemble d'outils puissants pour interagir avec vos joueurs.

Voici quelques exemples :

* Offrir un cadeau spécial du Nouvel An à tous les joueurs qui se sont connectés au cours des 2 dernières semaines.
* Récompenser les joueurs qui ont dépensé de l'argent au cours de la dernière semaine (en fonction de paliers de dépenses), le cadeau étant d'autant plus précieux qu'ils ont dépensé davantage.
* Corriger l'état corrompu des joueurs pour tous les joueurs affectés par un bogue récent du jeu.

Dans ce didacticiel, basé sur notre **exemple d'application Unicorn Battle**, nous allons accorder un cadeau spécial à tous les joueurs ayant plus de **2 725 XP**.

## Prérequis

Vous devez installer l'exemple d'application Unicorn Battle pour suivre ce didacticiel. Vous pouvez en savoir plus [sur notre blog](https://blog.playfab.com/blog/check-out-unicorn-battle) ou accéder directement au [dépôt GitHub](https://github.com/PlayFab/UnicornBattle) et suivre les instructions qui s'y trouvent.

<img src="https://mintcdn.com/microsoft-4404708b/YzmQFdAfhA-NTCPa/images/playfab/data-analytics/acting-data/tutorials/unicorn-battle-launch-screen.webp?fit=max&auto=format&n=YzmQFdAfhA-NTCPa&q=85&s=682e9a99bb6293229a452095255ce2f2" alt="Unicorn Battle - Écran de lancement" width="2560" height="1440" data-path="images/playfab/data-analytics/acting-data/tutorials/unicorn-battle-launch-screen.webp" />

Vous devrez jouer *plusieurs* combats afin de faire monter votre personnage au moins au **niveau 2**, que vous atteignez à **2 725 points d'XP**.

<img src="https://mintcdn.com/microsoft-4404708b/YzmQFdAfhA-NTCPa/images/playfab/data-analytics/acting-data/tutorials/unicorn-battle-level-two.webp?fit=max&auto=format&n=YzmQFdAfhA-NTCPa&q=85&s=0f47eb0af3bb618e2aa449df163305f0" alt="Unicorn Battle - Niveau 2" width="2560" height="1440" data-path="images/playfab/data-analytics/acting-data/tutorials/unicorn-battle-level-two.webp" />

## Étape 1 - Créer le segment

La première étape consiste à créer le segment qui définit le groupe de joueurs concernés par cette action. Dans ce cas, nous devons créer le **segment High XP**, défini comme tous les joueurs ayant plus de **2 725 XP** :

* Sélectionnez **PlayStream** dans le menu de gauche.
* Choisissez l'onglet **Segments**.
* Sélectionnez ensuite le bouton **New Segment**.
* Définissez le **Segment Name** sur **High XP Players**.
* Définissez-le comme **Player**, où la **Statistic Value** nommée **Total\_XP Gained** est supérieure à **2725**.

<Note>
  **REMARQUE :** le système actuel de tâches planifiées peut traiter 10 à 15 tâches par seconde et par segment. Lorsque vous concevez vos segments, anticipez leur taille et la durée d'exécution de la tâche. Il n'existe aucune limite de durée d'exécution d'une tâche, mais si la tâche doit être exécutée dans un délai précis, le segment doit être correctement dimensionné.
</Note>

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-high-xp-players.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=277244d7f9813aa8821acc626b4a903a" alt="Game Manager - PlayStream - Segments - High XP Players" width="1394" height="817" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-high-xp-players.png" />

## Étape 2 - Créer une tâche pour ce segment

* Sélectionnez l'onglet **Segments**.
* Sélectionnez ensuite **RUN TASK …**

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-run-task.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=82870774c3122881a0419e880078401d" alt="Game Manager - PlayStream - Segments - Run Task" width="902" height="598" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-run-task.png" />

Vous accédez alors à la vue **Create Task** de l'onglet **Servers**->**Tasks**, et divers champs sont pré-remplis en fonction du segment sélectionné.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-task-create-task.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=155bf1e0a504d077fc5aeea920791f65" alt="Game Manager - Servers - Task - Create Task" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-task-create-task.png" />

## Étape 3 - Ajouter des actions à la tâche

Vous pouvez ensuite terminer la configuration de la tâche.

* Remplacez le nom par **Reward High XP Players**
* Ajoutez cette description : **Give a gift to Players who are level 2 or higher**.
* Sélectionnez **ADD ACTION**
  * Tapez **Grant virtual currency** dans le champ prévu à cet effet.
  * Code de **Virtual Currency** : **GM** (abréviation de **Gems**).
  * Montant : **20**
* Laissez la planification sur **Manually** pour l'instant.
* Sélectionnez le bouton **SAVE AND RUN** pour exécuter la tâche.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-task-add-action-save-and-run.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=88be2126823b5296a972acebe78fb0e8" alt="Game Manager - Servers - Task - Add Action - Save and Run" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-task-add-action-save-and-run.png" />

## Étape 4 - Surveiller votre tâche

La vue **Tasks** affiche votre tâche en cours d'exécution. Au départ, l'état de la tâche est **InProgress**, mais il passe rapidement à **Succeeded**, car le segment est petit.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-task-succeeded.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=f947e3bac92c4b78e3dd01f55d9a1ca3" alt="Game Manager - Servers - Tasks - Task Succeeded" width="1280" height="720" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-task-succeeded.png" />

Examinons maintenant le détail de l'exécution de la tâche. Sélectionnez la tâche terminée dans la liste des **Tasks** précédemment exécutées. Vous verrez des informations importantes, telles que :

* Le nombre de joueurs traités.
* L'heure de démarrage de la tâche.
* La durée nécessaire à son exécution.
* Les paramètres dont elle disposait lors de son lancement.
* La personne qui l'a exécutée.
* Si elle a été planifiée manuellement, etc.

Si la tâche est toujours en cours, vous pouvez consulter la vue **Task Instance Detail** pour connaître sa progression et voir le temps restant estimé.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-task-instance-details.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=6a29866408f6240c680cc1a48d0d0130" alt="Game Manager - Servers - Tasks - Task Instance Details" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-task-instance-details.png" />

Pour vérifier que la tâche s'est exécutée correctement :

* Accédez à l'onglet **Players**.
* Sélectionnez votre **Player**.
* Choisissez ensuite l'onglet **Event History**.
* L'événement le plus récent de la liste doit être un **player\_virtual\_currency\_balance\_changed**, qui doit montrer une augmentation de **20** gemmes pour votre **Player**.

<Note>
  Vous pouvez développer cet événement pour en voir les détails.
</Note>

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-event-history-event-detail.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=8f5be92d094f953e458edc23c05339b9" alt="Game Manager - Event History - Event Detail" width="1458" height="622" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-event-history-event-detail.png" />

## Étapes suivantes

Ce didacticiel vous a présenté les étapes nécessaires pour effectuer une action pour chaque joueur d'un segment, mais vous pouvez faire bien plus avec les tâches.

Voici quelques idées d'autres choses à essayer...

### Planifier vos tâches

Vous n'avez pas besoin d'exécuter les tâches manuellement : vous pouvez planifier une tâche pour qu'elle s'exécute *automatiquement* de manière *récurrente*. Par exemple, vous pouvez créer un segment de tous les joueurs ayant joué au jeu au cours des dernières 24 heures, puis exécuter une tâche planifiée chaque jour pour accorder à ces joueurs un bonus d'XP.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-players-in-24-hours.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=011c1636bdcf356fef0958937679cdb6" alt="Game Manager - PlayStream - Segments - Players in 24 hours" width="780" height="815" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-segments-players-in-24-hours.png" />

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-scheduled-task.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=b818b7055457a8d9e13d6128d9e0e31b" alt="Game Manager - Servers - Tasks - Scheduled Task" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/game-manager-servers-tasks-scheduled-task.png" />

### Exécuter CloudScript pour chaque joueur

L'utilisation la plus puissante des actions en bloc consiste à exécuter une fonction CloudScript arbitraire pour chaque joueur. Ce CloudScript peut faire tout ce que l'API serveur PlayFab permet : accorder des objets et de la monnaie, inspecter et modifier les données des joueurs, etc.

Par exemple, imaginez que vous disposiez d'un classement d'événement qui se réinitialise chaque semaine, et que vous souhaitiez parcourir tous les joueurs et leur accorder une récompense basée sur la valeur du *dernier* événement avant la réinitialisation. L'exemple ci-dessous utilise **Unicorn Battle**.

1. Créez une nouvelle statistique **Event\_QuestsCompleted**, qui se réinitialise chaque semaine et utilise la méthode d'agrégation **Last**.

   <img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/players-leaderboards-edit-leaderboard.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=dc418906c884b0c685d0a4d05393dd7a" alt="Players - Leaderboards - Edit Leaderboard" width="571" height="541" data-path="images/playfab/data-analytics/acting-data/tutorials/players-leaderboards-edit-leaderboard.png" />

2. Créez une nouvelle action PlayStream qui incrémente cette statistique `Event_QuestsCompleted` chaque fois que `Total_QuestsCompleted` est modifiée.

   <img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/playstream-event-actions-edit-event-action.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=7f0d65c83146783af200454981eec9c6" alt="PlayStream - Event Actions - Edit Event Action" width="1043" height="943" data-path="images/playfab/data-analytics/acting-data/tutorials/playstream-event-actions-edit-event-action.png" />

3. Écrivez une fonction CloudScript destinée à être appelée par une tâche d'action en bloc, qui parcourra les joueurs et accordera des récompenses en fonction de la dernière valeur.

```javascript theme={null}
// this function will be called as a bulk action by a scheduled task for players in a segment
handlers.GiveTieredReward = function (args, context) {
    var profile = context.playerProfile;

    var statVersion = 0;        // set to whatever version you need to use

    var getStatRequest = {};
    getStatRequest.PlayFabId = profile.PlayerId;
    getStatRequest.StatisticNameVersions = [{ "StatisticName": "Event_QuestsCompleted", "Version": statVersion }];

    try {
        getStatRequest.PlayerResult = server.GetPlayerStatistics(getStatRequest);
    } catch (e) {
    };

    if (getStatRequest.PlayerResult && getStatRequest.PlayerResult.Statistics.length > 0) {
        getStatRequest.lastScore = getStatRequest.PlayerResult.Statistics[0].Value
    }

    if (getStatRequest.lastScore && getStatRequest.lastScore > 2) {
        // give gift to all players with more than 2 quests completed in last event
        // in a real event we would want to use a lookup table of gifts
        // but here we are just hard-coding it
        var giftRequest = {};
        giftRequest.PlayFabId = profile.PlayerId;
        giftRequest.ItemIds = ["CrystalKey"];
        giftRequest.grantResult = server.GrantItemsToUser(giftRequest);
        return giftRequest;
    } else {
        return getStatRequest;
    }
}
```

4. Définissez la nouvelle version de CloudScript sur **Live**, puis créez une nouvelle tâche qui appelle la fonction `GiveTieredReward` pour tous les joueurs. N'oubliez pas d'enregistrer (**Save**) et d'exécuter (**Run**) la tâche.

   <img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/servers-tasks-new-scheduled-task.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=984b0ca050712fd0ad357ed1aa8365dd" alt="Servers - Tasks - New Scheduled Task" width="1280" height="900" data-path="images/playfab/data-analytics/acting-data/tutorials/servers-tasks-new-scheduled-task.png" />

5. Vous devriez voir apparaître les événements de cette tâche dans le débogueur d'événements PlayStream.

   <img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/playstream-dashboard-event-debugger.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=aed7ba302609d3de83967a15e6ffaff4" alt="PlayStream - Dashboard - Event Debugger" width="3079" height="1050" data-path="images/playfab/data-analytics/acting-data/tutorials/playstream-dashboard-event-debugger.png" />

6. Vous pouvez sélectionner n'importe quel événement « player triggered action executed CloudScript » (en sélectionnant l'horodatage) et voir le résultat détaillé de l'exécution de CloudScript pour chaque joueur. Cela inclut des informations de diagnostic utiles, comme l'instantané du profil du joueur au moment de l'exécution de CloudScript.

   <img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/tutorials/playstream-dashboard-raw-event-json.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=02ea8cca957596e793448dfa583d7c0c" alt="PlayStream - Dashboard - Raw Event JSON" width="1464" height="1923" data-path="images/playfab/data-analytics/acting-data/tutorials/playstream-dashboard-raw-event-json.png" />


## Related topics

- [XR-015 Gestion des communications entre joueurs](/fr/publishing/certification/xr/xr-015.md)
- [XR-015 Gestion des communications des joueurs](/fr-CA/publishing/certification/xr/xr-015.md)
- [Étapes de test de validation des supports](/fr-CA/publishing/game-publishing/concepts/certification/certification-media-validation-test-steps.md)
- [Exigences XBOX testées lors de la certification pour les jeux sur console XBOX](/fr/publishing/certification/console-cert-tested-requirements.md)
- [XR-018 : Contenu généré par l'utilisateur](/fr/publishing/certification/xr/xr-018.md)
