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

# Implementación de versiones de prueba para su juego

> Opciones de versión de prueba disponibles en Microsoft Store para títulos del GDK: configuración de versiones de prueba gratuitas limitadas por uso en Partner Center e implementación de comprobaciones de versión de prueba en el juego.

Puede configurar varios tipos diferentes de versiones de prueba gratuitas para su juego:

* *Versiones de prueba gratuitas limitadas por tiempo*: estas versiones de prueba expiran después de que transcurra una cierta cantidad de tiempo de *calendario* (por ejemplo, siete días después de que el usuario descargue la versión de prueba, independientemente de cuánto tiempo la use).
* *Versiones de prueba gratuitas limitadas por uso*: permiten configurar que el usuario ejecute el juego durante una cierta cantidad de *tiempo de ejecución del juego* y, después, requieren que el usuario compre el juego para seguir usándolo.
* *Versiones de prueba seleccionadas*: estas versiones de prueba no tienen límites de expiración ni de tiempo de ejecución del juego, pero el juego puede limitar lo que se puede jugar. Es similar a una demostración, pero es necesario descargar el juego completo.

<Note>
  Las versiones de prueba basadas en tiempo y en uso están pensadas para ofrecerse una vez por título y por usuario, y no deben combinarse con otras ofertas de versión de prueba. Los derechos de versión de prueba expirados o agotados permanecen en la cuenta del usuario e impiden la adquisición de cualquier otra oferta de versión de prueba para el mismo juego. El tipo de versión de prueba no se puede modificar ni restablecer una vez que un cliente adquiere una versión de prueba.
</Note>

<Note>
  Algunas versiones de prueba son gratuitas, pero están limitadas a usuarios que poseen suscripciones específicas.
</Note>

Este artículo también se aplica a esas versiones de prueba.

<Note>
  Los juegos que se ejecutan como parte de las ofertas de **Free Play Days** no se ejecutan como versiones de prueba reales, sino que solo se pueden iniciar mediante licencias completas temporales.
</Note>

La configuración de versiones de prueba y las estructuras relacionadas no se aplican.

## Configuración de una versión de prueba limitada por uso en Partner Center

<Note>
  Solo puede acceder a esta característica si tiene los permisos adecuados y si su juego usa [licencias restrictivas](/publishing/xstore-commerce/xstore-open-restrictive-licensing).
</Note>

Para obtener más detalles, póngase en contacto con su administrador de cuentas de Microsoft.

Puede configurar versiones de prueba gratuitas limitadas por uso en Partner Center sin modificar el código del juego. Sin embargo, tiene que agregar código en los escenarios siguientes:

* Restringir el acceso a la versión de prueba solo al usuario que adquirió la versión de prueba en la tienda.
* Guardar el estado del juego entre sesiones de juego y trasladar el progreso del usuario de la versión de prueba al juego completo después de su compra.

1. En la página **Submission overview**, vaya a la página **Pricing and availability**.
2. En **Free trial**, abra el menú desplegable y, a continuación, seleccione **Usage-limited**.
3. En el segundo menú desplegable que aparece, seleccione el tiempo máximo que los usuarios pueden usar la aplicación.
4. Seleccione **Save**.

Después de publicar el juego en Microsoft Store, verá la información de la versión de prueba en la página del producto del juego.

## Restricción del acceso solo a los usuarios que adquirieron la versión de prueba

En algunos casos, puede que quiera permitir que solo los propietarios de la versión de prueba ejecuten el juego. Esta limitación es importante para una versión de prueba limitada por uso, ya que no querrá que otra persona consuma el tiempo de prueba de otra cuenta. Puede implementar esta funcionalidad comprobando la propiedad [XStoreGameLicense](/reference/system/xstore/xstore_members)`.isTrialOwnedByThisUser`. Si es `false`, bloquee al jugador actual para que no continúe e informe al usuario de que debe obtener su propia licencia de versión de prueba.

El usuario propietario de la licencia de versión de prueba activa se muestra en un mensaje cuando se inicia el juego de prueba:

<img src="https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/usagelimitedtrial.png?fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=d7ce2cbb02c139f99d5889ed54544e4d" alt="TCUI de versión de prueba limitada por uso: &#x22;<Gamertag>, you have less than x hours left&#x22;" 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" />

En el ejemplo de código siguiente se muestra cómo comprobar `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);
}
```

## Guardado del estado del juego para el usuario original de la versión de prueba

Los juegos habilitados para los servicios de XBOX que tienen campañas para un jugador u otros modos de juego que realizan un seguimiento del progreso entre sesiones usan el almacenamiento conectado para guardar el estado del juego. Sin embargo, con una versión de prueba limitada, un usuario de PC puede crear varias cuentas Microsoft y seguir jugando más allá del límite de tiempo mientras guarda el progreso (mediante la misma cuenta de XBOX). Para obtener más información sobre este escenario, consulte [Control de escenarios de cuentas de la Tienda no coincidentes en PC](/publishing/xstore-commerce/xstore-mismatched-accounts).

Esta laguna se puede evitar guardando el valor de [XStoreGameLicense](/reference/system/xstore/xstore_members)`.trialUniqueId` cuando se guarda el progreso del juego. Más adelante, cuando el usuario vuelva a jugar a la versión de prueba, puede comprobar si el valor de `trialUniqueId` coincide con el de la primera ejecución.

Este código presupone que el juego guarda el `trialUniqueId` como parte de los datos guardados del juego y que tiene una función `GetSavedTrialUniqueId` que devuelve este valor.

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

## Pruebas de versiones de prueba en desarrollo

Para poder probar el juego con una licencia de versión de prueba, primero debe configurarse el juego con una licencia de versión de prueba en Partner Center.

### XBOX

Para las compilaciones locales, se requiere una licencia real. Para las compilaciones sueltas y empaquetadas, es necesario aplicar una invalidación de identificador de contenido y de EKBID en MicrosoftGameConfig. Para obtener más información, consulte [Habilitación de las pruebas de licencia](/publishing/xstore-commerce/xstore-licensing-setup).

Tenga en cuenta que aquí debe usarse el EKBID real de una compilación de versión de prueba. Para obtener el EKBID, debe descargar la compilación del juego desde Microsoft Store con una cuenta que tenga una licencia de versión de prueba.

<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="PDP de versión de prueba con el botón &#x22;Install Free Trial&#x22; resaltado" width="1920" height="1080" data-path="images/xstore/pdptrial.webp" />

Una vez configurado, al iniciar con una cuenta de prueba que obtuvo la licencia de versión de prueba desde la tienda, `XStoreGameLicense` muestra atributos de versión de prueba precisos. Al iniciar la compilación, debería mostrarse la interfaz de usuario de notificación de la versión de prueba.

### PC

Igual que para habilitar compilaciones con una licencia completa: use la identidad de aplicación correcta en MicrosoftGame.config y asegúrese de que el identificador de contenido correcto esté en la ubicación del Registro, y la compilación respetará la licencia de la cuenta con sesión iniciada en la aplicación de Microsoft Store, ya sea de versión de prueba o de otro tipo.

## Documentación de referencia de la API

* [XStore (contenido de la API)](/reference/system/xstore/xstore_members)
  * Estructuras
    * [XStoreGameLicense](/reference/system/xstore/xstore_members)

## Consulte también

[Información general del comercio](/publishing/xstore-commerce/xstore-commerce-overview)

[Habilitación del desarrollo y las pruebas de XStore](/publishing/xstore-commerce/xstore-product-testing-setup)

[Habilitación de las pruebas de licencia](/publishing/xstore-commerce/xstore-licensing-setup)

[Referencia de la API XStore](/reference/system/xstore/xstore_members)


## Related topics

- [Habilitación de las pruebas de licencias](/es/publishing/xstore-commerce/xstore-licensing-setup.md)
- [Información general sobre las versiones de prueba](/es/publishing/game-publishing/concepts/availability/trials.md)
- [XStoreGameLicense](/es/reference/system/xstore/structs/xstoregamelicense.md)
- [Administración de un alias de compilación y asignación con él](/es/services/playfab/multiplayer/servers/allocating-with-build-alias.md)
- [Casos de prueba de los requisitos de XBOX para juegos de PC y móviles](/es/publishing/certification/pc-policy-tests.md)
