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:
Cargue las propiedades básicas del mundo del juego. Guiones globales.
Cargue la posición del jugador.
Cargue el nodo gridcell / BSP de esa posición.
Cargue solo los cuadros delimitadores de los objetos en esa celda.
Calcule lo que realmente se representaría (pruebas en los cuadros delimitadores, quizás pruebas de representación de oclusión)
Cargue las mallas de las cosas que se representan.
Cargue los materiales con las texturas de las mallas.
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).
Una vez que se haya cargado todo lo visible, comience a renderizar.
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.