Sto lavorando per cercare di migliorare il percorso per i nemici del mio gioco. In questo momento, sostanzialmente si muovono costantemente verso la posizione esatta del giocatore calcolando l'angolo tra loro e i giocatori e muovendosi in quella direzione. Ho anche un algoritmo di floccaggio che impedisce ai nemici di impilarsi uno sopra l'altro, quindi si formeranno in gruppi anziché aggirarsi.
Tuttavia, ora che ho aggiunto una mappa basata su tessere, ad esempio ho bisogno che i nemici siano in grado di aggirare ostacoli e muri. Inizialmente ho provato ad aggiungere un valore di separazione alle tessere "non percorribili" in modo che l'algoritmo di floccaggio considerasse le pareti e gli ostacoli come oggetti da cui allontanarsi. Devo ancora capire se questo è fattibile o meno perché il mio test iniziale ha mostrato che i nemici colpivano un "muro" invisibile in cui non ci sono tessere non percorribili, eppure per qualche ragione, lo colpiscono e iniziano a spazzare via.
Mi chiedevo se potrebbe essere troppo pesante per calcolare un percorso verso il giocatore usando A * e quindi usare l'algoritmo di floccaggio per prevenire l'aggregazione. Inizialmente il mio gioco sarebbe stato uno sparatutto basato sull'onda, ma ho deciso invece di renderlo basato sul livello nella vena di Hotline Miami, quindi è probabile che avrò meno nemici, con l'orda occasionale, e farò più forti.
È una soluzione praticabile? Sto usando Java con Slick2D come motore di gioco. Oppure esiste una soluzione / algoritmo migliore che affronta entrambi questi problemi?