C'è molta varietà nel modo in cui potresti farlo; Suggerirò le scelte "ovvie per me", ma ci sono molte varianti che potrebbero essere progettate. Disclaimer: non ho implementato nulla di simile.
Innanzitutto, hai bisogno di una struttura di dati che copra il tuo mondo. Se stai eseguendo il movimento NPC in uno spazio 3D, probabilmente hai, o alla fine avrai bisogno, di una tale struttura per scopi di rilevamento del percorso, ad esempio una rete di navigazione. Quindi, supponiamo che possiamo aggiungere un campo per i profumi a quello.
Quindi, cosa mettiamo in quel campo? Propongo un elenco di dischi ( profumo , forza , tempo ). Questo elenco è mantenuto a una lunghezza massima o inferiore e ordinato in base alla forza , in modo da eliminare i profumi deboli. Il profumo potrebbe essere qualcosa di esplicitamente definito per ogni entità o tipo di entità, oppure potrebbe essere semplicemente il tipo di entità, a seconda di ciò che si desidera poter tracciare distintamente. Il tempo è un indicatore temporale di quando questo record di profumo è stato aggiornato l'ultima volta.
Quando un'entità attraversa un'area (ad esempio un dato triangolo della mesh di navigazione), è tempo di aggiornare l'elenco dei profumi. Innanzitutto, diminuisci tutti i punti di forza in base alla quantità di tempo trascorso in base al valore temporale rispetto al tempo corrente: il decadimento esponenziale è probabilmente una scelta ragionevole qui. Quindi aggiungi il profumo dell'entità corrente all'elenco, magari con una forza che dipende dal tipo di entità. Quindi se l'elenco è diventato troppo lungo, scarta la forza più bassa.
Per ottenere un risultato di tracciamento, trova il profumo nell'elenco per la posizione corrente, quindi fai lo stesso per tutti i suoi vicini e vai nella direzione del profumo più forte (non è la direzione da cui proviene il tracker).
Per un realismo extra:
Diffusione: trasferisce periodicamente una frazione del profumo in ogni posizione ai suoi vicini. Questo confonde le tracce, ma significa anche che le cose stazionarie possono essere annusate (trovare cibo, cadaveri, ecc.). (È persino una specie riconosciuta di IA per basare le azioni interamente su questo tipo di informazioni: il panorama fornisce informazioni su quale strada andare per ottenere una particolare risorsa, ecc. Dimentico il nome di esso.) Il principale svantaggio è il tempo impiegato calcolo della diffusione ovunque.
I profumi forti dovrebbero impedire il rilevamento di profumi deboli; dividere la forza del profumo ricercato per la forza del profumo più forte e fallire se è troppo piccola. Ciò potrebbe consentire di confondere deliberatamente la propria traccia di profumo.