Diablo 3 y StarCraft 2 tienen una buena característica: puedo comenzar a jugar antes de que el juego completo o la actualización haya terminado de descargarse.
Supongo que Diablo 3 descarga archivos obligatorios, como los activos de la interfaz de usuario y algunas mallas y texturas que se utilizan primero en varios niveles. Sin embargo, al comenzar un juego, puedo elegir el nivel que quiera, suponiendo que tenga las salvaciones apropiadas. Nunca experimenté ningún retraso de ese tipo al jugar: el inicio siempre es muy suave.
¿Como funciona esto? ¿Cómo podría implementar una característica similar?
user-experience
deployment
patching
nikitablack
fuente
fuente
Respuestas:
Los activos como sonido, video, modelos y texturas son la mayoría de la descarga y para cada uno de estos activos hay múltiples versiones. Estas versiones múltiples son compatibles con varias opciones gráficas.
Al enviar primero los recursos necesarios para una opción de gráficos bajos (que también son los más pequeños). Tienes todo lo que necesitas para jugar, a pesar de tener solo el 15% de los activos totales necesarios para admitir todas las opciones de gráficos.
Puede probar esto reinstalando StarCraft 2. Juegue tan pronto como le permita ir a la pantalla de opciones gráficas. Muchas opciones y configuraciones no estarán disponibles.
fuente
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.
fuente
Además, en algunos juegos, las áreas y archivos del mundo del juego final se retrasan, solo se conservan las áreas obligatorias y también se pueden instalar mientras se sigue jugando.
fuente
Para resumir lo que varias personas han dicho, y tal vez agregar alguna información:
Significará una carga de red más alta mientras se juega, hasta que todo el contenido se almacene en caché localmente, pero una carga de ráfaga inicial más pequeña en sus servidores, así como una espera más corta y menos frustrante para los usuarios mientras descargan inicialmente el juego.
Por supuesto, si el usuario tiene una conexión de red lenta, podría recibir mensajes de "espere, cargando contenido" (proporcione esos) al cambiar de zona, o tal vez desee verificar el ancho de banda al iniciar el juego inicialmente y si es demasiado bajo para descargar confiablemente sobre la marcha, haga que espere allí y luego al menos durante todo el primer nivel (y luego nuevamente cuando ingrese a zonas que aún no se han descargado por completo).
Esto para evitar que el usuario se quede rezagado en medio del juego real porque su conexión de red se atasca.
fuente