Altri esperimenti con il Pathfinding (Parte Seconda)

Come dicevo ieri avrei provato a calcolare solo le rotte tra il punto e quello più prossimo: la soluzione funziona meglio, ma ha comunque un problema quando il punto più prossimo è dietro ad un ostacolo. Per questa ragione ho aggiunto l’eccezione di verificare se oltre al punto più prossimo viene trovato un punto in linea d’aria. Anche riducendo al minimo i calcoli la risoluzione dei A* fatto tramite raycast rimane troppo lenta. Ho provato ad usare LinecastNonAlloc ma non ho ottenuto un miglioramento sostanziale nelle prestazioni.

Sono arrivato alla conclusione che il raycast basato sulla fisica è troppo inefficiente per usarlo in maniera così massiccia su una mappa di discrete dimensioni con ostacoli complessi. Per questa ragione ho deciso che come prossimo passo proverò a calcolare senza raycast una mappa sulla quale utilizzare l’algoritmo A*: in pratica per ogni singolo ostacolo sulla mappa andrò a calcolare quali celle sono occupate e quali libere e quindi risolverò la mappa come una semplice scacchiera applicando l’A*.

Il mese è quasi concluso, e con questo passerò ad una altra serie di problemi accantonando per il momento il pathfinding. Il mio obiettivo sarebbe quello di rilasciare un gioco completo al mese, ma in questo ultimo caso ho trovato dei problemi sufficientemente interessanti per sperimentare, accantonando per il momento l’idea di un gioco completo.