¿Cómo se pueden jugar los juegos antes de que se descarguen por completo?

75

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?

nikitablack
fuente
2
World of Warcraft también: P
Kroltan
3
¿Cómo se pueden ver las páginas web antes de descargar las páginas web completas? ¿Cómo puede la búsqueda de imágenes de Google presentar una lista infinita de imágenes sin utilizar un tiempo infinito para descargar? Los juegos son más sofisticados pero son bastante similares.
Lie Ryan
2
@LieRyan: En cuanto a "Los juegos son más sofisticados", esa frase no tiene ningún fundamento. Puede haber juegos que sean más sofisticados, del mismo modo que hay (y mirando las tiendas de aplicaciones, esa es la gran mayoría del software que no resuelve problemas serios) juegos que son masivamente menos sofisticados que una búsqueda web masivamente escalable que extiende miles de servidores y maneja y almacena miles de millones de solicitudes de usuarios cada día. Y luego, la búsqueda es solo una de las muchas características para esa compañía. Así que, por favor, pase la fase de la vida de pensar que los juegos son inherentemente más complejos que el software "normal".
phresnel
1
@jhocking: ¿Estás hablando conmigo? (si es así, mejor use @ <nombre de usuario> para que me notifiquen) No, no realmente amargo. Cuando era más joven, pensé que games-dev sería el rey de la colina de la ingeniería de software. Ahora lo sé mejor, especialmente después del lanzamiento de una serie de códigos fuente de juegos comerciales :) Es un error común que se repite para aparecer. Games-Dev se parece a Elite realmente, pero en realidad es solo otra especialización del desarrollo de software, al igual que Super Computing, Search Engines, Image Recognition, Email Marketing o ERPs para grandes E's.
phresnel
1
Solo un comentario rápido, tengo poco ancho de banda en casa ( costo de vida en un área rural ), y el juego sigue siendo imposible de jugar para mí, aunque dice "jugable". Tengo que esperar "óptimo". De lo contrario, estoy atascado esperando 5 minutos para cada pantalla de carga y el retraso es irreal, por lo que definitivamente descargo algunas cosas en ese momento. Probablemente pueda realizar más pruebas por su cuenta limitando su ancho de banda.
DoubleDouble

Respuestas:

72

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.

Trueno clásico
fuente
24
También puede aplicar la misma técnica a mapas o niveles completos en juegos con la linealidad adecuada: descargue primero los primeros niveles, o algo así. Guild Wars 2 solo envió audio y áreas de inicio (más un poco más) en el disco, por ejemplo.
Josh
12
Algunos juegos (como los juegos de Blizzard) también tienen la capacidad de descargar activos a pedido, según su ubicación actual en el juego. Esto funciona de manera similar a cómo los activos a menudo se transmiten de forma asíncrona desde el disco duro local, pero en este caso con un retraso mayor antes de que los activos solicitados estén listos.
bcrist
1
IIRC, Diablo 3 usa el método descrito por Josh Petrie: se vuelve jugable tan pronto como los recursos (posiblemente solo la versión de baja calidad como se describe en esta respuesta), pero solo el Acto I se puede jugar inicialmente. Es decir, si acelera su conexión a Internet lo suficiente, se verá obligado a detenerse y dejar que la descarga se ponga al día después de finalizar el Acto I.
Aaron Dufour el
1
Dicho de otra manera, el juego puede ejecutarse técnicamente tan pronto como se instala el ejecutable . Esto puede ser solo un par de megabytes de datos. Hasta dónde puede llegar al juego depende de cuántos activos hay disponibles. Un juego que se instala en 20 GB tiene aproximadamente 19.9999 GB de datos y 0.0001 GB de código ejecutable; Mientras pueda continuar cargando datos desde la red, el juego puede ejecutarse con menos del 1% de la instalación completa.
phyrfox
1
@Brian Mira el historial de edición. No preguntó nada de eso cuando escribí la respuesta.
ClassicThunder
33

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.

Chris Mayer
fuente
55
+1 y sería genial si pudieras compartir este controlador porque estaba buscando algo así y estaba a punto de crearlo como lo hiciste tú, pero si ya está hecho, con gusto lo usaría.
Furkan Omay
55
Uso interesante de una ingeniería bastante avanzada. Realmente deberías escribir una publicación de blog sobre esto. :) ¿Cuánto ayudaron realmente las técnicas de aprendizaje automático? ¿Qué tan bien podrían predecir qué archivos se necesitaban?
Paul Manta
1
@FurkanOmay tales cosas son casi siempre propiedad de la empresa del empleador de alguien. No le pidas a la gente que probablemente rompa los términos de sus contratos.
Jwenting
@jwenting Por lo que entiendo, lo que había hecho no era por una empresa sino por su hija y por juegos como WoW. Solo estoy preguntando cortésmente, nadie es forzado. Simplemente puede negarse por cualquier motivo y todo estará bien. Le pregunté porque dijo "estaría feliz de ayudar a alguien más a implementar esto", así que no creo que pedir al menos un punto de partida no sea una mala idea, ya que dije que estoy dispuesto a implementar esto desde el principio arriba.
Furkan Omay
3

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.

Chantola
fuente
2

Para resumir lo que varias personas han dicho, y tal vez agregar alguna información:

  • la descarga inicial es pequeña, solo los archivos de inicio y el administrador de descargas para el resto. Sería bueno incluir la creación de cuentas, la creación de avatar, y tal vez las zonas de inicio en esto.
  • mientras se está ejecutando, el usuario inicia sesión y crea sus avatares, comienza a descargar otras cosas, zonas de bajo nivel y archivos comunes primero (como sonidos y texturas básicos, los reutiliza tanto como sea posible en todo el juego)
  • A medida que el usuario avanza por los niveles, comience a descargar previamente las próximas zonas y otro contenido
  • si el usuario selecciona las opciones que necesitan descargar, descargue primero las variantes de baja resolución, luego, mientras juega, descargue versiones de mayor resolución según sea necesario y reemplace las versiones de baja resolución que se muestran con las que están sobre la marcha. De esa forma, el usuario ve algo y, gradualmente, se revela la gloria completa del juego (si tiene suficiente ancho de banda y poder de la computadora, por supuesto)
  • repite hasta que todo esté descargado


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.

jwenting
fuente