Individua il percorso più breve attraverso gli ostacoli quando tutti i percorsi normali sono bloccati


10

Sto realizzando una Difesa delle torri e ho un funzionamento base del pathfinding, ma ho un problema.

Voglio rendere il percorso bloccabile e quando si verifica un blocco i corridori attaccheranno le torri di blocco.

Quindi quello di cui ho bisogno è un modo per trovare il percorso più breve che, soprattutto, ha il minor numero di torri sulla strada.

Come lo faccio?


1
non sarebbe un rilevamento di collisioni all'interno del percorso percorribile?
Prix

Poiché le torri di blocco sono distruttibili, esiste effettivamente un percorso. Solo il costo del passaggio attraverso di essi è molto più elevato rispetto a quello di percorrere un percorso senza ostacoli. (Vedi la risposta di coderanger di seguito)
bummzack

Risposte:


21

Nel tuo percorso il punteggio è sufficiente per far sì che passare attraverso una torre abbia lo stesso costo di attraversare un gran numero di tessere. In generale, proverà a aggirarli, ma se non esiste un tale percorso l'output attraverserà comunque il minor numero di ostacoli. Puoi regolare la penalità in modo che a volte passino semplicemente invece di fare tutto il giro della mappa, se vuoi.


mi piacerebbe vedere un esempio di codice di questa implementazione, suono semplice e robusto
DFectuoso

3
L'algoritmo A * ( en.wikipedia.org/wiki/A * _search_algorithm) funziona con i costi del percorso. Basta aumentare il costo per i segmenti che attraversano una torre. I tuoi agenti cercheranno quindi di evitare le torri o, se è più economico attaccare una torre, la attaccheranno. L'idea dell'algoritmo A * è di minimizzare i costi, quindi dovresti essere in grado di ottenere ciò che desideri semplicemente modificando i costi del percorso ...
bummzack

Questa è un'ottima soluzione a cui non avrei mai pensato, grazie!
jhocking

Solo una nota: dare ai nodi della torre un enorme costo di movimento senza aumentare anche la stima utilizzata per l'algoritmo A * quando il percorso è ovviamente bloccato significherà che i tuoi agenti controlleranno ogni nodo dalla loro parte dell'ostacolo prima di decidere una pausa- attraverso il punto. A seconda della quantità di nodi e agenti, questo potrebbe rallentare l'algoritmo in modo proibitivo.
Martin Sojka,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.