Vous pouvez utiliser une base de données à la place - PostgreSQL a des capacités d'indexation spéciales optimisées pour ce type de données qui sont localisées par les coordonnées X et Y. Vous pouvez également spécifier que les données renvoyées se trouvent dans un certain rayon plutôt que dans une zone de forme carrée ou oblongue.
PostgreSQL (gratuit et open source)
http://www.postgresql.org/
Il existe également d'autres bases de données, et pour le côté client, vous pouvez trouver certains types mieux adaptés à cela car ils peuvent fonctionner de manière autonome (initié par votre application cliente de jeu) ou peuvent être inclus dans le cadre d'une bibliothèque de code que vous pouvez "simplement utiliser". L'avantage est que vous n'avez pas à concevoir un schéma d'indexation car la plupart des moteurs de base de données SQL le font déjà très bien.
Un avantage de l'approche de base de données est que vous pouvez réduire la taille de vos morceaux (ou vous débarrasser complètement des morceaux et simplement utiliser des tuiles directement, mais l'utilisation d'au moins de petits morceaux / groupes de nombreuses tuiles peut être plus efficace selon votre conception), puis utilisez la requête SQL pour apporter une zone plus grande que celle visible. En préchargeant pour chevaucher les zones non visibles à proximité, les carreaux peuvent être préparés avant le joueur ne déplace son personnage, ce qui donne une meilleure expérience de jeu (espérons-le plus fluide).
J'ai remarqué que certains jeux gardent un "cache" des données cartographiques sur le disque dur local après l'avoir obtenu la première fois (c'est sans doute pour réduire les E / S réseau), comme Ashen Empires:
Ashen Empires (gratuit pour jouer, belle implémentation 2D)
http://www.ashenempires.com/
Garder une trace des horodatages "dernière mise à jour" avec chaque bloc / tuile sera également utile car, pour les données stockées localement, la requête SQL peut inclure une clause supplémentaire "WHERE timestamp_column> $ local_timestamp" afin que seuls les morceaux / tuiles mis à jour soient récupérés. téléchargé (deux avantages d'économiser de la bande passante comme celui-ci sont des coûts de connectivité plus faibles et moins de décalage pour vos joueurs, ce qui deviendra plus évident lorsque votre jeu deviendra populaire).
Une capture d'écran d'Ashen Empires (quelques personnages se trouvent dans une banque locale, et d'après l'apparence de ces os sur le sol, il semble que quelques monstres squelettes aient erré et aient probablement été abattus par les gardes de la ville locale):