Java: ¿Cuál es una buena estructura de datos para almacenar un mapa de coordenadas para un mundo de juego infinito?

Estoy acostumbrado a codificar en PHP, pero no soy muy hábil con Java y esto ha sido un problema desde hace algún tiempo. Espero que sea una solución bastante fácil, sin embargo, no puedo encontrar ningún buen código de ejemplo de ninguna manera que lo busque, así que aquí va:

Estoy programando un juego que tiene lugar en un mundo infinito generado aleatoriamente 2d en un mapa basado en mosaicos (nitpicking: Sé que no será realmente infinito. Solo espero que el mundo sea bastante grande). El enfoque habitual de la matriz multidimensional map [x] [y] comenzó como una idea básica, pero dado que Java no proporciona una forma de travesuras de clave de matriz no enteras (es decir, negativas) como PHP, no puedo tener un (- x, + x, -y, + y) sistema de coordenadas con teclas de matriz.

Necesito poder encontrar los objetos en un mosaico en una coordenada x, y específica, así como encontrar "mosaicos adyacentes" de un mosaico determinado. (Trivial si puedo obtenerObjectAt (x, y), puedo obtener (x + 1, y) y así sucesivamente)

He leído sobre árboles cuádruples y árboles R y similares. El concepto es emocionante, sin embargo, no he visto ninguna implementación de ejemplo buena y simple en Java. Y además, no estoy realmente seguro de si eso es exactamente lo que necesito.

Cualquier consejo es bienvenido

Gracia

Respuestas a la pregunta(11)

Su respuesta a la pregunta