Come posso rendere credibile il pathfinding NPC?


10

Esiste un modo "accademico" per fare in modo che gli NPC camminino a caso su una mappa, ma abbiano un comportamento credibile?

Lo scenario ovvio è una guardia armata che sta camminando in un seminterrato per proteggerlo. È abbastanza facile impostare un percorso "credibile".

Quello che sto cercando è un modo per simulare una folla in una piccola città, in effetti. Come posso far sembrare che la loro mossa non sia un robot senza reti.


1
Ti interessa evitare le collisioni di grandi folle o dare a ogni membro della folla uno scopo e una destinazione?
10

Risposte:


6

Ti suggerisco di dare un'occhiata a Craig Reynolds Steering Behaviors . Per rendere le cose più interessanti, puoi anche cambiare comportamento a seconda della situazione in cui si trova l'NPC.


I comportamenti di guida sono perfetti per questo, purché non ti dispiaccia molto scivolare i piedi.
10

2

non sono robot senza reti.

Facile, dai loro obiettivi. Dai a ogni NPC una destinazione a seconda della mappa in cui potresti non dover nemmeno trovare un percorso per loro, solo come Sterzo, o pre-calcola il percorso tra le porte in città.



2

Crea nodi obiettivo nei luoghi logici di interesse nel tuo mondo e fai in modo che gli NPC navighino tra questi nodi. Idealmente hai anche animazioni associate agli obiettivi come guardare un cartellone, buttare la spazzatura in un bidone della spazzatura, seduto su una panchina dell'autobus.

Quindi, quando gli NPC vengono generati, viene assegnato loro un obiettivo da raggiungere e utilizzare. Una volta che hanno finito l'animazione su un bersaglio, dagliene uno nuovo.

Per rompere ulteriormente, avendo un tempo di inattività casuale dopo aver terminato un obiettivo, quindi non tutti passano immediatamente alla cosa successiva. Genera anche alcuni NPC al loro primo bersaglio in modo che inizino immediatamente a giocare l'animazione dell'obiettivo. Più oggetti interessanti hai nel mondo, più ti sembrerà un posto.

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.