Вместо этого вы можете использовать базу данных - PostgreSQL имеет некоторые специальные возможности индексирования, оптимизированные для данных этого типа, которые расположены по координатам X и Y. Вы также можете указать, что возвращаемые данные находятся в пределах определенного радиуса, а не в квадратной или продолговатой области.
PostgreSQL (бесплатный и открытый исходный код)
http://www.postgresql.org/
Существуют и другие базы данных, и для клиентской стороны вы можете найти определенные типы, которые лучше подходят для этого, поскольку они могут работать автономно (инициируется вашим игровым клиентским приложением) или могут быть включены как часть библиотеки кода. что вы можете «просто использовать». Преимущество состоит в том, что вам не нужно разрабатывать схему индексации, потому что большинство механизмов баз данных SQL уже делают это достаточно хорошо.
Преимущество подхода с использованием базы данных состоит в том, что вы можете уменьшить свои чанки (или полностью избавиться от чанков и просто использовать плитки, но использование как минимум небольших кусков / групп из множества плиток может быть более эффективным в зависимости от вашего дизайна), а затем используйте запрос SQL, чтобы увеличить область, доступную для просмотра. Путем предварительной загрузки, чтобы перекрыть близлежащие невидимые области, плитки могут быть подготовлены до того, как игрок переместит своего персонажа, что приведет к лучшему (надеюсь, более плавному) игровому опыту.
Я заметил, что некоторые игры хранят «кэш» картографических данных на локальном жестком диске после его получения в первый раз (это, несомненно, уменьшает сетевой ввод / вывод), например, Ashen Empires:
Ashen Empires (бесплатная игра, красивая 2D реализация)
http://www.ashenempires.com/
Отслеживание «последних обновленных» временных меток с каждым чанком / плиткой также будет полезно, поскольку для локально хранимых данных SQL-запрос может включать дополнительное предложение «WHERE timestamp_column> $ local_timestamp», чтобы получать только обновленные чанки / плитки загруженный (два преимущества экономии пропускной способности, как это: более низкая стоимость подключения и меньшая задержка для ваших игроков, что станет более очевидным, когда ваша игра станет популярной).
Снимок экрана из Ashen Empires (несколько персонажей находятся в местном банке, и, судя по тем костям на полу, похоже, что несколько скелетных монстров, должно быть, забрели внутрь и, вероятно, были убиты охранниками местного города):