Agrupar / almacenar en caché grandes niveles en un juego para un jugador

8

¿Tiene sentido intentar descargar un gran nivel no lineal en fragmentos basados ​​en archivos y cargarlos a pedido? Hemos implementado fragmentación de nivel para mejorar el rendimiento de representación, pero aún así todos los objetos de nivel son persistentes en la RAM.

En caso afirmativo, ¿cómo mantenemos la ilusión de un mundo vivo / cambiante? Dado que el nivel no es lineal, sino más bien como un mundo en sí mismo, no podemos pretender que lo que sea que haya pasado se haya ido para siempre.

¿Es una mejor idea hacer que los niveles sean lo suficientemente complejos, pero también lo suficientemente optimizados para ser siempre persistentes en la memoria, pero implementar puntos de salto micro / macro que le permitan saltar a un punto totalmente distante (es decir, un nivel completamente nuevo), olvidando así sobre la consistencia del mundo y la ilusión de un mundo cambiante. Además, esto nos permitiría seguir una historia ligeramente lineal en un mundo aparentemente no lineal. Sería posible simplemente aplicar un nuevo estado al estado existente de un nivel "distante", si queremos llevar al jugador de vuelta a él.

usuario802232
fuente

Respuestas:

6

Crear trozos es realmente una buena idea, pero debes usarlo sabiamente. Hay muchos títulos grandes que usan la misma idea para dar la ilusión de un mundo muy grande. Por ejemplo, puedo mencionar Spore u Oblivion.

Primero hablemos de la espora ya que en su fase galáctica puedes ver fácilmente cómo funcionan las cosas:

Hay muchos planetas en la galaxia, pero no todos están en la memoria al mismo tiempo. cada vez que te acercas a un planeta, el juego carga automáticamente una textura para ese planeta desde el disco duro. Luego, si te acercas lo suficiente, puedes ingresar al planeta y hacer algunos cambios. mientras estás dentro de un planeta, casi todos los datos sobre el espacio exterior se desasignan. Y puedes hacer cualquier cambio en ese planeta que te guste. entonces puede volver a la vista de espacio. esta vez el juego recarga datos para otros planetas y guarda los cambios que hiciste en ese planeta. por ejemplo, si creó una montaña allí, todos los cambios de malla y textura se guardan nuevamente en archivos. También hay algunos eventos que se guardan en archivos. como cuando pones el dispositivo que ayuda a las criaturas a evolucionar en los planetas. estos eventos permanecen activos hasta que te alejas realmente del planeta que los desencadena.

En el olvido las cosas son un poco diferentes, aunque la idea base es la misma. Cuando caminas en estado salvaje, el juego está constantemente cargando y descargando áreas. Si intentaste jugar al olvido en PS3, este proceso produjo algunos retrasos menores en el área de transición (o al menos escuché que lo hicieron). También hay algunas áreas que detienen completamente el juego y ves una pantalla de carga como cuando entras en las cuevas de tus casas. Con este método, redujeron fácilmente la complejidad y el uso de memoria en las ciudades. solo piense en cuántas casas hay en una ciudad y cuánta memoria consumirían si quisieran cargarlas. También tenga en cuenta que si quisieran usar el mismo sistema de carga y descarga cada vez que se acerque a las casas, necesitarían casi todo el ancho de banda del disco duro, y podría dañarlo.

Para concluir mi respuesta, le sugiero que use el mismo método en su juego para áreas amplias. También debes guardar los cambios que el jugador hizo en un área mientras la descargabas. Este método ofrece a los jugadores una experiencia muy agradable de explorar un mundo real. Pero para áreas donde hay muchos objetos y cree que puede necesitar la mayor parte del ancho de banda de almacenamiento para la transmisión de datos, simplemente use un método tradicional con una pantalla de carga.

Ali1S232
fuente