En un juego que estoy desarrollando para un cliente, un concepto clave del juego implica moverse en un mapa. En este caso, los tamaños y formas y demás de los distintos países son irrelevantes: pasar de un país a un país adyacente cuenta como un solo paso.
Estoy tratando de descubrir la mejor estructura de datos para representar internamente las conexiones entre los países. Para un país determinado, el juego necesita saber qué países son adyacentes, tanto para saber de qué manera pueden moverse los jugadores como para permitir que la IA del juego trace rutas, determinando posibles caminos de un país a otro. La IA también necesita evaluar qué tan bien conectado está un país, no solo con sus vecinos adyacentes inmediatos sino con los vecinos de esos países, etc.
He descubierto un par de posibilidades, pero parecen torpes e ineficientes. Debido a que la IA necesitará calcular un montón de rutas posibles para tomar buenas decisiones sobre su movimiento, "ineficiente" es muy problemático.
Sospecho que este es un rompecabezas de CS algo común y que hay una solución común, pero no he podido encontrar mucho buscando. Cualquier sugerencia es bienvenida.
fuente
Respuestas:
Suena como un gráfico y un algoritmo de ruta más corta
fuente
Definitivamente un gráfico. Compruébalo aquí Teoría de gráficos , básicamente tienes nodos y aristas. Un nodo puede contener 0 o más aristas a otros nodos.
Hay muchos algoritmos para calcular la ruta más corta (saltos o distancia), verificar los ciclos (más de una forma de llegar a uno mismo), etc.
Ahora, para poder implementar soluciones eficientes, eso es un poco más complejo, pero como siempre, hay formas.
fuente
Como ya se mencionó, necesitaría un gráfico que represente todas las conexiones posibles entre países. Cada conexión también mantendría la distancia entre dos países.
Luego, se puede usar un algoritmo de búsqueda de ruta como A * para determinar la ruta más corta entre dos países.
También hay algunos buenos libros sobre el juego ai: Game AI, por ejemplo, de Mat Buckland http://www.ai-junkie.com/books/toc_pgaibe.html
o la serie AI Game Programming Wisdom. http://www.aiwisdom.com/ El primer libro tiene varios capítulos sobre la búsqueda de caminos.
fuente