Estaba tratando de implementar una ruta simple, pero el resultado es menos satisfactorio de lo que pretendía lograr. La cosa es que las unidades en juegos como Starcraft 2 se mueven en todas las direcciones, mientras que las unidades en mi caso solo se mueven en la mayoría de las 8 direcciones (estilo Warcraft 1) ya que estas 8 direcciones dirigen a los siguientes nodos disponibles (se mueven de una ficha a la siguiente ficha adyacente) . ¿Qué debo hacer para lograr el resultado como en Starcraft 2? ¿Reducir el tamaño del azulejo?
En la imagen, puede ver una línea horizontal de mosaicos de roca que son obstáculos, y el camino encontrado marcado como mosaicos verdes. La línea roja es el camino que quiero lograr.
game-design
game-mechanics
path-finding
Kooi Nam Ng
fuente
fuente
Respuestas:
Para un buen algoritmo de búsqueda de rutas, usar A * probablemente sería una buena idea, sin embargo, para un juego simple que no requiere una búsqueda de rutas sofisticada, eficiente ni efectiva, simplemente hacer que los personajes se muevan hacia un objetivo descubriendo la dirección de El objetivo debe ser suficiente.
Lo que puede hacer es generar un 'gráfico de visibilidad' (qué otros puntos son visibles desde cada punto) desde los vértices y luego realizar A * en el gráfico. Esto funciona porque el camino más corto siempre estará en el gráfico de visibilidad.
Reducir el tamaño del azulejo puede ayudarlo.
Recursos
Otras lecturas
EDITAR: Me gusta el comentario de @ MarkusvonBroady.
Recursos
De @MarkusvonBroady
Hice una búsqueda, encuentre los siguientes (eso puede ayudarlo)
fuente
Comenzando desde un extremo de la ruta sin procesar, por ejemplo
path[0]
, puede eliminarpath[1]
si el segmento se formó uniendo los puntos depath[0]
ypath[2]
NO intersecta ninguna pared. Ir más allá hasta el último segmento proporcionará un camino más simple.Esto no solo suavizará el camino sino que también eliminará algunos puntos inútiles, como el ejemplo de fuego, 3 segmentos consecutivos de una línea recta.
fuente