Qual è la migliore pratica per far sì che i nemici degli NPC si coprano in un gioco FPS?


8

La mia domanda riguarda la struttura dei dati (e il modo logico di utilizzare questa struttura) dietro questo tipo di comportamento del nemico degli NPC: come calcola il luogo in cui può ripararsi quando il giocatore gli sta sparando?

Può essere in un gioco simile a FPS o "gioco da tavolo" ...

Risposte:


9

Hai 3 opzioni principali:

Opzione n. 1: (più robusta, ma più intensiva per la CPU)

Calcola in tempo reale le aree d'angolo abbastanza ampie da nascondere l'NPC e che non sono esposte al giocatore. Scegli il più vicino per il giocatore da nascondere.

Funzionerà su qualsiasi livello che è bello e su livelli con geometria che cambia durante il gioco. Ma ci vorrà più tempo per funzionare in modo coerente e utilizzerà fino alla maggior parte delle risorse della CPU durante il gioco.

Opzione n. 2: (risparmia tempo di progettazione di livello, hit minimo in tempo reale)

Crea uno strumento offline che esegue il test d'angolo e posiziona i nodi nel tuo livello per tutte le potenziali aree di copertura. I LD possono quindi modificare questi nodi o rimuovere quelli non appropriati.

Durante il gioco basta trovare il nodo valido più vicino.

Questo è bello in quanto il tuo percorso di ricerca d'angolo non deve essere accurato al 100% poiché LD può schermare alcuni nodi cattivi qua e là. Tuttavia, non è possibile rispondere ai cambiamenti nella geometria a meno che non si inizi a diventare intelligenti collegandoli agli oggetti o accendendoli / spegnendoli.

Opzione n. 3: (Forza bruta, colpo minimo in tempo reale)

Chiedi a LD di posizionare manualmente tutti i nodi di copertina, quindi scegli il nodo valido più vicino durante il gioco.

Se hai molti livelli o livelli elevati, aspettati che i LD si lamentino.


3

Penso che il modo migliore per farlo sarebbe quello di impostare manualmente le caselle nelle aree in cui vuoi che gli NPC si coprano.

Avere una variabile per "paura" o qualche altra metrica desiderata, quando viene raggiunta una soglia l'NPC dovrebbe spostarsi nella casella più vicina che è fuori dalla visuale del giocatore.

Potresti immaginare un modo per far sì che i nemici si coprano dietro qualsiasi oggetto in modo dinamico, ma più volte possono generare posizioni di copertura strane e illogiche.


1

C'è una descrizione di come l'IA di killzone ha cercato nello spazio di posizione per ottenere una buona posizione qui (PDF). È possibile modificare la funzione di valutazione per aumentare il valore di una posizione di copertura se l'IA viene sparata o danneggiata gravemente. Pertanto, un'intelligenza artificiale a cui non vengono sparati correrebbe un po 'più di rischio per raggiungere l'obiettivo.

Potresti anche aggiungere la soluzione di AttackingHobbo, aumentando l'interesse della copertura in base al fattore paura (ovvero 0: sono invincibile / 1: mi prendo cura / 5 per favore fermalo)

Saluti


1

Dipende dallo stile di gioco. È abbastanza comune lasciare ai progettisti di livelli posizionare oggetti di copertura, che possono essere un volume, una forma che rappresenta un oggetto di copertura o un nodo. Questo è più laborioso per i LD, ma offre un controllo molto maggiore, che di solito è richiesto in un gioco strettamente sceneggiato.

Per i giochi open world, è necessario un sistema di rilevamento automatico delle copertine. Ne abbiamo usato uno che ha rilevato la copertura in fase di esecuzione in Battlefield: Bad Company (1 & 2) al fine di poter invalidare e rilevare nuovamente la distruzione ambientale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.