Skip to main content
¿Usas MSIXVC2? Las restricciones de alineación y diseño descritas en esta página se aplican al formato MSIXVC original. MSIXVC2 usa segmentación basada en contenido que elimina estos requisitos. Para obtener orientación sobre actualizaciones de contenido con MSIXVC2, consulta Actualizaciones de contenido con MSIXVC2.

Información general

Puedes actualizar los paquetes de contenido después del lanzamiento modificando, agregando o quitando datos. Para iniciar una actualización, carga el paquete actualizado completo en Partner Center y publícalo. Las futuras instalaciones digitales del contenido descargan directamente el paquete actualizado. La tecnología de actualización de contenido del sistema modifica las instalaciones existentes para reflejar el paquete actualizado. El contenido del Microsoft Game Development Kit (GDK) se empaqueta en paquetes XVC o MSIXVC que operan con una granularidad de subarchivo. Puedes sobrescribir datos en el mismo lugar. También puedes insertar o quitar datos de un archivo en múltiplos de 4 kibibytes (KiB) (4096 bytes). No puedes mover datos de forma eficiente. Cuando un usuario instala un juego que ya tiene una actualización de contenido desde su disco de juego original, el proceso de instalación extrae datos tanto del disco como de la nube. Las partes sin cambios del paquete se instalan desde el disco, mientras que los datos actualizados se descargan de la nube mediante instalación por streaming. Este proceso se comporta exactamente igual que una instalación por streaming normal en la interfaz de usuario del sistema y para todas las API del juego. Cuando una consola o un PC actualiza contenido instalado previamente, el proceso modifica el archivo de paquete XVC o MSIXVC instalado en el mismo lugar para dar cabida a los datos nuevos o eliminados y, a continuación, descarga los datos nuevos. El juego no puede ejecutarse entre el momento en que la actualización comienza a instalarse y el momento en que termina de instalarse.

Creación eficiente de paquetes

Las actualizaciones de contenido intentan no interferir en el proceso de desarrollo del juego. Independientemente de los cambios que realices en el contenido del juego, puedes actualizar un paquete correctamente. Sin embargo, el proceso podría no ser eficiente en cuanto al tamaño de descarga (que se corresponde con el tiempo durante el que los jugadores no pueden jugar) ni en cuanto al espacio de disco duro consumido. Los siguientes consejos te ayudan a empaquetar un juego para garantizar la mejor experiencia de usuario. Básico:
  • Si usas archivos de paquete (pack files) para agregar varios recursos en un único archivo, asegúrate de que el creador del archivo de paquete alinee el inicio de cada recurso a un límite de 4 KiB. Este consejo se muestra en el ejemplo de alineación simple.
  • Si comprimes recursos, asegúrate de que la compresión sea determinista y de que cada recurso se comprima de forma independiente.
  • No cambies un identificador de fragmento ni muevas un archivo entre identificadores de fragmento.
  • No reordenes los fragmentos dentro del paquete, los archivos dentro de un fragmento ni los recursos dentro de un archivo. Considera ordenar los recursos por su nombre u otro identificador estable.
Avanzado:
  • Si usas archivos de paquete para agregar varios recursos en un único archivo, asegúrate de que el creador del archivo de paquete alinee el inicio de cada recurso de forma coherente. Esta pauta es una versión avanzada de alinear siempre al inicio de 4 KiB. Considera un ejemplo de un recurso que comienza en el desplazamiento PriorAssetOffset en el paquete anterior y AssetOffset en el paquete que se está compilando con actualizaciones. Para garantizar que el creador del archivo de paquete alinee el inicio de cada recurso a un límite de 4 KiB, establece PriorAssetOffset % 4096 == 0 y AssetOffset % 4096 == 0. Esta condición siempre satisface PriorAssetOffset % 4096 == AssetOffset % 4096. Cualquier otra forma de garantizar que se cumpla esta afirmación también funciona. Esta condición puede permitir que el creador del archivo de paquete use menos relleno. Este consejo se muestra en el ejemplo de alineación con estado.
  • Si usas compresión no determinista y el recurso sin comprimir no ha cambiado, copia sus datos comprimidos del empaquetado anterior para que los datos comprimidos tampoco cambien.
  • Si los recursos se ordenan automáticamente para coincidir con el orden de carga esperado en tiempo de ejecución, considera congelar el ordenamiento automático en el primer lanzamiento.
  • Si un archivo de paquete tiene muchos recursos diminutos que cambian con frecuencia en las actualizaciones, considera hacerlos adyacentes. Es más eficiente modificar 400 KiB que modificar 4 KiB 100 veces.

Ejemplos de alineación correcta e incorrecta en archivos de paquete

Algunos juegos combinan muchos recursos en archivos grandes llamados archivos de paquete (pack files). La actualización de contenido a nivel de subarchivo mejora significativamente la eficiencia del tamaño de descarga y del tamaño en disco duro al descargar actualizaciones de esos juegos. Para aprovechar esta tecnología, es importante que la herramienta de creación de archivos de paquete del juego conserve la alineación de 4 KiB de los recursos dentro del archivo. Esta sección muestra ejemplos de formas correctas e incorrectas de alinear los recursos dentro de un archivo de paquete. A modo ilustrativo, cada ejemplo se muestra como una serie de celdas con una letra en su interior. Cada celda es de 1 KiB en el diagrama para simplificar la ilustración. Las líneas continuas entre las celdas representan dónde están los límites de 4 KiB.

Sobrescritura de datos

En el siguiente diagrama, una única celda se sobrescribe en la actualización. Lo único que se descarga es la página de 4 KiB que contiene esta celda.

Inserción

En el siguiente diagrama, se inserta una única celda en la actualización. Como resultado, cada celda posterior a la inserción se desplaza una posición. Este desplazamiento mueve las celdas a través de los límites de 4 KiB, de modo que ninguna de las páginas de 4 KiB es igual en el paquete antiguo y en el nuevo después de la inserción. Se descarga cada página de 4 KiB posterior a la inserción. En el siguiente diagrama, se inserta una única celda en la actualización. Además, se insertan tres celdas de relleno. Las cuatro celdas juntas son, en la práctica, una inserción de 4 KiB, lo que evita que las celdas posteriores se desplacen a través de un límite de 4 KiB. Solo se descargan los 8 KiB que contienen la inserción y el relleno.

Eliminación

En el siguiente diagrama, se elimina una única celda en la actualización. Como resultado, cada celda posterior a la eliminación se desplaza una posición. Este desplazamiento mueve las celdas a través de los límites de 4 KiB. Se descarga cada página de 4 KiB posterior a la eliminación. En el siguiente diagrama, se eliminan ocho celdas en la actualización. Solo se descargan 4 KiB: las celdas que estaban dentro de las páginas de 4 KiB inicial y final de la eliminación. Si la eliminación está alineada a 4 KiB y su longitud es un múltiplo de 4 KiB, no se requiere ninguna descarga de datos.

Alineación: simple

El siguiente diagrama muestra seis recursos. Cada recurso se almacena en un número arbitrario de celdas. El inicio de cada recurso está en un límite de 4 KiB. Como resultado, puedes agregar, cambiar (incluido un aumento o una disminución de tamaño) o eliminar recursos de forma independiente. Esta alineación es la forma más sencilla de alinear los recursos dentro de un archivo de paquete.

Alineación: avanzada sin estado

El siguiente diagrama muestra siete recursos. Cada recurso se almacena en un número arbitrario de celdas. El inicio de cada recurso grande está alineado en un límite de 4 KiB, pero los recursos pequeños (el recurso 6, en el diagrama) se empaquetan de forma contigua con el recurso anterior, sin relleno. Este método de alineación ofrece tres ventajas:
  1. Usa menos espacio de relleno.
  2. Cuando cambias el recurso 5, descargar el recurso 6 es prácticamente gratis.
  3. Cuando cambias el recurso 6, los 4 KiB completos se descargan de todos modos. No importa si era relleno o el final del recurso 5.
Si un recurso puede caber en el relleno que se necesitaría, empaquétalo sin ningún relleno.

Alineación: avanzada con estado

El siguiente diagrama muestra siete recursos. Cada recurso se almacena en un número arbitrario de celdas. El inicio de cada recurso en el primer paquete se empaqueta sin relleno. En el paquete nuevo, el inicio de cada recurso comienza en el mismo desplazamiento dentro de una página de 4 KiB que en el paquete antiguo. Por ejemplo, el recurso 3 comenzaba una celda dentro de una página de 4 KiB en el paquete antiguo. En el paquete nuevo, se agregó relleno antes del recurso 3 para que también comenzara una celda dentro de una página de 4 KiB. Este enfoque conserva la alineación que requiere la actualización de contenido y minimiza al mismo tiempo la cantidad de relleno. La desventaja de este enfoque es que requiere que la herramienta de archivos de paquete conozca el diseño del archivo de paquete antiguo para hacer coincidir sus desplazamientos.

Fragmentación

Para los títulos que tienen un largo historial de actualizaciones, con muchos cambios en los archivos existentes a lo largo del tiempo, y paquetes que tienen un número significativo de pequeñas ediciones en archivos grandes, los algoritmos de actualización de contenido podrían producir tamaños de actualización subóptimos. Puedes determinar tamaños de actualización subóptimos de dos maneras:
  1. Observa la salida de makepkg pack cuando se ejecuta con /priorpackage. Muestra una advertencia: “More than # page-level XTS entries. Page-level update efficiency will be compromised for # pages.”
  2. Observa los informes de comparación generados por makepkg pack o packageutil compare. Si estos informes muestran archivos que se vuelven a descargar al 100 % y que sabes que no cambiaron, esta condición puede ser un síntoma de haber agotado el espacio en la estructura de datos de fragmentos de cifrado del formato de archivo XVC.
Bajo la orientación de tu representante de cuenta de Microsoft, considera usar la opción /maxencryptionfragments de makepkg pack para generar un cálculo de delta más óptimo. Establecer este valor demasiado alto aumenta el riesgo de errores de memoria insuficiente durante el inicio del juego o el montaje de DLC. Cuando insertas datos, la actualización de contenido causa fragmentación de los datos del paquete en el disco duro físico. La actualización de contenido intenta minimizar este efecto realizando una desfragmentación parcial del paquete durante la actualización. Garantiza, en función de la disponibilidad de espacio libre en el disco duro, que la suma del tamaño de dos fragmentos adyacentes cualesquiera sea de al menos 100 mebibytes (MiB). La actualización de contenido intenta que todos los fragmentos sean de al menos 100 MiB. Las iteraciones anteriores de la actualización de contenido para XBOX One ERA no realizaban desfragmentación.

Uso de las herramientas

  • makepkg /contentid GUID: el parámetro de identificador de contenido que, junto con el nombre de familia de paquete, identifica un paquete entre versiones. Para probar la actualización entre paquetes, crea ambos paquetes usando el mismo identificador de contenido y el mismo nombre de familia de paquete.
  • packageutil compare: esta herramienta genera un plan de actualización que describe cómo actualizar de un paquete antiguo a un paquete nuevo. También genera un informe que enumera los archivos y los intervalos dentro de esos archivos que se descargan para realizar la actualización. Usa este informe para identificar cambios inesperados.
  • xbapp update (PC: wdapp update): esta herramienta actualiza un paquete instalado previamente en un kit de desarrollo o PC a un paquete nuevo. Usa el mismo método que las consolas comerciales, por lo que puedes usarla para probar la experiencia de usuario y el rendimiento de E/S después de la actualización.

Detalles

Esta sección describe detalles de implementación sobre cómo funciona la actualización de contenido. Estos detalles están sujetos a cambios. Está destinada al desarrollador muy interesado que quiere entender y ajustar todo con precisión. ¿Qué son los planes de streaming de actualización? Los planes de streaming de actualización son una evolución de la tecnología XBOX FastStart. La actualización de contenido v3 usa estos planes para indicar a la consola XBOX y a los PC cómo transformar un paquete antiguo en un paquete nuevo. Este enfoque permite realizar un análisis más intensivo en el momento de la publicación en la nube del que una consola o un PC podría hacer durante la descarga. ¿Por qué se eligió 4 KiB como el múltiplo permitido para insertar o eliminar? 4 KiB es el tamaño de clúster de NTFS en XBOX y en los sistemas de archivos de PC compatibles. Realizar inserciones o eliminaciones en un múltiplo diferente del tamaño de clúster de NTFS requeriría una E/S de disco significativa para instalar la actualización. Los paquetes de contenido están cifrados y protegidos contra alteraciones en bloques de 4 KiB. Realizar inserciones o eliminaciones en un múltiplo diferente del tamaño de bloque criptográfico requeriría volver a cifrar los datos para instalar la actualización. Este requisito impide las actualizaciones en segundo plano en escenarios en los que no hay una licencia disponible porque el usuario adecuado no ha iniciado sesión o el disco del juego no está disponible. Al tener este requisito, los paquetes pueden actualizarse de forma eficiente y sin necesitar un paso de desempaquetado que consuma tiempo al final del proceso de actualización. ¿Qué ocurre durante makepkg/packageutil frente a durante la publicación? En ambos casos ocurre el mismo procesamiento. Durante la publicación, el paquete se cifra usando datos de la mejor opción de la nube para el paquete anterior (el equivalente de makepkg /priorpackage). Después se genera un plan de streaming de actualización desde muchos paquetes antiguos (el equivalente de packageutil compare). ¿El /priorpackage especificado en makepkg afecta al paquete comercial? No. El proceso de publicación en la nube siempre invalida esta especificación. La opción de makepkg solo se proporciona para permitir una estimación local antes de la publicación. ¿Solo se descargan los datos actualizados del juego? No. Los paquetes contienen datos significativos del sistema, incluidos los hashes criptográficos de todas las páginas de datos, el Game OS (solo consola) y un sistema de archivos NTFS incrustado. Se descargan cuando es necesario. Además, algunos datos sin cambios podrían volver a descargarse para minimizar la sobrecarga de las solicitudes HTTP. Actualmente, los datos sin cambios de menos de 64 KiB rodeados de datos modificados están sujetos a una nueva descarga, pero esta configuración está sujeta a cambios para optimizar el tiempo de descarga. El informe generado por packageutil compare incluye la información anterior en su estimación.

Consulte también

Creación, examen y prueba de actualizaciones de contenido Comprobación de actualizaciones
Última modificación el 28 de agosto de 2026