Es gibt viel Abwechslung, wie Sie dies tun können; Ich werde die für mich offensichtlichen Entscheidungen vorschlagen, aber es gibt viele Variationen, die entworfen werden könnten. Haftungsausschluss: Ich habe so etwas noch nicht implementiert.
Zunächst benötigen Sie eine Datenstruktur, die Ihre Welt abdeckt. Wenn Sie NPC-Bewegungen in einem 3D-Raum ausführen, haben oder benötigen Sie wahrscheinlich eine solche Struktur für Pfadfindungszwecke - beispielsweise ein Navigationsnetz. Nehmen wir also an, wir können dem ein Feld für Düfte hinzufügen.
Also, was setzen wir in diesem Bereich? Ich schlage eine Liste von Aufzeichnungen vor ( Geruch , Stärke , Zeit ). Diese Liste wird auf oder unter einer maximalen Länge gehalten und nach Stärke sortiert - so werden schwache Düfte verworfen. Der Duft kann entweder explizit für jede Entität oder jeden Entitätstyp definiert sein oder einfach der Entitätstyp - je nachdem, was Sie eindeutig verfolgen möchten. Die Zeit ist ein Zeitstempel, zu dem dieser Duftdatensatz zuletzt aktualisiert wurde.
Wenn eine Entität einen Bereich durchläuft (z. B. ein bestimmtes Dreieck des Navigationsnetzes), ist es Zeit, die Duftliste zu aktualisieren. Erstens verringert alle Stärken entsprechend die Menge an Zeit vergangen nach dem Zeitwert gegenüber der aktuellen Zeit - exponentieller Abfall hier wahrscheinlich eine vernünftige Wahl ist. Fügen Sie dann den Duft der aktuellen Entität zur Liste hinzu, möglicherweise mit einer Stärke, die vom Entitätstyp abhängt. Wenn die Liste dann zu lang geworden ist, verwerfen Sie die niedrigste Stärke.
Um ein Tracking-Ergebnis zu erhalten, suchen Sie den Duft in der Liste für den aktuellen Standort, machen Sie dasselbe für alle Nachbarn und gehen Sie in Richtung des stärksten Geruchs (das ist nicht die Richtung, aus der der Tracker gerade gekommen ist).
Für zusätzlichen Realismus:
Diffusion: Übertragen Sie regelmäßig einen Teil des Duftes an jedem Ort an seine Nachbarn. Dies verwirrt die Wege, bedeutet aber auch, dass stationäre Dinge aufgespürt werden können (Auffinden von Nahrungsmitteln, Leichen usw.). (Es ist sogar eine anerkannte Art von KI, Aktionen vollständig auf diese Art von Informationen zu stützen. Die Landschaft bietet Informationen darüber, wie eine bestimmte Ressource usw. beschafft werden kann. Ich vergesse den Namen.) Der Hauptnachteil ist die aufgewendete Zeit Berechnung der Diffusion überall.
Starke Düfte sollten die Erkennung schwacher Düfte verhindern. Teilen Sie die Stärke des gesuchten Duftes durch die Stärke des stärksten Duftes und scheitern Sie, wenn er zu klein ist. Dies könnte es ermöglichen, die eigene Geruchsspur absichtlich zu verwirren.