¿Cuál es la lógica detrás de las escenas de 'carga' en los juegos?

8

Estoy haciendo mi primer juego, es un tipo de juego de defensa de la torre, usando el motor de juego Unity y tomando a los Fieldrunners como referencia. Me gustaría saber más sobre la funcionalidad detrás de las escenas 'Cargando' en los juegos.

Hasta ahora, estoy creando instancias / creando objetos en tiempo de ejecución y no enfrento ningún retraso o problemas similares al hacerlo. Entonces, ¿para qué se usan las escenas de 'Carga' en otros juegos? ¿Existe alguna funcionalidad o creación de instancias de objetos específicos para la próxima ronda o etapa? En caso afirmativo, ¿por qué los necesito si no tengo retrasos?

Syed
fuente
66
Los recursos requeridos por otros juegos pueden ser mucho más altos que las necesidades propias. Por lo tanto, se requieren escenas de carga para enmascarar el período en el que se cargan estos recursos (tal vez desde un disco duro lento).
deceleratedcaviar
2
¿A qué "todos los juegos" te refieres? Hay muchos juegos que no tienen pantallas de carga.
Nicol Bolas

Respuestas:

10

Básicamente, diría que durante el proceso de "Carga" el juego intenta cargar y calcular previamente todas las operaciones que no se pueden hacer en tiempo de ejecución. Por ejemplo, la recuperación de imágenes (para ser utilizadas como texturas) para el disco duro suele ser un proceso lento. En el paso "Cargando", estas imágenes se pueden copiar en la memoria RAM, que es mucho más rápido el almacenamiento de acceso, lo que permite el acceso en tiempo real a las imágenes en tiempo de ejecución.

Dan
fuente
1

Una pantalla de carga también se puede usar como una "escena cortada" (http://en.wikipedia.org/wiki/Cutscene) para darle al usuario la oportunidad de recuperar el aliento, aprender más sobre la historia y características de su juego, o para intentar venderles una versión paga / compra en la aplicación

amb
fuente
1

Creo que los juegos modernos deberían haber podido deshacerse de las pantallas de carga.

Supongo que la verdadera razón por la que todavía tenemos pantallas de carga es que la mayoría de los juegos están diseñados para ejecutarse en el hardware de Xbox 360. Como tal, estarán limitados en la cantidad de ram en la que pueden cargar cosas y en la cantidad de subprocesos que pueden hacer. Si no tiene suficiente memoria RAM, necesitará eliminar muchas cosas de la memoria y luego volver a cargarlas desde el disco. Además, es más fácil cargar todo de una vez.

También hay momentos en que cosas como el disco duro pueden detenerse. Qué sucede si el usuario ejecuta antivirus en segundo plano. Si no está precargando cosas, entonces es posible que deba hacer una pausa en el juego mientras espera que se cargue esa malla o que aparezcan cosas espontáneamente.

Juegos como Skyrim pueden brindarte un mundo abierto que puedes atravesar todo lo que quieras, pero tan pronto como abres una puerta para cargar una mazmorra relativamente pequeña te quedas atascado con una pantalla de carga.

La única razón por la que pude ver que se necesita la pantalla de carga de la mazmorra es si usan alguna iluminación precocida extra pesada utilizada para escenas interiores que si es bastante grande para cargar (hecha de 1 malla gigante o tiene mapas de luz detallados) o necesita algunos cálculos para hacerse en tiempo de ejecución. Creo que las mazmorras Skyrim están construidas a partir de mallas modulares en lugar de una malla gigante (al menos creo que Oblivion está donde).

No hay una razón real para cargar más que las cosas que realmente puedes ver al ingresar al nivel. De la misma manera que los juegos no reproducen cosas que puedes ver, puedes eliminar lo que realmente necesitas cargar de inmediato. También puede pegar muchos objetos ficticios de posición. Luego, puede utilizar el enhebrado para cargar objetos de forma asíncrona en las áreas circundantes, sus mallas, las texturas, etc. a medida que el jugador se mueve por el entorno.

La forma en que abandonaría las pantallas de carga es la siguiente:

  1. Cargue las propiedades básicas del mundo del juego. Guiones globales.

  2. Cargue la posición del jugador.

  3. Cargue el nodo gridcell / BSP de esa posición.

  4. Cargue solo los cuadros delimitadores de los objetos en esa celda.

  5. Calcule lo que realmente se representaría (pruebas en los cuadros delimitadores, quizás pruebas de representación de oclusión)

  6. Cargue las mallas de las cosas que se representan.

  7. Cargue los materiales con las texturas de las mallas.

  8. Realice más pruebas para ver si hay más regiones visibles y que deben cargarse (es decir, consulte y renderice una celda de cuadrícula completa como un cubo gigante).

  9. Una vez que se haya cargado todo lo visible, comience a renderizar.

  10. Cargue el resto de cosas en las celdas y cargue más cosas según sea necesario. Cargue las regiones cercanas y haga una predicción básica sobre los movimientos de los jugadores para elegir qué regiones deben cargarse primero. Continúa hasta que la memoria se llene.

Hay algunas otras cosas que deben tenerse en cuenta. Por ejemplo, algunas cosas deben cargarse aunque no sean visibles. Por ejemplo, un enemigo que esté parado detrás del jugador fuera de la región debería estar activo para poder correr hacia el jugador y atacarlo. Posiblemente, el material de la prueba de oclusión no es esencial, ya que inmediatamente querrá cargar cualquier cosa cerca para que esté allí cuando el jugador se mueva y se vuelva visible, pero podría reducirse un segundo para llegar directamente al render (pero si el tiempo está tan cerca, entonces está es probable que tenga problemas con la aparición de cosas).

Si es posible, esos pasos deben iniciarse antes de que sean necesarios, enhebrar en segundo plano. Por ejemplo, si está en el menú principal del juego, entonces debería comenzar a precargar el área de inicio de las cargas después de elegir "Nuevo juego" (o tan pronto como aparezca el menú) y el último guardado para continuar. Otros guardados pueden precargarse cuando mueves el mouse sobre ellos. A medida que te acercas a la puerta de una mazmorra, debería comenzar a cargar el siguiente nivel (aunque si puedes hacerlo, entonces no necesitas una puerta de mazmorra especial, ya que en realidad solo son para activar una pantalla de carga). Cargue en segundo plano mientras se reproduce el video. De esa manera, ni siquiera necesitaría una breve pantalla de carga inicial.

Puede omitir mucho de eso si no le importa que las cosas 'exploten' a la existencia. Algo como Second Life simplemente te deja apareciendo, ya que se está recuperando de Internet, no hay mucho que puedas hacer al respecto. Assassin's creed tiene ese efecto en el que las cosas entran en escena, por lo que es posible que puedas salirte con la tuya por razones artísticas.

David C. Bishop
fuente
2
Eso no es factible para muchos juegos, desafortunadamente. Una sola área puede tener suficientes texturas para apenas caber en la memoria de video de una GPU de rango medio, por lo que no puede precargar tanto el área de inicio como la última área de guardado (¿y qué hay de otras salvaciones que el usuario pueda seleccionar?). Incluso con la transmisión de mundos continuos como en Skyrim, ¿qué sucede con los portales o los scripts que simplemente teletransportan al jugador a otra área? Con 8 GB de datos comprimidos, muchos de los cuales son datos de textura, incluso las PC modernas para juegos de alta gama no pueden precargar todo.
Sean Middleditch
1
Además, diría que los juegos tienen un interés personal en no poder cargar múltiples áreas en la memoria; les impide poner tanto contenido como puedan en cada área determinada. Para muchos juegos esto no es un problema, pero para los títulos de mundo abierto que desean brindar una experiencia tan rica como sea posible, cualquier circunstancia en la que no se encuentre con sus limitaciones es una en la que no está entregando tanto a el jugador como podrías ser.
Steven Stadnicki
0

En Unity, las escenas son una combinación de múltiples objetos del juego. Entonces, si no desea especificar todos sus objetos de juego por separado y cargarlos uno por uno, simplemente puede cargar una escena completa .

Al cargar una escena en Unity, los objetos ya existentes se tiran a la basura y, por lo tanto, se carga un nivel completamente nuevo. Puede indicar qué objetos desea mantener con el método DontDestroyOnLoad .

En la configuración de compilación al publicar un juego, también puede indicar qué escenas se utilizan en su juego e incluirlas en su compilación actual . Esto hace posible hacer una distinción entre múltiples plataformas que contienen diferentes niveles, pero la misma lógica de código.

También se pueden hacer preguntas específicas sobre la unidad en el foro de respuestas de la unidad . Estos usuarios están más especificados para Unity, en lugar de preguntas generales sobre motores de juegos.

Marnix
fuente
Esta respuesta no parece abordar la pregunta: no "¿cómo cargo los niveles?", Sino "¿por qué el jugador ve 'Cargando ...'?"
Kevin Reid el
@KevinReid Ah, sí, probablemente tengas razón en eso. Probablemente no entendí los signos de interrogación en el buen sentido.
Marnix
0

Una escena de gráficos en 3D lleva tiempo configurarla, y mantenerla puede llevar a una computadora más allá de sus límites. Los contenidos requieren memoria extensa. Los contenidos visibles requieren mucho tiempo. Y a medida que el observador se aleja y mira el horizonte, una gran cantidad del contenido total puede hacerse visible. (¿Alguna vez notaste cómo algunos juegos funcionan mejor si no te alejas demasiado? ¿Alguna vez notaste cómo algunos juegos no te permiten alejarte demasiado o mirar al horizonte?)

La solución es configurar escenas individuales con contenidos limitados. Ahora el juego funciona bien hasta que el observador deja una escena para otra. En ese punto, la escena anterior se descarta y se configura una nueva escena, lo que lleva tiempo (y una pantalla de carga para tratar de evitar que el usuario se aburra). Los motores 3D generalmente intentan hacer el mayor trabajo posible durante la configuración para que los gráficos sean lo más fluidos posible más adelante.

He visto juegos que parecen permitir movimientos rápidos y libres y zooms en todo un mundo. Probablemente hay mucho genio y mucha laboriosa programación y arte allí; no solo descargaron un software de gráficos gratuito.

RalphChapin
fuente