Quantcast
Channel: Devblog - DOFUS, el MMORPG estratégico.
Viewing all articles
Browse latest Browse all 110

Ankama Launcher: El motor de actualizaciones sube de marcha

$
0
0

¿Se te hace un pelín largo cuando se descargan las actualizaciones? ¿Tu tarifa de 4G las pasa canutas con cada versión de DOFUS? ¡Todo eso pronto será cosa del pasado! Te presentamos los cambios que va a haber en el motor de actualizaciones del launcher.

 

Contexto

La función principal del launcher o iniciador es poner a tu disposición los juegos y gestionar su actualización. De administrar las actualizaciones se encarga un entorno de trabajo interno que llamamos Cytrus (descendiente de Agrum «Ankama Games Releases and Updates Manager», que gestionaba las actualizaciones del antiguo updater de DOFUS, que algunas personas recordarán).

Como es bien sabido, la versión actual (Cytrus 5) tiene sus limitaciones: cada actualización pesa bastante, incluso cuando los cambios que se añaden al juego son relativamente pequeños. De hecho, hemos perdido la cuenta de los comentarios del tipo «Ehm... ¿Es normal que tenga que descargarme de nuevo el juego entero después de cada actualización?» que hemos recibido.

Te explicamos por qué. Para mejorar la velocidad de instalación del juego, muchos componentes (objetos, mapas, emotes, etc.) se han venido agrupando en archivos más voluminosos, los «packs». Esto permite que el número de archivos que se descargan sea razonable, evitando transferencias innecesarias para el servidor. Por ejemplo, si no fuera por el pack, ¡habría que descargar 18 271 archivos que corresponderían solo a los objetos de DOFUS 2! En lugar de eso, lo que se descarga es un único archivo de 11,3 MB.

 

Por el contrario, cuando hay una actualización en la que se cambia un simple objeto, se descarga todo el pack de objetos. Lo mismo pasa con las traducciones: cambiar una simple coma implica descargar 43 MB solo del pack en francés. Esto explica en gran medida por qué el tamaño de las actualizaciones en realidad no corresponde a las modificaciones incorporadas a los juegos.

Para remediar esto, pasamos a la versión 6 de nuestro entorno Cytrus y te explicamos qué es lo que va a cambiar.

 

Mejoras técnicas

Agradecimientos

Para empezar, queremos subrayar que el mercado del videojuego y de las tecnologías que lo hacen posible están cambiando constantemente. Compartir mejores prácticas e innovaciones es un impulso esencial para el progreso. Por eso queremos transmitirles nuestro agradecimiento a los actores del mercado que comparten sus ideas y sus mejores prácticas con las que podemos mejorar nuestras propias herramientas. Este devblog es una forma de reconocer su aportación y su contribución. Muchas gracias a quienes comparten el fruto de sus reflexiones. ¡Ahora nos toca hacerlo a nosotros!

 

Troceo de los archivos en fragmentos

Para mejorar nuestro proceso de actualización, vamos a evitar subir los archivos íntegramente en cuanto se modifican. En vez de esto, vamos a subir solo la parte modificada. Para ello, empezamos separando cada archivo, que ahora se trocea en varios trozos de entre 16 y 256 KB: estos trozos es lo que llamamos «fragmentos» en la jerga. Las modificaciones de cada actualización se calculan entonces por fragmentos (en lugar de por archivos), con lo que se cargarán solo los fragmentos modificados que luego se reconstruirán en archivos en tu PC.

Esto nos permite reducir el tiempo de descarga de las actualizaciones utilizando tu RAM y tu CPU para hacer cálculos y volver a crear los archivos en tu PC.

El beneficio es inmediato: si se modifica una pequeña parte del archivo, solo se descargarán los fragmentos correspondientes.

Para trocear los archivos, utilizamos un algoritmo de detección de contenido, FastCDC, que permite fragmentar los archivos de forma determinista. Habrá un troceo similar de una actualización a otra, aunque lo que se haya modificado sea el principio del archivo.

En DOFUS 2, una vez fragmentados todos los archivos, el resultado son aproximadamente 123 000 fragmentos.

 

Reciprocidad de fragmentos

Dos fragmentos pueden ser iguales en dos archivos diferentes. Estos pueden reconocerse por llevar el mismo identificador. En ese caso, el fragmento se descarga una sola vez y se usa para reconstruir los dos archivos, por lo que se descarga una menor cantidad de datos.

Esta reciprocidad nos evita tener que descargar 2000 fragmentos en el caso de DOFUS 2, por lo que solo hay que descargar aproximadamente 121 000 fragmentos.

 

Los paquetes

Todos estos fragmentos se agrupan en archivos mayores, los paquetes.

Hay unos 8400 archivos en DOFUS 2. Con el sistema antiguo, teníamos que hacer 8400 descargas de archivo único.

Para evitar hacer 121 000 descargas distintas para obtener todos los fragmentos, los agrupamos en paquetes, 384 paquetes, en el caso de DOFUS 2. Luego podemos obtener todos los fragmentos modificados de un paquete de una sola vez gracias a una «solicitud de rangos multiparte». Dicho de manera sencilla, concretamos qué partes del archivo queremos descargar. Esto reduce drásticamente el número máximo de descargas durante una actualización.

Esto significa que, para instalar por completo DOFUS 2, descargaremos como máximo 384 archivos en lugar de los 8400 de antes, manteniendo el mismo volumen de datos.

 

El manifiesto

Para que el launcher pueda calcular qué archivos necesitan actualizarse, Cytrus prepara un archivo. Este permite saber qué archivos, fragmentos y paquetes hay en la versión del juego.

A partir de ahí podemos calcular la diferencia entre lo que está en línea y lo que hay en tu PC para a continuación descargar y ensamblar de nuevo la diferencia.

Este tipo de archivo ya estaba en Cytrus 5, pero solo contenía la lista de los archivos disponibles, sin fragmentos y sin paquetes.

 

 

Primeros datos comparativos

Comparación del tamaño de los archivos que deben descargarse en diferentes actualizaciones recientes:

 

En esta pequeña selección de actualizaciones se puede ver que la evolución de Cytrus ha tenido una gran influencia, con algunas excepciones:

  • Cuando se hacen modificaciones pequeñas en archivos grandes, se observa una gran ganancia, pues solo descargamos el fragmento modificado.
  • En las actualizaciones grandes, podemos comprobar que la ganancia es menor: como los archivos se modifican bastante, descargamos casi todos los fragmentos correspondientes.

 

Esperamos que esta actualización mejore tu experiencia diaria con el juego, gl & hf.

El equipo de Launcher


Viewing all articles
Browse latest Browse all 110

Trending Articles