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

# Compatibilidad con Games-as-a-Service (GaaS)

> Compatibilidad con Games-as-a-Service (GaaS)

En lugar de ser un juego independiente que se publica en un momento concreto, algunos juegos están
cambiando a un modelo en el que se tratan como un servicio, recibiendo temporadas o actualizaciones que mantienen esos
juegos actualizados durante muchos años. Este modelo se denomina Games-as-a-Service (GaaS). El GDK tiene buena
compatibilidad con este modelo. Este documento proporciona información general sobre los procedimientos recomendados que se deben tener en cuenta al
usar el GDK para admitir la publicación de un juego como servicio.

## Adopción del GDK

Cada GDK solo se admite durante un año. Aunque los juegos existentes pueden seguir publicándose con un
GDK retirado, esto puede ser problemático para los juegos que se publican como servicio. Los juegos que introducen nuevas características después
de que se haya retirado un GDK pueden encontrar errores o problemas de integración que no se vieron en casos de uso
anteriores del GDK. Del mismo modo, el juego puede querer aprovechar características que solo se encuentran en los
GDK más recientes que se van publicando.

Un juego debe compilarse con un único GDK. Los juegos no pueden mezclar componentes de un GDK con otro. En
la consola, el juego solo incluye un único Game OS y las distintas bibliotecas del GDK pueden tener
dependencias de ese sistema operativo subyacente. En PC, solo se carga una versión del entorno de ejecución de juegos en
el proceso del juego, lo que crea un entorno de "versión única" similar al que se ve en la consola.

Se recomienda que los títulos GaaS se actualicen periódicamente a un GDK publicado más recientemente que aún
esté en soporte.

## Entrega inteligente

Los títulos GaaS pueden crecer cada vez más a lo largo de los años con la introducción de nuevo contenido. Los jugadores
pueden tener cantidades limitadas de espacio de almacenamiento. Esto podría afectar a su capacidad para instalar la
actualización más reciente del juego. Si bien es cierto que los jugadores tienen la capacidad de administrar sus propios espacios de almacenamiento, los
juegos creados con [Entrega inteligente](/build/core-features/common/packaging/overviews/intelligentdelivery) dan al jugador más flexibilidad y
opciones en cuanto a cómo usar su espacio de almacenamiento, más allá de desinstalar juegos completos, y permiten a
los jugadores mantener más juegos instalados en sus dispositivos durante mucho más tiempo.

Con la Entrega inteligente, los juegos pueden aprovechar
[características y recetas](/build/core-features/common/packaging/intelligentdelivery-features-recipes), eligiendo qué se instala de forma
predeterminada y dando a los juegos la capacidad de administrar qué partes del juego quieren mantener instaladas
y qué partes pueden querer quitar porque ya no las usan.

Los títulos GaaS podrían optar por colocar su nuevo contenido en características independientes para habilitar este tipo de
administración. La idea es que el nuevo contenido sea un [artículo duradero](https://learn.microsoft.com/build/store/commerce/fundamentals/xstore-dwobs). Esta es una sugerencia
que facilitaría esta administración:

1. En el archivo de diseño del juego, haga que cada artículo duradero corresponda a una **Feature**.
2. La **Feature** declarará una o varias **Tags** que se pueden usar para indicar cuáles de los
   fragmentos del archivo de diseño deben instalarse si el jugador tiene una licencia para ese contenido.
3. Asegúrese de que el archivo de diseño incluye una **Recipe** que tenga un elemento secundario de identificador de la Store. Esta receta
   debe hacer referencia a una única característica que corresponda al mismo identificador de la Store. Agregar la receta
   garantizará que, si el jugador ya ha comprado este contenido anteriormente, se instale automáticamente.
   > \[!NOTE]
   > Puede haber otras características y recetas que no tengan nada que ver con los artículos duraderos.

Seguir esta recomendación significa que los juegos podrán entonces:

1. Llamar a [XPackageEnumerateFeatures](/reference/system/xpackage/functions/xpackageenumeratefeatures) para enumerar las características.
2. Usar el identificador de la Store devuelto que está en [XPackageFeature](/reference/system/xpackage/structs/xpackagefeature) para comprobar la
   licencia, consultar más detalles o invocar los flujos de compra de la Store.

Todos los juegos de más de 40 GB deberían considerar seriamente usar
[Entrega inteligente](/build/core-features/common/packaging/overviews/intelligentdelivery). Los juegos pueden considerar el uso de artículos duraderos para admitir GaaS.

## Contenido descargable

En lugar de evolucionar continuamente su paquete base, algunos títulos GaaS pueden optar por evolucionar a lo largo de los
años mediante [contenido descargable (DLC)](/build/core-features/common/packaging/packaging-downloadable-content-dlc). Los juegos pueden optar
por colocar recursos o código ejecutable en ese DLC. Con el código ejecutable hay dos rutas posibles:
DLL y EXE.

Si el juego coloca archivos DLL en su DLC, puede:

1. Montar ese DLC mediante [XPackageMountWithUiAsync](/reference/system/xpackage/functions/xpackagemountwithuiasync).
2. Usar [LoadLibraryEx](https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa).
3. Todo el DLC montado anteriormente permanece montado.

Si el juego coloca un archivo EXE en su DLC, puede:

1. Montar ese DLC mediante [XPackageMountWithUiAsync](/reference/system/xpackage/functions/xpackagemountwithuiasync).
2. Llamar a [XLaunchNewGames](/reference/system/xgame/functions/xlaunchnewgame) usando la ruta de acceso del DLC montado.
3. El proceso del juego existente se terminará.
4. Todo el DLC excepto el destino de **XLaunchNewGames** se desmontará.
5. La unidad **G:** seguirá apuntando a la raíz del paquete base y no al EXE recién
   iniciado.

Se recomienda que los juegos que coloquen código ejecutable en su DLC accedan a ese código ejecutable mediante
[LoadLibraryEx](https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa).

## Documentación de referencia de las API

* [XPackage (contenido de la API)](/reference/system/xpackage/xpackage_members)
  * Funciones
    * [XPackageEnumerateFeatures](/reference/system/xpackage/functions/xpackageenumeratefeatures)
    * [XPackageMountWithUiAsync](/reference/system/xpackage/functions/xpackagemountwithuiasync)
  * Estructuras
    * [XPackageFeature](/reference/system/xpackage/structs/xpackagefeature)
* [xgame (contenido de la API)](/reference/system/xgame/xgame_members)
  * Funciones
    * [XLaunchNewGames](/reference/system/xgame/functions/xlaunchnewgame)

## Consulte también

[Contenido descargable (DLC)](/build/core-features/common/packaging/packaging-downloadable-content-dlc)
[Características y recetas](/build/core-features/common/packaging/intelligentdelivery-features-recipes)
[Entrega inteligente](/build/core-features/common/packaging/overviews/intelligentdelivery)
[XPackageMountWithUiAsync](/reference/system/xpackage/functions/xpackagemountwithuiasync)


## Related topics

- [XLaunchNewGame](/es/reference/system/xgame/functions/xlaunchnewgame.md)
- [XPackageFeature](/es/reference/system/xpackage/structs/xpackagefeature.md)
- [XPackageMountWithUiAsync](/es/reference/system/xpackage/functions/xpackagemountwithuiasync.md)
- [XPackageEnumerateFeatures](/es/reference/system/xpackage/functions/xpackageenumeratefeatures.md)
- [Compatibilidad con versiones anteriores y conversiones de gamertags](/es/services/xbox-services/fundamentals/identity/user-profile/gamertags/live-modern-backwards-compatibility.md)
