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

> Tutoriel sur la 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 tutoriel 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 (selon des niveaux de dépenses) : plus ils ont dépensé, plus le cadeau est précieux.
* Corriger l'état de joueur corrompu pour tous les joueurs touchés par un bogue récent du jeu.

Dans ce tutoriel, basé sur notre **Unicorn Battle Sample App**, nous accorderons un cadeau spécial à tous les joueurs ayant plus de **2 725 XP**.

## Prérequis

Vous devrez installer l'application d'exemple Unicorn Battle pour suivre ce tutoriel. Vous pouvez en apprendre davantage à son sujet [dans notre blogue](https://blog.playfab.com/blog/check-out-unicorn-battle), ou accéder directement au [dépôt GitHub](https://github.com/PlayFab/UnicornBattle) et y suivre les instructions.

<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* batailles afin de faire monter votre personnage au moins au **niveau 2**, que vous atteignez à **2 725 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 qui seront touché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** : **High XP Players**.
* Définissez-le comme **Player**, où la **Statistic Value** appelée **Total\_XP Gained** est supérieure à **2725**.

<Note>
  **REMARQUE :** Le système actuel de tâches planifiées peut traiter de 10 à 15 tâches par seconde par segment. Lorsque vous concevez vos segments, planifiez leur taille et la durée d'exécution des tâches. Il n'y a pas de limite à la 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 dimensionné en conséquence.
</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" />

Cela vous amènera à la vue **Create Task** de l'onglet **Servers**->**Tasks**, et préremplira divers champs 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.

* Changez le nom pour **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.
  * Code de **Virtual Currency** : **GM** (abréviation de **Gems**).
  * Montant : **20**
* Laissez la planification à **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 sera **InProgress**, mais il passera rapidement à **Succeeded**, puisque 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" />

Voyons maintenant le détail de l'exécution de la tâche. Sélectionnez la tâche terminée dans la liste **Tasks** précédemment exécutées. Vous verrez des renseignements importants, comme :

* Le nombre de joueurs traités.
* Le moment où la tâche a démarré.
* Le temps qu'elle a pris pour se terminer.
* Les paramètres qu'elle avait au moment 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 suivre 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 avec succès :

* 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 devrait être un **player\_virtual\_currency\_balance\_changed**, qui devrait montrer que les gemmes de votre **Player** ont augmenté de **20**.

<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" />

## Prochaines étapes

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

Voici quelques idées d'autres choses que vous pouvez 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 façon *récurrente*. Par exemple, vous pourriez créer un segment de tous les joueurs qui ont joué au jeu au cours des dernières 24 heures, puis exécuter une tâche planifiée chaque jour pour donner à 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 est l'exécution d'une fonction CloudScript arbitraire pour chaque joueur. Ce CloudScript peut faire tout ce que l'API serveur de PlayFab peut faire : accorder des objets, de la monnaie, inspecter et modifier les données des joueurs, et ainsi de suite.

Par exemple, imaginez que vous avez un classement d'événement qui se réinitialise chaque semaine, et que vous voulez parcourir tous les joueurs et leur donner une récompense en fonction de la valeur du *dernier* événement avant la réinitialisation. L'exemple fourni 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` change.

   <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 qui sera appelée par une tâche d'action en bloc, laquelle parcourra les joueurs et leur donnera 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**, et 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 d'exécution de CloudScript déclenché par une action de joueur (en sélectionnant l'horodatage), et voir le résultat détaillé de l'exécution de CloudScript pour chaque joueur. Cela comprend des renseignements 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

- [Segments de joueurs](/fr-CA/services/playfab/player-progression/player-data/player-segments.md)
- [Segmentation avancée avec les propriétés personnalisées de joueur](/fr-CA/services/playfab/live-service-management/game-configuration/segmentation/advanced-segmentation.md)
- [Obtenir une instance de tâche d'actions sur les joueurs d'un segment](/fr-CA/services/playfab/api-references/rest/admin/scheduled-task/get-actions-on-players-in-segment-task-instance.md)
- [Documentation de la gestion des services en direct PlayFab](/fr-CA/services/playfab/live-service-management/index.md)
- [Configuration des segments de joueurs](/fr-CA/services/playfab/player-progression/player-data/player-segment-configuration.md)
