¿Por qué los videojuegos modernos tienen un tiempo de carga largo para las áreas en las que ya estás? ¿No deberían simplemente reaparecer a ti / enemigos / artículos, por qué tarda tanto tiempo como cargar el área en primer lugar?

La respuesta corta es: porque es más fácil / más barato hacerlo de esa manera, en la mayoría de los casos.

La explicación más larga: como una simplificación excesiva, el motor del juego debe contener la totalidad del mapa, con todos los objetos allí, además del meta-estado (como la progresión de la historia), más el mapeo de objetos a su representación gráfica. El mundo del juego, básicamente. Los juegos modernos tienen mundos de juego que son vastos, complejos y, a menudo, tienen intrincadas redes de conexiones. Para “reaparecer” al jugador / enemigos / elementos, el motor necesita “solo” determinar qué objetos en el mundo del juego deben ser destruidos por completo (por ejemplo, balas actualmente en vuelo), que deben reaparecer (jugador, algunos enemigos ), que deben restablecerse en su lugar (por ejemplo, puertas), que deben dejarse solos (escenario inmutable). Luego, se debe tomar una decisión sobre todas las relaciones que tienen esos objetos (por ejemplo, la intención de una torreta para rastrear al jugador puede ser invalidada por el reinicio; o no), y esas relaciones deben actualizarse.

Esa no es una tarea trivial dada la complejidad del mundo del juego en la mayoría de los juegos modernos. Es demasiado fácil cometer errores y crear errores que son muy difíciles de solucionar. Es mucho más fácil simplemente bombardear todo el mundo del juego y recrearlo desde cero. De esa manera, solo hay un lugar responsable de la creación del mundo del juego, y solo un lugar para depurar.

Además, a menudo se realiza un esfuerzo para abordar la velocidad de carga rápida más adelante en el ciclo de desarrollo, lo que requiere un esfuerzo adicional para modificar la arquitectura actual. Entonces, en la mayoría de los casos, el equipo (o el editor) decide que es mucho mejor gastar la energía del equipo para obtener 10 FPS adicionales en lugar de ahorrar 20 segundos en la carga del juego.

Dicho esto, algunos juegos (no puedo dar un buen ejemplo reciente de la parte superior de mi cabeza, pero lo he visto hecho) contienen disposiciones para una carga realmente rápida.

Yo diría que es solo el estado actual de la tecnología. Cuando un juego importante lo implementa de una manera que se reinicia rápidamente, todos los competidores lo seguirán y encontrarán formas de hacer lo mismo.

Entonces, ¿por qué todavía no lo han hecho? Porque es caro Recargar un nivel por completo es una especie de funcionalidad gratuita: simplemente hace lo mismo que cuando carga un nivel por primera vez. Y es seguro: sabes que después de hacerlo, toda la colocación de objetos será correcta y todos los disparadores estarán en el estado correcto. El jugador puede alterar el estado inicial de un nivel durante un tiempo bastante largo mientras juega, por lo que revertir todos los cambios realizados por el jugador también puede llevar un tiempo significativo.

Entonces, para revertir todos los cambios rápidamente, de alguna manera debería guardar el estado inicial y aplicarlo cuando se reinicie el nivel. Con la tecnología actual, la forma menos complicada, que se usa comúnmente, es considerar el diseño de nivel almacenado en el disco entre los datos del juego como un estado inicial guardado, y aplicarlo cargándolo como un todo.

Antes de recargar tu juego, el área puede contener muchos cambios causados ​​por tu comportamiento. Puede tener activadores a tiempo que ya activó, elementos que recogió, enemigos que mató, calcomanías de bala que colocó … en lugar de proporcionar una funcionalidad de “deshacer” para cada cambio que un jugador podría causar en un juego, es más fácil simplemente Limpie el nivel y vuelva a cargar el estado por completo.

Sin embargo, normalmente los juegos modernos omiten la recarga de datos de malla y geometría para los objetos que ya estaban presentes en la memoria. Por lo tanto, normalmente cargar un juego que está en la misma ubicación debería llevar menos tiempo que cargar el mismo nivel por primera vez.