Estoy escribiendo un juego donde una gran cantidad de objetos tendrán "efectos de área" sobre una región de un mapa en mosaico en 2D.Estructura de datos efectiva para áreas espaciales superpuestas
características requeridas:
- Varios de estos efectos de área pueden solaparse y afectar a la misma baldosa
- Debe ser posible acceder de manera muy eficiente la lista de efectos de cualquier baldosa dada
- Los efectos de área puede tener formas arbitrarias, pero normalmente tendrá la forma "hasta X distancia de las teselas del objeto que causa el efecto" donde X es un entero pequeño, generalmente 1-10
- Los efectos de área cambiarán con frecuencia, por ejemplo como los objetos se mueven a diferentes lugares en el mapa
- mapas podría ser potencialmente grandes (por ejemplo, 1000 x 1000 azulejos)
Qué estructura de datos que funciona mejor para esto?
Gracias Kylotan: este parece ser el enfoque más "integral" para garantizar un acceso rápido. Creo que puedo terminar haciendo algo como esto, pero usando un enfoque de tipo cuadribanda para el almacenamiento por casilla, y tal vez algún tipo de memoria caché inteligente para las listas por casilla para evitar mucha duplicación de listas – mikera
No entiendo qué beneficio obtienes del árbol cuádruple: un mapa de teselas es típicamente (por definición) un hash 2D desde la posición hasta las teselas. Normalmente, solo necesitas un árbol cuádruple cuando aún no tienes un sistema de búsqueda tan rápido (por ejemplo, para mundos continuos, no para mosaicos). – Kylotan