Bunun yerine bir veritabanı kullanabilirsiniz - PostgreSQL, X ve Y koordinatlarında bulunan bu tür veriler için optimize edilmiş bazı özel indeksleme özelliklerine sahiptir. Döndürülen verilerin kare veya dikdörtgen şekilli bir alan yerine belirli bir yarıçap içinde olduğunu da belirleyebilirsiniz.
PostgreSQL (ücretsiz ve açık kaynak)
http://www.postgresql.org/
Başka veritabanları da var ve müşteri tarafı için, kendi başlarına çalışabilecekleri (oyun müşteri uygulamanız tarafından başlatılan) veya bir kod kütüphanesinin parçası olarak dahil edilebilecekleri için buna daha uygun bazı türler bulabilirsiniz. "Sadece kullanabileceğini" Bunun avantajı, bir endeksleme şeması tasarlamak zorunda olmamanızdır çünkü çoğu SQL veritabanı motoru zaten bunu oldukça iyi yapar.
Veri tabanı yaklaşımının bir avantajı, topaklarınızı daha küçük hale getirmeniz (ya da topakları tamamen ortadan kaldırmanız ve doğrudan kiremit kullanmanızdır, ancak tasarımınıza bağlı olarak en az küçük topakların / grupların kullanımı en verimli olabilir). ve sonra görüntülenebilir olandan daha geniş bir alana getirmek için SQL sorgusunu kullanın. Yakındaki görülemeyen alanları üst üste bindirmek için önceden yükleme yapılarak, fayanslar oyuncu karakterlerini hareket ettirmeden önce hazırlanabilir , böylece daha iyi (umarım daha pürüzsüz) bir oyun deneyimi elde edilir.
Bazı oyunların, Ashen Empires gibi, ilk defa edindikten sonra yerel sabit sürücüdeki harita verilerinin bir "önbelleğini" tuttuğunu fark ettim (şüphesiz ağ giriş / çıkışlarını azaltmak için budur):
Ashen Empires (oynamak ücretsiz, güzel 2D uygulama)
http://www.ashenempires.com/
Her bir öbek / karo ile birlikte "son güncelleme" zaman damgasını takip etmek de yararlı olacaktır, çünkü yerel olarak depolanmış verilerin bulunduğu yerlerde, SQL sorgusu ek bir "WHERE timestamp_column> $ local_timestamp" yan tümcesi içerebilir, böylece sadece güncellenmiş parçalar / karolar elde edilebilir. indirilen (bunun gibi bant genişliğinden tasarruf etmenin iki avantajı, düşük bağlantı maliyetleridir ve oyuncularınız için daha az gecikmedir, ki oyununuz popülerleştiğinde daha belirgin hale gelir).
Ashen Empires'dan bir ekran görüntüsü (birkaç karakter yerel bir bankada ve yerdeki kemiklere bakıldığında birkaç iskelet canavarı içeri girmiş olmalı ve yerel kasabanın muhafızları tarafından katledilmiş gibi görünüyor):