Sto creando un gioco d'azione basato su mappe 2D con un design di interazione simile a quello di Diablo II. In altre parole, il giocatore fa clic su una mappa per spostare il proprio giocatore. Ho appena finito il movimento del giocatore e sto passando al pathfinding.
Nel gioco, i nemici dovrebbero caricare il personaggio del giocatore. Esistono anche cinque diversi tipi di terreno che offrono diversi bonus di movimento. Voglio che l'intelligenza artificiale tragga vantaggio da questi bonus terreno mentre provano a raggiungere il giocatore.
Mi è stato detto di dare un'occhiata all'algoritmo di ricerca A * (http://en.wikipedia.org/wiki/A*_search_algorithm). Sto facendo questo gioco in HTML5 e JavaScript e ho trovato una versione in JavaScript: http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript Sto cercando di capire come modificarlo anche se.
Di seguito sono riportate le mie idee su cosa devo cambiare. Di cos'altro devo preoccuparmi?
- Quando creo un grafico, dovrò inizializzare l'array 2D in cui mi trasferisco trasmesso con un attraversamento di una mappa che corrisponde ai diversi tipi di terreno.
- in graph.js: la definizione "GraphNodeType" deve essere modificata per gestire i 5 tipi di terreno. Non ci saranno muri.
- in astar.js: Il g ed h punteggio dovrà essere modificato. Come dovrei farlo?
- in astar.js: isWall () probabilmente dovrebbe essere rimosso. Il mio gioco non ha muri.
- in astar.js: non sono sicuro di cosa si tratti. Penso che indichi un nodo che non è valido per essere elaborato. Ma quando sarebbe successo?
- Ad alto livello, come posso cambiare questo algoritmo da "oh, c'è un muro lì?" a "questo terreno mi porterà al giocatore più veloce del terreno intorno a me?"
A causa del tempo, sto anche discutendo di riutilizzare il mio algoritmo di Bresenham per i nemici. Sfortunatamente, i diversi bonus di movimento del terreno non saranno utilizzati dall'intelligenza artificiale, il che farà schifo il gioco. : / Mi piacerebbe davvero avere questo per il prototipo, ma non sono uno sviluppatore di commercio né sono un informatico. : D
Se conosci qualche codice che fa quello che sto cercando, ti preghiamo di condividere!
Anche i suggerimenti per il controllo della sanità per questo sono apprezzati.