Una vez implementé esto para los MMO. Un fin de semana mientras intentaba instalar WOW para mi hija tomó 48 horas transcurridas (parches, errores de descarga, etc.), así que decidí hacer mi propia solución mejor.
El juego generalmente necesita unos 10 GB de datos antes de ejecutarse. No todos los archivos son realmente necesarios de inmediato, pero los juegos solían esperar hasta que todos los archivos estuvieran presentes localmente. Mi solución fue hacer que el juego se ejecutara localmente de manera normal, pero el EXE fue engañado (usando un minifiltro de archivos de Windows) para que pensara que todos los archivos ya estaban presentes. Cuando un archivo solicitado no era local, el sistema de archivos lo descargaba y lo guardaba. El juego se copió lentamente localmente según sea necesario. Cuando había ancho de banda disponible, los otros archivos que aún no se necesitaban aparecían en segundo plano. Esto funcionó con TODOS los juegos sin la necesidad de volver a compilar, porque mi controlador de minifiltro obtuvo archivos cuando fue necesario.
El peor inconveniente fue la latencia. Mi solución a eso fue crear un pequeño modelo de Cadena de Markov para predecir qué archivo podría ser necesario a continuación y priorizar el cargador de fondo. Esto funcionó de maravilla, y nuestro MMO pudo ejecutarse casi INMEDIATAMENTE después de solo el EXE y algunos archivos de pantalla de carga eran locales (~ 20 MB). Pudimos hacer clic en un enlace en una página web y ejecutar nuestro juego de más de 10 GB en aproximadamente 30 segundos . Tuvimos una tasa de éxito del 99%, lo que significa que el juego necesitaba un nuevo archivo por primera vez.
Estaré encantado de ayudar a cualquier otra persona a implementar esto.