Immagina uno sparatutto molto semplice, qualcosa che tutti sappiamo:
Sei il giocatore (verde). Il tuo movimento è limitato X
all'asse. Il nostro nemico (o nemici) è nella parte superiore dello schermo, il suo movimento è anche limitato X
all'asse. Il giocatore spara proiettili (gialli) contro il nemico.
Vorrei implementare un'intelligenza artificiale per il nemico che dovrebbe essere davvero bravo a evitare i proiettili dei giocatori. La mia prima idea è stata quella di dividere lo schermo in sezioni discrete e assegnare loro dei pesi:
Esistono due pesi: il "peso proiettile" (grigio) è il pericolo imposto da un proiettile. Più il proiettile è vicino al nemico, maggiore è il "peso del proiettile" ( 0..1
, dove 1 è il pericolo più elevato). Le corsie senza proiettile hanno un peso di 0. Il secondo peso è il "peso-distanza" (verde lime). Per ogni corsia aggiungo il 0.2
costo di movimento (questo valore è un po 'arbitrario ora e potrebbe essere modificato).
Quindi aggiungo semplicemente i pesi (bianco) e vado sulla corsia con il peso più basso (rosso). Ma questo approccio ha un difetto evidente, perché può facilmente mancare i minimi locali poiché il posto ottimale dove andare sarebbe semplicemente tra due proiettili in arrivo (come indicato dalla freccia bianca).
Quindi ecco cosa sto cercando:
- Dovrebbe trovare un modo per superare la tempesta di proiettili, anche quando non c'è posto che non imponga la minaccia di un proiettile.
- Il nemico può schivare in modo affidabile i proiettili scegliendo una soluzione ottimale (o quasi ottimale).
- L'algoritmo dovrebbe essere in grado di tenere conto della velocità di movimento dei proiettili (poiché potrebbero spostarsi con velocità diverse).
- Modi per modificare l'algoritmo in modo da poter applicare diversi livelli di difficoltà (stupidi ai nemici super-intelligenti).
- L'algoritmo dovrebbe consentire obiettivi diversi, poiché il nemico non vuole solo sfuggire ai proiettili, ma dovrebbe anche essere in grado di sparare al giocatore. Ciò significa che le posizioni in cui il nemico può sparare al giocatore dovrebbero essere preferite quando schivano i proiettili.
Quindi come affronteresti questo? Contrariamente ad altri giochi di questo genere, mi piacerebbe avere solo pochi nemici, ma molto "abili" invece di masse di nemici stupidi.