rpg 3d abre map del mundo y entidad carga-streaming

Hola, soy un desarrollador web y recientemente comencé a leer sobre el desarrollo de juegos. Seguí algunos tutoriales sobre c ++ y OpenGL (lo que pude encontrar en línea porque, como saben, no existen muchos tutoriales OpenGL actualizados).

Me sigo preguntando en un caso de un juego de rol con un gran mundo real (map) y entidades (enemigos que nunca) cómo podría ser implementado. Lo que significa que no se puede cargar un map enorme y las entidades a la vez, obviamente … Estaba pensando en subdividir el map en bloques y cada bloque en otros más pequeños para que cada bloque contenga (5×5) 25 subbloques.

Un map puede estar formado por muchos bloques, como el siguiente, que tiene 25 subbloques:

P = Subbloque actual de jugadores O = Subbloques de solución de continuidad X = Subbloques aún no cargados

Las entidades se cargarán solo para los jugadores del subbloque actual. Tenga en count que P no es solo el jugador, es una malla, es un pedazo de map no muy grande y no tan pequeño como el jugador.

XXXXXXOOOX XOPOX XOOOX XXXXX 

Y me pregunto si este es un buen enfoque. Supongo que cada subbloque debe ser una malla diferente aparentemente y luego unirlos juntos?

CASO 2:

¿Qué ocurre si guardo el map en 1 map de gran altura o en un set de maps de altura y genero la malla a partir de eso? De acuerdo con la position del jugador, copie la altura y el ancho de la image requerida, donde el jugador siempre está en el centro del mismo y reorganice los datos en el vbo.

Lo siento si esta es una pregunta tonta, pero simplemente no sé cómo abordar esto y no puedo encontrar ninguna reference. También tenga en count que en ese map también se realizarán animaciones.

Realmente agradecería que alguien pudiera dar algunas references o explicar la architecture de un juego como este.

Scott Bilas, de Gas Powenetworking Games, escribió un buen documento sobre cómo implementaron un mundo continuo en el asalto a las mazmorras.

Papel: El mundo continuo de Dungeon Siege

Diapositivas: El mundo continuo de Dungeon Siege

Minecraft es un juego en 3D con un mundo de juego extremadamente grande (prácticamente infinito). En lugar de un terreno 3D derivado de mallas, el terreno está representado por Cubos 3D. El mundo se genera procesalmente y se almacena en pequeños fragments , similar a lo que describió en su primera solución potencial.

Mientras se juega Minecraft, se renderizan y actualizan trozos cerca del jugador (incluidas las entidades en estos trozos), mientras que los trozos más alejados del jugador se guardan en el disco y no en la memory. Mientras el jugador viaja por el mundo, los trozos guardados cerca del reproductor se cargan en la memory del disco y los trozos cargados lejos del reproductor se guardan en el disco y ya no se usan. Cuando el jugador abandona el juego, todos los trozos cargados se guardan en el disco.

Como los fragments individuales son relativamente pequeños, se guardan grupos en el disco como un único file, labeldo como "regiones". En versiones anteriores de Minecraft, los trozos se guardaban en el disco como files individuales, que se cargaban aproximadamente siete veces más despacio que los files de región.

La sección técnica en el wiki de Minecraft tiene algo más de información sobre los trozos y regiones de Minecraft.