คุณสามารถใช้ฐานข้อมูลแทน - PostgreSQL มีความสามารถในการจัดทำดัชนีพิเศษที่ปรับให้เหมาะกับข้อมูลประเภทนี้ซึ่งอยู่ในพิกัด X และ Y คุณยังสามารถระบุได้ว่าข้อมูลที่ส่งคืนนั้นอยู่ในรัศมีที่แน่นอนแทนที่จะอยู่ในรูปสี่เหลี่ยมจัตุรัสหรือพื้นที่รูปสี่เหลี่ยมผืนผ้า
PostgreSQL (ฟรีและโอเพนซอร์ส)
http://www.postgresql.org/
มีฐานข้อมูลอื่น ๆ เช่นกันและสำหรับฝั่งไคลเอ็นต์คุณอาจพบว่าประเภทบางประเภทเหมาะสมกว่าเนื่องจากสามารถเรียกใช้แบบสแตนด์อโลน (เริ่มต้นโดยแอปพลิเคชันไคลเอนต์เกมของคุณ) หรือสามารถรวมเป็นส่วนหนึ่งของไลบรารีรหัส ที่คุณสามารถ "เพียงแค่ใช้" ข้อดีคือคุณไม่ต้องออกแบบรูปแบบการจัดทำดัชนีเพราะเครื่องมือฐานข้อมูล SQL ส่วนใหญ่ทำสิ่งนี้ได้ค่อนข้างดี
ข้อดีของวิธีการฐานข้อมูลคือคุณสามารถทำให้ชิ้นส่วนของคุณเล็กลง (หรือกำจัดชิ้นส่วนอย่างสมบูรณ์และใช้ชิ้นส่วนโดยตรงโดยตรง แต่การใช้ชิ้นส่วนย่อยอย่างน้อย / กลุ่มของชิ้นส่วนจำนวนมากอาจมีประสิทธิภาพมากขึ้นตามการออกแบบของคุณ) แล้วใช้แบบสอบถาม SQL เพื่อนำมาในพื้นที่ขนาดใหญ่กว่าสามารถดูได้ ด้วยการโหลดล่วงหน้าไปยังพื้นที่ทับซ้อนใกล้เคียงที่ไม่สามารถดูได้กระเบื้องสามารถเตรียมได้ก่อนที่ผู้เล่นจะย้ายตัวละครของพวกเขาส่งผลให้ประสบการณ์การเล่นเกมที่ดีขึ้น (หวังว่าราบรื่น)
ฉันสังเกตเห็นว่าบางเกมเก็บ "แคช" ของข้อมูลแผนที่ในฮาร์ดไดรฟ์ในเครื่องหลังจากได้รับเป็นครั้งแรก (ไม่ต้องสงสัยเลยว่าจะลด I / O เครือข่าย) เช่น Ashen Empires:
Ashen Empires (เล่นฟรีใช้งาน 2D ที่สวยงาม)
http://www.ashenempires.com/
การติดตามการประทับเวลา "อัปเดตล่าสุด" กับแต่ละก้อน / ไทล์จะเป็นประโยชน์เช่นกันเนื่องจากที่ซึ่งข้อมูลที่เก็บไว้ในเครื่องพร้อมใช้งานแบบสอบถาม SQL อาจรวมส่วนเพิ่มเติมของ "WHERE timestamp_column> $ local_timestamp" เพื่อรับเฉพาะชิ้นส่วน ดาวน์โหลดแล้ว (ข้อดีสองประการของการประหยัดแบนด์วิดท์เช่นนี้คือลดต้นทุนการเชื่อมต่อและความล่าช้าน้อยลงสำหรับผู้เล่นของคุณซึ่งจะเห็นได้ชัดเจนขึ้นเมื่อเกมของคุณได้รับความนิยม)
สกรีนช็อตจาก Ashen Empires (ตัวละครสองสามตัวอยู่ที่ธนาคารท้องถิ่นและจากลักษณะของกระดูกเหล่านั้นที่อยู่บนพื้นดูเหมือนว่าสัตว์ประหลาดโครงกระดูกสองสามตัวต้องเดินเข้ามาและถูกสังหารโดยทหารยามของเมืองในท้องถิ่น):