Há muita variedade em como você pode fazer isso; Vou sugerir as opções "óbvias para mim", mas há muitas variações que podem ser projetadas. Disclaimer: Na verdade, eu não implementei algo assim.
Primeiro, você precisa de uma estrutura de dados que cubra seu mundo. Se você estiver fazendo movimento NPC em um espaço 3D, provavelmente terá ou precisará de uma estrutura desse tipo para fins de busca de caminhos - por exemplo, uma malha de navegação. Então, vamos supor que podemos adicionar um campo para aromas a isso.
Então, o que colocamos nesse campo? Proponho uma lista de registros ( perfume , força , tempo ). Essa lista é mantida no comprimento máximo ou abaixo dele e classificada por força - para que os aromas fracos sejam descartados. O perfume pode ser algo explicitamente definido para cada entidade ou tipo de entidade, ou pode simplesmente ser o tipo de entidade - dependendo do que você deseja poder rastrear de maneira distinta. O horário é um registro de data e hora de quando esse registro de perfume foi atualizado pela última vez.
Quando uma entidade passa por uma área (por exemplo, um determinado triângulo da malha de navegação), é hora de atualizar a lista de aromas. Primeiro, diminua todas as forças de acordo com a quantidade de tempo passado de acordo com o valor do tempo versus o tempo atual - o decaimento exponencial é provavelmente uma escolha razoável aqui. Em seguida, adicione o perfume da entidade atual à lista, talvez com uma força dependente do tipo de entidade. Então, se a lista ficar muito longa, descarte a menor força.
Para obter um resultado de rastreamento, encontre o perfume na lista do local atual, faça o mesmo para todos os seus vizinhos e siga a direção do perfume mais forte (que não é a direção da qual o rastreador veio).
Para realismo extra:
Difusão: transfira periodicamente uma fração do perfume em cada local para seus vizinhos. Isso confunde trilhas, mas também significa que as coisas estacionárias podem ser farejadas (encontrar comida, cadáveres, etc.). (É até um tipo reconhecido de IA para basear ações inteiramente nesse tipo de informação - o cenário fornece informações sobre o caminho a seguir para obter um recurso específico, etc. Eu esqueço o nome dele.) A principal desvantagem é o tempo gasto calculando a difusão em todos os lugares.
Aromas fortes devem impedir a detecção de aromas fracos; divida a força do perfume procurado pela força do perfume mais forte e falhe se for muito pequeno. Isso poderia permitir deliberadamente confundir o rastro de um perfume.