24 votos

¿Por qué una actualización menor de un juego en Steam (por ejemplo, New World) pesa alrededor de 15 GB para descargar?

Entiendo que el juego en su totalidad es de alrededor de 80 GB, por lo que a primera vista, tiene sentido que una actualización pueda ser de 15 GB. Pero ¿no es la gran mayoría de ese tamaño del juego activos gráficos, como texturas?

Estoy seguro de que el código real es solo tal vez 500 MB o algo así, ¿verdad? Incluso si ajustan algo que afecta el código de cada misión en el juego, ¿por qué serían 15 GB para descargar el parche en Steam? ¿No pueden estar ajustando todas las texturas del juego cada vez que haya una actualización menor, cierto?

34voto

Jon Norton Puntos 2048

El tamaño de las actualizaciones del juego, incluso para parches menores, puede ser sorprendentemente grande. Los desarrolladores de Fatshark, el estudio detrás de Warhammer: Vermintide 2 y Warhammer 40,000: Darktide, han proporcionado algunas ideas sobre por qué ocurre esto. La explicación gira en torno a los compromisos que los desarrolladores de juegos deben manejar entre el tamaño de descarga, el tamaño del juego instalado y los tiempos de carga.

Un factor clave es la duplicación de recursos. Como explica Fatshark_Hans:

Para hacer que los tiempos de carga sean más rápidos, duplicamos recursos en nuestros paquetes de recursos, de manera que no tengas que hacer muchas lecturas individuales desde el disco. Entonces, por ejemplo, si hay una antorcha que existe en la mayoría de los niveles, ese recurso existirá en múltiples paquetes de niveles.

Este enfoque mejora significativamente los tiempos de carga, especialmente para jugadores con dispositivos de almacenamiento más lentos. Sin embargo, también aumenta el tamaño total del juego.

Otro desarrollador de Fatshark, Fatshark_tazar, amplía aún más este punto:

Básicamente se trata de lo que se llama agrupamiento. Los discos mecánicos son realmente lentos buscando nuevas secciones en los discos, por lo que para reducir los tiempos de carga básicamente tenemos que tomar cada "paquete", digamos un nivel para simplificar un poco, y tomar todo dentro de ese nivel como modelos, texturas, sonidos, animaciones y mucho más y crear un bloque de datos que se pueda leer de forma secuencial sin tener que buscar a través de los discos físicos en un disco mecánico para encontrar el archivo que necesitamos.

Fatshark_tazar señala que este método "reduce los tiempos de carga al menos por un factor de cinco para los discos mecánicos". Sin embargo, también aumenta el tamaño total del juego:

Lo malo es que, dado que los datos deben colocarse de forma secuencial en el disco, eso significa que tenemos que duplicar UNA GRAN CANTIDAD de datos en todos nuestros paquetes.

Esta estrategia de duplicación ayuda a garantizar un juego fluido en diversas configuraciones de hardware. Como señala Fatshark_tazar:

Incluso si tienes un SSD súper rápido y no te beneficias del agrupamiento, aún tienes que esperar a que la persona con el disco más lento cargue en una misión para que todos estén sincronizados.

Fatshark_Hans menciona una solución para reducir el tamaño del juego instalado:

Lo que podemos hacer es lanzar y actualizar que sea una 'remasterización', lo que significa que reemplazas todas tus actualizaciones almacenadas incrementalmente en disco, con el nuevo 'maestro'. Esto reduciría drásticamente el tamaño de la instalación

Sin embargo, este enfoque también tiene sus inconvenientes:

Pero entonces, la descarga para esa actualización de remasterización sería enorme, porque básicamente significaría descargar todo el juego nuevamente. Lo cual no es realmente factible para muchos de nuestros jugadores.

Fatshark implementó este enfoque para una actualización de Vermintide 2, como se menciona en su FAQ:

P: ¿Por qué la descarga es tan grande?
R: Con el lanzamiento de la 2.0 (el parche que acompaña a Winds of Magic) tomamos la decisión de remasterizar el juego. Si bien esto requiere una descarga importante al actualizar a la última versión, conlleva algunos beneficios que incluyen tiempos de carga más rápidos al jugar, así como un tamaño de archivo general más pequeño en tu computadora.

El gran tamaño de las actualizaciones menores a menudo es resultado de los desarrolladores tratando de equilibrar las necesidades de los jugadores con diversas capacidades de almacenamiento. Como lo resume de manera sucinta Fatshark_Hans:

Hacer juegos es gestionar compromisos. En este caso, es un compromiso entre el tamaño de las descargas, el tamaño del juego en disco y el tiempo que lleva cargar recursos desde el disco.

3voto

Tony Lee Puntos 21

Además de los problemas mencionados por el ninja galáctico, y hablando como desarrollador.

A menudo es mucho más fácil simplemente volver a emitir todos los archivos para una nueva compilación de un juego que generar eficazmente un conjunto de parches que se pueda utilizar para modificar su instalación existente. Esto es especialmente cierto para cualquier archivo binario, comprimido o cifrado, ya que esencialmente tendrían que ser deserializados/descomprimidos/desencriptados, parcheados y luego reencodificados.

En 2024, cuando la mayoría de las personas tengan banda ancha de alta velocidad, muchos desarrolladores simplemente no consideran que valga la pena poner el esfuerzo de ingeniería para que esto funcione de manera efectiva, especialmente considerando otros compromisos.

1voto

ruffle Puntos 83

Respuesta corta: Los sistemas de archivos son demasiado lentos para su uso en juegos. Por lo tanto, necesitas almacenar todos los datos en archivos grandes. Es complicado realizar y administrar parches en archivos grandes existentes. Es mucho más fácil hacer que el usuario descargue el archivo nuevamente.

Respuesta larga: Para la carga de juegos, deseas tener la menor cantidad de instrucciones de lectura posible y que los datos leídos sean secuenciales. Por lo tanto, la mayoría de los archivos de juegos son paquetes grandes que contienen elementos que se añaden secuencialmente uno tras otro. Luego tienes un índice (que da la posición de inicio y la longitud de cada elemento) que se carga en la RAM. Esto te permite, de forma instantánea, con una sola lectura secuencial, recuperar cualquier elemento.

También puedes secuenciar elementos, incluso si esto significa repetir elementos, de modo que una lectura secuencial cargue todos los elementos de un 'nivel' de tu juego.

Luego ocurre una actualización... En el mejor de los casos, los elementos que se están actualizando tienen exactamente el mismo tamaño. Por lo tanto, puedes simplemente sobrescribir cada aparición de ese elemento. Pero si muchos elementos están cambiando de tamaño... ahora tienes que escribir una nueva versión completa del archivo de paquete al combinar los datos no cambiados y los datos parcheados para crear un nuevo archivo de secuencia.

El problema con hacer eso es si parcheas la versión 1 a la 2, luego la 2 a la 3. Ahora debes tener en cuenta a alguien que quiera ir de 1 a 3. ¿Les haces actualizar dos veces? Idealmente, les haces descargar actualizaciones para 1->2 y luego 2->3 y aplicar ambas. Ahora imagina cómo complicado puede ser esto con el tiempo. Puede resultar que sea más lento para el usuario descargar todos los parches y escribir el nuevo archivo que simplemente descargar el archivo completo.

O... puedes simplemente no molestarte con los parches y hacer que descarguen el juego completo nuevamente.

A menudo se utiliza una combinación de lo anterior. Los activos se parchean cuando se puede. Pero cuando ocurre un cambio más grande, o un cambio en el sistema de parches o en cómo indexas o secuencias los datos, simplemente haces que los usuarios descarguen el juego completo de nuevo.

JugonesTop.com

Jugonestop es una comunidad para amantes del gaming. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X