Originariamente inviato da Luke31
Innanzitutto, grazie a tutti per le risposte.
Il fatto è che io già conosco gli algoritmi di cammino minimo e simili. Almeno ne conoscevo uno: l'algoritmo di Dijkstra, comunque adesso dò un occhiata all'A*.
Il fatto è che a me praticamente serve una cosa, si laterale, ma forse leggermente diversa..
Il contesto in cui andrebbe usata, sarebbe durante l'esecuzione dell'IA di un personaggio, che, per attaccarne un altro a distanza, si trova la necessità di trovare:
Un punto a distanza in linea d'aria dall'avversario
non maggiore della sua portata (sua di quello che agisce), il più lontano possibile dall'avversario sopracitato nei limiti dettati dalla portata. Inoltre il punto deve avere una visuale libera dall'avversario. E ora tra i vari punti possibili trovati con le condizioni sopracitate, bisognerà trovare il punto che dal punto di partenza del personaggio non sia maggiore di un certo valore movimento.
Ora, per fare questo, avevo pensato di fare cosi:
Inizialmente si mettono in una matrice tutti i punti ad un raggio massimo dal bersaglio pari alla portata del personaggio che agisce. E questo sò come farlo.
A questo punto però, dovrei, per ognuno di questi punti, calcolare dapprima la retta che li congiunge al bersaglio, per quindi scorrere questa retta e controllare che il percorso in linea d'aria sia libero (e sò come farlo, ho trovato un algoritmo apposta, anche se non ricordo come si chiama). Dopodiché, se il precedente controllo và a buon fine, dovrò controllare il percorso necessario per arrivarvi, con un algoritmo di Dijkstra o A* (l'ultimo ancora non l'ho guardato ma immagino che sia questo il suo scopo), per quindi escludere tutti i punti con un percorso per arrivarvi maggiore di quello possibile. Infine prenderò il punto più lontano dal bersaglio, ed avrò raggiunto il mio scopo.
Quello che mi preoccupa in tutto questo è proprio il fatto che per ogni punto dovrò far eseguire un algoritmo di cammino minimo, e temo che diventi molto pesante!.
Chiedevo come facevano i moderni giochi, tipo quelli di guerra, a fare queste cose, e se usino questi metodi. Semplicemente perché se usano anche loro grafi 2d (o 3d, peggio), considerando il numero
gargantuesco di punti che ci starebbero da considerare, mi pare che diventerebbo assolutamente eccessivi questi calcoli, che vengono eseguiti ogni volta
per ogni punto vicino..