Invece potresti usare un database - PostgreSQL ha alcune speciali capacità di indicizzazione ottimizzate per questo tipo di dati che si trova nelle coordinate X e Y. È inoltre possibile specificare che i dati restituiti si trovano entro un certo raggio anziché in un'area quadrata o di forma oblunga.
PostgreSQL (gratuito e open source)
http://www.postgresql.org/
Esistono anche altri database e per il lato client potresti trovare alcuni tipi più adatti a questo poiché possono essere eseguiti autonomamente (avviati dall'applicazione client di gioco) o possono essere inclusi come parte di una libreria di codici che puoi "semplicemente usare". Il vantaggio è che non è necessario progettare uno schema di indicizzazione perché la maggior parte dei motori di database SQL lo fa già abbastanza bene.
Un vantaggio con l'approccio del database è che puoi ridurre le dimensioni dei tuoi blocchi (o eliminare completamente i blocchi e utilizzare direttamente i riquadri, ma l'uso di almeno piccoli blocchi / gruppi di più riquadri può essere più efficiente a seconda del progetto), e quindi utilizzare la query SQL per portare in un'area più ampia di quanto sia visualizzabile. Pre-caricando per sovrapporre aree non visibili nelle vicinanze, le tessere possono essere preparate prima che il giocatore muova il proprio personaggio, risultando in un'esperienza di gioco migliore (si spera più liscia).
Ho notato che alcuni giochi mantengono una "cache" dei dati della mappa sul disco rigido locale dopo averli ottenuti la prima volta (questo è senza dubbio per ridurre l'I / O di rete), come Ashen Empires:
Ashen Empires (gioco gratuito, bella implementazione 2D)
http://www.ashenempires.com/
Anche tenere traccia degli "ultimi aggiornamenti" dei timestamp con ogni blocco / riquadro sarà utile poiché, per i casi in cui sono disponibili dati memorizzati localmente, la query SQL potrebbe includere una clausola aggiuntiva "WHERE timestamp_column> $ local_timestamp" in modo da ottenere solo blocchi / riquadri aggiornati scaricati (due vantaggi del risparmio di larghezza di banda come questo sono minori costi di connettività e minore ritardo per i tuoi giocatori, che diventerà più evidente quando il tuo gioco diventerà popolare).
Una schermata di Ashen Empires (alcuni personaggi sono in una banca locale, e dall'aspetto di quelle ossa sul pavimento sembra che alcuni scheletri di mostri devono aver vagato dentro e probabilmente sono stati massacrati dalle guardie della città locale):