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

# Mettre en œuvre des essais pour votre jeu

> Options d'essai offertes dans le Microsoft Store pour les titres GDK : configuration d'essais gratuits limités à l'utilisation dans Partner Center et mise en œuvre des vérifications d'essai dans le jeu.

Vous pouvez configurer plusieurs types d'essais gratuits pour votre jeu :

* *Essais gratuits limités dans le temps* : ces essais expirent après un certain délai *calendaire* (par exemple, sept jours après que l'utilisateur a téléchargé l'essai, peu importe la durée pendant laquelle il l'utilise).
* *Essais gratuits limités à l'utilisation* : permettent de laisser l'utilisateur exécuter le jeu pendant une certaine durée de *temps de jeu*, puis exigent que l'utilisateur achète le jeu pour continuer à l'utiliser.
* *Essais organisés* : ces essais n'ont aucune limite d'expiration ni de temps de jeu, mais le jeu peut limiter ce qui est jouable. Semblable à une démo, mais le jeu complet doit être téléchargé.

<Note>
  Les essais basés sur le temps et sur l'utilisation sont destinés à être offerts une seule fois par titre et par utilisateur, et ne doivent pas être combinés avec d'autres offres d'essai. Les droits d'utilisation d'essai expirés ou épuisés restent sur le compte de l'utilisateur et empêchent l'acquisition de toute autre offre d'essai pour le même jeu. Le type d'essai ne peut pas être modifié ni réinitialisé une fois qu'un essai a été acquis par un client.
</Note>

<Note>
  Certains essais sont gratuits, mais sont limités aux utilisateurs qui possèdent des abonnements précis.
</Note>

Cet article s'applique également à ces essais.

<Note>
  Les jeux exécutés dans le cadre des offres **Free Play Days** ne sont pas exécutés en tant qu'essais réels; ils ne peuvent être lancés qu'au moyen de licences complètes temporaires.
</Note>

La configuration des essais et les structures connexes ne s'appliquent pas.

## Configurer un essai limité à l'utilisation dans Partner Center

<Note>
  Vous pouvez accéder à cette fonctionnalité uniquement si vous disposez des autorisations appropriées et si votre jeu utilise une [licence restrictive](/fr-CA/publishing/xstore-commerce/xstore-open-restrictive-licensing).
</Note>

Pour plus de détails, communiquez avec votre gestionnaire de compte Microsoft.

Vous pouvez configurer des essais gratuits limités à l'utilisation dans Partner Center sans modifier le code du jeu. Cependant, vous devez ajouter du code dans les scénarios suivants :

* Restreindre l'accès à l'essai uniquement à l'utilisateur qui a acquis l'essai dans le Store.
* Enregistrer l'état du jeu entre les sessions de jeu et reporter la progression de l'utilisateur de l'essai vers le jeu complet après son achat.

1. À partir de la page **Submission overview**, accédez à la page **Pricing and availability**.
2. Sous **Free trial**, ouvrez le menu déroulant, puis sélectionnez **Usage-limited**.
3. Dans le deuxième menu déroulant qui apparaît, sélectionnez la durée maximale pendant laquelle les utilisateurs peuvent utiliser votre application.
4. Sélectionnez **Save**.

Une fois votre jeu publié dans le Microsoft Store, les informations sur l'essai s'affichent sur la page de produit du jeu.

## Restreindre l'accès aux seuls utilisateurs qui ont acquis l'essai

Dans certains cas, vous pourriez vouloir permettre uniquement aux propriétaires de l'essai d'exécuter le jeu. Cette limitation est importante pour un essai limité à l'utilisation, car vous ne voulez pas qu'une autre personne épuise le temps d'essai d'un autre compte. Vous pouvez mettre en œuvre cette fonctionnalité en vérifiant la propriété [XStoreGameLicense](/fr-CA/reference/system/xstore/xstore_members)`.isTrialOwnedByThisUser`. Si elle est `false`, empêchez le joueur actuel de continuer et informez l'utilisateur qu'il doit obtenir sa propre licence d'essai.

L'utilisateur qui possède la licence d'essai active est affiché dans un message lorsque le jeu d'essai est lancé :

<img src="https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=d7ce2cbb02c139f99d5889ed54544e4d" alt="TCUI d'essai limité à l'utilisation : « <Gamertag>, il vous reste moins de x heures »" data-og-width="1920" width="1920" data-og-height="1080" height="1080" data-path="images/xstore/usagelimitedtrial.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=280&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=d11e00e9c546a270c8ab17a9981600d5 280w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=560&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=75d1c3815a7b5eec324c2564ef839d98 560w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=840&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=e958634047e60a3904ae7421171837d3 840w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=1100&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=78eee31f32eee6cca22f80c9e518215f 1100w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=1650&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=670602c28fd5ebae7c8a75806cf0e899 1650w, https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?w=2500&fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=94c27565ad1aaf55b4b661a4f260e418 2500w" />

L'exemple de code suivant montre comment vérifier `isTrialOwnedByThisUser`.

```cpp theme={null}
void CALLBACK GameLicenseTrialCheck(XAsyncBlock* asyncBlock)
{
    XStoreGameLicense result{};

    HRESULT hr = XStoreQueryGameLicenseResult(
        asyncBlock,
        &result);

    // Is this a trial?
    if (result.isActive && result.isTrial)
    {
        // Is this trial owned by this user?  
        if (!result.isTrialOwnedByThisUser)
        {
            // The user can't use another user's trial time. Show an error message.
        }
    }
}

void QueryGameLicense(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle)
{
    auto async = new XAsyncBlock{};
     asyncBlock->queue = m_asyncQueue;
    asyncBlock->callback = GameLicenseTrialCheck;

    HRESULT hr = XStoreQueryGameLicenseAsync(
        storeContextHandle,
        async);
}
```

## Enregistrer l'état du jeu pour l'utilisateur de l'essai d'origine

Les jeux compatibles avec les services XBOX qui comportent des campagnes solo ou d'autres modes de jeu qui suivent la progression entre les sessions utilisent le stockage connecté pour enregistrer l'état du jeu. Avec un essai limité, toutefois, un utilisateur PC peut créer plusieurs comptes Microsoft et continuer à jouer au-delà de la limite de temps tout en enregistrant sa progression (en utilisant le même compte XBOX). Pour plus d'informations sur ce scénario, consultez [Gestion des scénarios de comptes Store non concordants sur PC](/fr-CA/publishing/xstore-commerce/xstore-mismatched-accounts).

Cette faille peut être évitée en enregistrant la valeur [XStoreGameLicense](/fr-CA/reference/system/xstore/xstore_members)`.trialUniqueId` lorsque la progression du jeu est enregistrée. Plus tard, lorsque l'utilisateur recommence à jouer à l'essai, vous pouvez vérifier si la valeur `trialUniqueId` correspond à celle de la première exécution.

Ce code suppose que le jeu enregistre le `trialUniqueId` dans la sauvegarde du jeu et qu'il dispose d'une fonction `GetSavedTrialUniqueId` qui renvoie cette valeur.

```cpp theme={null}
void CALLBACK GameLicenseTrialCheck(XAsyncBlock* asyncBlock)
{
    XStoreGameLicense result{};

    HRESULT hr = XStoreQueryGameLicenseResult(
        asyncBlock,
        &result);

    // Is this a trial?
    if (result.isActive && result.isTrial)
    {
        // Is this trial owned by this user?
        if (!result.isTrialOwnedByThisUser)
        {
            // The user can't use another user's trial time. Show an error message.
        }
        else
        {
            // Read the trialUniqueId that was saved with the game on the first run.
            char trialUniqueId = GetSavedTrialUniqueId();
            if (trialUniqueId != result.trialUniqueId)
            {
                // Because the IDs don't match, start the game from the beginning.
            }
        }
    }
}
```

## Tester les essais en développement

Pour tester votre jeu avec une licence d'essai, le jeu doit d'abord être configuré avec une licence d'essai dans Partner Center.

### XBOX

Pour les builds locales, une licence réelle est requise. Pour les builds non empaquetées (loose) et empaquetées, il faut appliquer une substitution de l'ID de contenu et de l'EKBID dans MicrosoftGameConfig. Pour plus d'informations, consultez [Activation des tests de licence](/fr-CA/publishing/xstore-commerce/xstore-licensing-setup).

Notez que l'EKBID réel d'une build d'essai doit être utilisé ici. Pour obtenir l'EKBID, vous devez télécharger la build du jeu à partir du Microsoft Store avec un compte qui possède une licence d'essai.

<img src="https://mintcdn.com/microsoft-4404708b/hprF_XHEe0cnRr8N/images/xstore/pdptrial.webp?fit=max&auto=format&n=hprF_XHEe0cnRr8N&q=85&s=c3119c04473575c1054c89a8dc840976" alt="Page de détails du produit d'essai avec le bouton « Install Free Trial » mis en évidence" width="1920" height="1080" data-path="images/xstore/pdptrial.webp" />

Une fois la configuration terminée, lors d'un lancement avec un compte de test qui a obtenu la licence d'essai dans le Store, `XStoreGameLicense` présente des attributs d'essai exacts. Le lancement de la build devrait afficher l'interface utilisateur de notification d'essai.

### PC

La procédure est la même que pour activer des builds avec une licence complète : utilisez l'identité d'application appropriée dans MicrosoftGame.config et assurez-vous que l'ID de contenu approprié se trouve à l'emplacement du registre; la build respecte alors la licence du compte connecté à l'application Microsoft Store, qu'il s'agisse d'un essai ou non.

## Documentation de référence des API

* [XStore (contenu de l'API)](/fr-CA/reference/system/xstore/xstore_members)
  * Structures
    * [XStoreGameLicense](/fr-CA/reference/system/xstore/xstore_members)

## Voir aussi

[Vue d'ensemble du commerce](/fr-CA/publishing/xstore-commerce/xstore-commerce-overview)

[Activation du développement et des tests XStore](/fr-CA/publishing/xstore-commerce/xstore-product-testing-setup)

[Activation des tests de licence](/fr-CA/publishing/xstore-commerce/xstore-licensing-setup)

[Référence de l'API XStore](/fr-CA/reference/system/xstore/xstore_members)


## Related topics

- [Exigences XBOX pour les jeux XBOX](/fr-CA/publishing/certification/xbox-requirements.md)
- [XBOX Requirements pour les jeux XBOX](/fr/publishing/certification/xbox-requirements.md)
- [Exigences XBOX testées lors de la certification pour les jeux sur console XBOX](/fr-CA/publishing/certification/console-cert-tested-requirements.md)
- [Cas de test les plus souvent en échec](/fr-CA/publishing/certification/xr-top-failing.md)
- [XR-115 Ajout et retrait d'utilisateurs ou de manettes pendant le jeu](/fr-CA/publishing/certification/xr/xr-115.md)
