Hay un gran problema que nadie aborda aquí: la gran diferencia entre almacenarlo en el disco y almacenarlo en la memoria.
Suponiendo que estás hablando de un juego world como dijiste, esto significa que va a ser muy grande. No va a almacenar todo en la memoria de una vez, sino que almacenará las inmediaciones en la memoria y las actualizará cuando el jugador camine.
Esta área de vecindad debe ser tan simple, fácil y rápida de acceder como sea posible. Definitivamente debe ser una matriz (o un conjunto de matrices que se intercambian a medida que el jugador se mueve). Será referenciado a menudo y por muchos subsistemas de su motor de juego: gráficos y física se encargarán de cargar los modelos, dibujarlos, mantener al jugador en la parte superior del terreno, colisiones, etc .; el sonido necesitará saber en qué tipo de suelo se encuentra parado el jugador, para reproducir el sonido de paso apropiado; y así. En lugar de transmitir y duplicar estos datos entre todos los subsistemas, si solo lo conservas en matrices globales, pueden acceder a él a voluntad y con una velocidad y eficacia del 100%. Esto realmente puede simplificar las cosas (¡pero tenga en cuenta las consecuencias de las variables globales!).
Sin embargo, en el disco definitivamente desea comprimirlo. Algunas de las respuestas dadas proporcionan buenas sugerencias; puede serializar una estructura de datos como una tabla hash o una lista de las únicas ubicaciones completas. También puedes guardar un octree. En cualquier caso, no desea almacenar ubicaciones en blanco en el disco; de acuerdo con su estadística, eso significaría que el 66% del espacio se desperdicia. Seguro que hay un momento para olvidarse de la optimización y hacer que funcione, pero no desea distribuir un archivo de 66% de vacío a los usuarios finales. También tenga en cuenta que los discos no son máquinas perfectas de acceso aleatorio (excepto para SSD); los discos duros mecánicos aún deberían durar al menos otros varios años, y funcionan mejor de forma secuencial. Vea si puede organizar su estructura de datos para que las operaciones de lectura sean secuenciales, a medida que transmite más terreno de vecindad mientras el jugador se mueve, y probablemente encontrará una diferencia notable. Sin embargo, no creo en mi palabra, realmente no he probado este tipo de cosas, simplemente tiene sentido, ¿verdad?
Creo que la mejor elección de método para almacenar el mundo depende en gran medida del tipo de operaciones que necesita hacer en el mundo del juego. –
¿Y qué harías para cada ubicación al pasar por ellas? ¿Necesita mirar las celdas cercanas? –