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

# Statistiques communautaires

> Créez des statistiques communautaires PlayFab qui agrègent les valeurs de tous les joueurs de votre titre pour alimenter des objectifs mondiaux, des événements et des étapes partagées.

Les statistiques communautaires sont un outil puissant pour accroître l'engagement et favoriser l'investissement des joueurs dans votre jeu. En agrégeant les statistiques au niveau du titre de jeu, les développeurs peuvent créer des objectifs et des défis partagés qui encouragent la collaboration entre les joueurs. Cette approche transforme les actions individuelles des joueurs en contributions à des objectifs communautaires, ce qui favorise un engagement durable à mesure que les joueurs collaborent pour atteindre des étapes collectives. Les joueurs ont le sentiment que leurs contributions individuelles comptent pour l'ensemble de la communauté, ce qui renforce leur lien avec le jeu et avec les autres joueurs.

Par exemple, imaginez la mise en place d'un combat de boss mondial dans lequel l'ensemble de la base de joueurs doit cumuler 10 millions d'éliminations en une semaine pour débloquer un événement spécial en jeu. En voyant la barre de progression de la communauté avancer à chacune de leurs contributions, les joueurs sont motivés pour contribuer à atteindre l'objectif. Ce comportement crée une puissante boucle de rétroaction d'investissement et de participation, en particulier lorsqu'elle est associée à des mises à jour de la progression en temps réel et à des récompenses d'étape en cours de route.

Avec PlayFab, vous pouvez facilement gérer les statistiques communautaires en définissant deux statistiques : l'une au niveau du joueur (source d'agrégation) et l'autre au niveau du titre ou du groupe (destination d'agrégation). Les mises à jour apportées aux statistiques des joueurs sont automatiquement agrégées dans la statistique de destination. Pour récupérer le score communautaire actuel, vous lisez les statistiques de l'entité de destination.

PlayFab prend en charge deux types de statistiques communautaires :

* **Au niveau du titre** : agrège toutes les mises à jour des joueurs dans une seule statistique à l'échelle du titre. Idéal pour les objectifs mondiaux partagés par l'ensemble de la base de joueurs.
* **Au niveau du groupe** : agrège les mises à jour des joueurs dans une statistique d'entité de groupe. Idéal pour les défis de clan, les objectifs de guilde ou les objectifs d'équipe, dans lesquels des sous-ensembles de joueurs travaillent à un objectif commun.

## Statistiques communautaires au niveau du titre

### Création de la définition de statistique source

Commencez par créer une définition de statistique pour les joueurs, qui sert de source d'agrégation :

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
{
    Name = "sourceStat",
    AuthenticationContext = context,
    EntityType = "title_player_account",
    VersionConfiguration = new VersionConfiguration()
    {
        MaxQueryableVersions = 1,
        ResetInterval = ResetInterval.Manual,
    },
    Columns = new List<StatisticColumn>()
    {
        new StatisticColumn()
        {
            Name = "Eliminations",
            AggregationMethod = StatisticAggregationMethod.Sum,
        },
    },
};

PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
```

### Création de la définition de statistique de destination

Créez ensuite une définition de statistique pour le titre, qui sert de destination d'agrégation. Spécifiez la définition de statistique des joueurs comme source d'agrégation de la définition de statistique du titre :

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
{
    Name = "communityStat",
    AuthenticationContext = context,
    EntityType = "title",
    Columns = new List<StatisticColumn>()
    {
        new StatisticColumn()
        {
            Name = "Eliminations",
            AggregationMethod = StatisticAggregationMethod.Sum,
        },
    },
    AggregationSources = new string[] { "sourceStat" };
};

PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
```

<Note>
  ***REMARQUE :*** Définissez
</Note>

`EntityType` sur `title` et `AggregationSources` pour qu'il référence la statistique définie au niveau du joueur.

Une fois la statistique communautaire créée, toutes les mises à jour effectuées au niveau du joueur commencent à être agrégées au niveau du titre. Le système agrège uniquement les nouvelles mises à jour. Si la statistique source existe depuis un certain temps, le système ne reporte pas ces valeurs historiques au niveau du titre.

### Lecture des statistiques communautaires du titre

Pour obtenir les scores actuels de la statistique au niveau du titre, lisez les statistiques de l'entité de titre :

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);

GetStatisticsRequest request = new GetStatisticsRequest()
{
    AuthenticationContext = context,
    Entity = new PlayFab.LeaderboardsModels.EntityKey()
    {
        Id = "<title id in hex>",
        Type = "title"
    },
};

PlayFabResult<GetStatisticsResponse> result = await statsAPI.GetStatisticsAsync(request); 
```

## Statistiques communautaires au niveau du groupe

Les statistiques communautaires au niveau du groupe vous permettent d'agréger les actions des joueurs au sein d'un groupe spécifique, comme un clan ou une guilde. Cette agrégation est utile pour des scénarios tels qu'un défi de clan, dans lequel les membres travaillent collectivement à un objectif commun.

### Création de la définition de statistique de destination

Créez une définition de statistique avec `EntityType` défini sur `group`. Spécifiez la définition de statistique des joueurs comme source d'agrégation :

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);
CreateStatisticDefinitionRequest statDefinitionRequest = new CreateStatisticDefinitionRequest()
{
    Name = "groupCommunityStat",
    AuthenticationContext = context,
    EntityType = "group",
    Columns = new List<StatisticColumn>()
    {
        new StatisticColumn()
        {
            Name = "Eliminations",
            AggregationMethod = StatisticAggregationMethod.Sum,
        },
    },
    AggregationSources = new string[] { "sourceStat" }
};

PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createStatDefResult = await statsAPI.CreateStatisticDefinitionAsync(statDefinitionRequest);
```

<Note>
  La définition de statistique source (au niveau du joueur) est la même que celle utilisée pour les statistiques communautaires au niveau du titre. Vous pouvez réutiliser une définition de statistique source existante.
</Note>

### Mise à jour de la statistique source

Lors de la mise à jour de la statistique source d'un joueur pour une agrégation au niveau du groupe, spécifiez l'entité de groupe cible dans la propriété `AggregationTargetEntityKeys` de l'objet `StatisticUpdate`. Cette propriété indique à PlayFab l'entité de groupe dans laquelle agréger la mise à jour.

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);

UpdateStatisticsRequest request = new UpdateStatisticsRequest()
{
    AuthenticationContext = context,
    Entity = new PlayFab.LeaderboardsModels.EntityKey()
    {
        Id = "<player entity id>",
        Type = "title_player_account"
    },
    Statistics = new List<StatisticUpdate>()
    {
        new StatisticUpdate()
        {
            Name = "sourceStat",
            Scores = new List<string> { "5" },
            AggregationTargetEntityKeys = new List<PlayFab.LeaderboardsModels.EntityKey>()
            {
                new PlayFab.LeaderboardsModels.EntityKey()
                {
                    Id = "<group entity id>",
                    Type = "group"
                }
            }
        }
    }
};

PlayFabResult<UpdateStatisticsResponse> result = await statsAPI.UpdateStatisticsAsync(request);
```

<Info>
  Pour les statistiques communautaires au niveau du titre, `AggregationTargetEntityKeys` n'est pas requis, car le titre est la cible d'agrégation par défaut. Pour les statistiques communautaires au niveau du groupe, vous devez spécifier la clé de l'entité de groupe. Actuellement, vous ne pouvez spécifier qu'une seule clé d'entité dans `AggregationTargetEntityKeys`.
</Info>

### Lecture des statistiques communautaires du groupe

Pour obtenir les scores actuels de la statistique communautaire du groupe, lisez les statistiques de l'entité de groupe :

```C# theme={null}
// Use the PlayFabAuthenticationContext to call the API
PlayFabProgressionInstanceAPI statsAPI = new PlayFabProgressionInstanceAPI(context);

GetStatisticsRequest request = new GetStatisticsRequest()
{
    AuthenticationContext = context,
    Entity = new PlayFab.LeaderboardsModels.EntityKey()
    {
        Id = "<group entity id>",
        Type = "group"
    },
};

PlayFabResult<GetStatisticsResponse> result = await statsAPI.GetStatisticsAsync(request);
```

## Restrictions

* Vous ne pouvez spécifier qu'une seule source d'agrégation pour la statistique communautaire.
* Vous ne pouvez pas spécifier de configuration de version pour la statistique communautaire. La configuration de version que vous spécifiez pour la statistique source s'applique également à la statistique communautaire.
* L'`EntityType` de la statistique communautaire doit être `title` ou `group`.
* Vous ne pouvez pas utiliser l'agrégation `Last` pour aucune des colonnes.
* Vous ne pouvez spécifier qu'une seule clé d'entité dans `AggregationTargetEntityKeys` lors de la mise à jour de la statistique source.

## Voir aussi

* [Créer des statistiques de base](/fr/services/playfab/player-progression/statistics/create-basic-statistics)
* [Aller plus loin avec les statistiques](/fr/services/playfab/player-progression/statistics/doing-more-statistics)
* [Statistiques saisonnières](/fr/services/playfab/player-progression/statistics/seasonal-statistics)
* [Ajouter des données contextuelles aux statistiques](/fr/services/playfab/player-progression/statistics/metadata-statistics)
* [Référence de l'API](/fr/services/playfab/player-progression/statistics/api-reference)
* [Limites](/fr/services/playfab/player-progression/statistics/limits-statistics)
* [Quota](/fr/services/playfab/player-progression/statistics/quota-statistics)
* [Compteurs des statistiques](/fr/services/playfab/pricing/meters/statistics-meters)


## Related topics

- [Documentation de PlayFab Player progression](/fr/services/playfab/player-progression/index.md)
- [Compteurs Statistics](/fr/services/playfab/pricing/meters/statistics-meters.md)
- [Vue d'ensemble des statistiques gérées par le titre](/fr/services/xbox-services/player-data/stats-leaderboards/title-managed/live-stats-tm-overview.md)
- [Vue d'ensemble de Godot et des moteurs communautaires](/fr/paths/community-engines/overview.md)
- [Statistiques saisonnières](/fr/services/playfab/player-progression/statistics/seasonal-statistics.md)
