Istnieje wiele różnych sposobów, w jaki możesz to zrobić; Mam zamiar zasugerować „oczywiste dla mnie” wybory, ale istnieje wiele wariantów, które można zaprojektować. Oświadczenie: W rzeczywistości nie zaimplementowałem czegoś takiego.
Po pierwsze, potrzebujesz struktury danych obejmującej Twój świat. Jeśli wykonujesz ruch NPC w przestrzeni 3D, prawdopodobnie masz taką strukturę lub będziesz jej potrzebować do celów szukania ścieżki - powiedzmy, siatki nawigacyjnej. Załóżmy, że możemy dodać do tego pole zapachów.
Co zatem umieszczamy w tej dziedzinie? Proponuję listę zapisów ( zapach , siła , czas ). Ta lista jest utrzymywana na maksymalnej długości lub poniżej i sortowana według siły - tak słabe zapachy zostaną odrzucone. Zapach mógłby być coś wyraźnie określone dla każdego typu jednostki lub podmiotu, lub może to być po prostu typem podmiot - w zależności od tego, co chcesz, aby móc śledzić wyraźnie. Czas jest znacznik czasu, gdy ten rekord zapach był ostatnio aktualizowany.
Kiedy istota przechodzi przez obszar (np. Dany trójkąt siatki nawigacyjnej), czas zaktualizować listę zapachów. Po pierwsze, zmniejsz wszystkie mocne strony zgodnie z upływem czasu zgodnie z wartością czasu w stosunku do bieżącego czasu - rozkład wykładniczy jest prawdopodobnie rozsądnym wyborem tutaj. Następnie dodaj zapach bieżącej encji do listy, być może o sile zależnej od typu encji. Następnie, jeśli lista jest zbyt długa, odrzuć najniższą siłę.
Aby uzyskać wynik śledzenia, znajdź zapach na liście dla bieżącej lokalizacji, a następnie zrób to samo dla wszystkich jego sąsiadów i idź w kierunku najsilniejszego zapachu (to nie jest kierunek, z którego właśnie przyszedł tropiciel).
Dla dodatkowego realizmu:
Dyfuzja: okresowo przesyłaj ułamek zapachu w każdym miejscu sąsiadom. To dezorientuje szlaki, ale oznacza również, że można wywęszyć nieruchome rzeczy (znalezienie jedzenia, martwych ciał itp.) (Jest to nawet uznany rodzaj sztucznej inteligencji, który opiera działania całkowicie na tego rodzaju informacjach - krajobraz dostarcza informacji o tym, w jaki sposób udać się, aby uzyskać określony zasób itp. Nie pamiętam jego nazwy.) Główną wadą jest czas spędzony wszędzie obliczanie dyfuzji.
Silne zapachy powinny zapobiegać wykrywaniu słabych zapachów; podziel siłę poszukiwanego zapachu przez siłę najsilniejszego zapachu i zawiedz, jeśli jest on zbyt mały. To może pozwolić na celowe zagubienie śladu zapachowego.