Я пишу игру, где большое количество объектов будет иметь «эффекты области» над областью плиточной 2D-карты.Эффективная структура данных для перекрывающихся пространственных областей
Требуемые характеристики:
- Некоторые из этих эффектов зоны могут перекрываться и влияют на ту же плитку
- Должна быть обеспечена возможность очень эффективно получить доступ к списку эффектов для любой плитки
- эффекты площадь может иметь произвольные формы, но обычно имеет форму «до X плиток расстояние от объекта, вызывающего эффект», где X является маленьким целым числом, обычно 1-10
- Эффекты области будут меняться часто, например поскольку объекты перемещаются в разных местах на карте
- Карты могут быть потенциально большие (например, 1000 * 1000 плиток)
Какая структура данных будет работать лучше для этого?
Спасибо Kylotan - это похоже на самый «всеобъемлющий» подход, гарантирующий быстрый доступ. Я думаю, что я могу сделать что-то подобное, но используя подход типа quadtree для хранилища на одной плите и, возможно, какой-то умный кеш для списков для каждой таблицы, чтобы избежать большого дублирования списка. – mikera
Я не понимаю, какую выгоду вы получаете от quad-tree: карта плитки обычно (по определению) 2D-хэш от позиции до плитки. Обычно вам нужен только квад-дерево, если у вас еще нет такой быстрой поисковой системы (например, для непрерывных миров, а не для черепичных). – Kylotan