Java: O que é uma boa estrutura de dados para armazenar um mapa de coordenadas para um mundo infinito de jogos?

Estou acostumado a codificar em PHP, mas não sou realmente proficiente em Java e isso tem sido um problema há algum tempo. Espero que seja uma solução bastante fácil, no entanto, não consigo encontrar nenhum bom exemplo de código da maneira que o pesquiso, então aqui vai:

Estou programando um jogo que ocorre em um mundo infinito gerado aleatoriamente em 2d em um mapa baseado em blocos (nitpicking: eu sei que não será verdadeiramente infinito. Eu apenas espero que o mundo seja muito grande). A abordagem usual da matriz multidimensional do mapa [x] [y] começou como uma idéia básica, mas como o Java não fornece uma maneira de desvantagens de chave de matriz não inteiras (isto é, negativas) como o PHP, não posso ter adequadamente um (- x, + x, -y, + y) sistema de coordenadas com teclas de array.

Eu preciso ser capaz de encontrar os objetos em um bloco em uma coordenada x, y específica, bem como encontrar "blocos adjacentes" de um determinado bloco. (Trivial se eu puder getObjectAt (x, y), posso obter (x + 1, y) e assim por diante)

Eu li sobre árvores quádruplas e árvores R e similares. O conceito é empolgante, porém não vi nenhum exemplo bom e simples de implementação em Java. Além disso, não tenho muita certeza se é exatamente disso que preciso.

Qualquer conselho é bem-vindo

Obrigado

questionAnswers(11)

yourAnswerToTheQuestion