Ada banyak variasi dalam bagaimana Anda bisa melakukan ini; Saya akan menyarankan pilihan "jelas bagi saya", tetapi ada banyak variasi yang dapat dirancang. Penafian: Saya belum benar-benar menerapkan hal seperti ini.
Pertama, Anda membutuhkan struktur data yang mencakup dunia Anda. Jika Anda melakukan gerakan NPC dalam ruang 3D, maka Anda mungkin memiliki, atau pada akhirnya akan membutuhkan, struktur seperti itu untuk tujuan merintis jalan - katakanlah, jala navigasi. Jadi, mari kita asumsikan kita dapat menambahkan bidang untuk aroma itu.
Jadi, apa yang kita masukkan di bidang itu? Saya mengusulkan daftar catatan ( aroma , kekuatan , waktu ). Daftar ini disimpan pada atau di bawah panjang maksimum, dan diurutkan berdasarkan kekuatan - sehingga aroma yang lemah akan dibuang. The aroma bisa berupa sesuatu yang eksplisit didefinisikan untuk setiap entitas atau entitas jenis, atau itu hanya bisa menjadi tipe entitas - tergantung pada apa yang Anda ingin dapat melacak jelas. The Waktu adalah timestamp ketika rekaman aroma ini terakhir diperbarui.
Ketika suatu entitas melewati suatu area (misalnya segitiga tertentu dari jala navigasi), sekarang saatnya untuk memperbarui daftar aroma. Pertama, kurangi semua kekuatan sesuai dengan jumlah waktu yang berlalu sesuai dengan nilai waktu vs waktu saat ini - peluruhan eksponensial mungkin merupakan pilihan yang masuk akal di sini. Kemudian tambahkan aroma entitas saat ini ke daftar, mungkin dengan kekuatan yang bergantung pada jenis entitas. Kemudian jika daftar terlalu panjang, buang kekuatan terendah.
Untuk mendapatkan hasil pelacakan, temukan aroma dalam daftar untuk lokasi saat ini, kemudian lakukan hal yang sama untuk semua tetangganya, dan pergi ke arah aroma terkuat (itu bukan arah yang baru saja berasal dari pelacak).
Untuk realisme ekstra:
Difusi: secara berkala mentransfer sebagian aroma di setiap lokasi ke tetangganya. Ini membingungkan jalan, tetapi juga berarti bahwa benda-benda diam dapat diendus (mencari makanan, mayat, dll). (Itu bahkan semacam AI yang diakui untuk mendasarkan tindakan sepenuhnya pada jenis informasi ini - lanskap memberikan informasi tentang cara yang harus ditempuh untuk mendapatkan sumber daya tertentu, dll. Saya lupa namanya.) Kerugian utama adalah waktu yang dihabiskan menghitung difusi di mana-mana.
Aroma yang kuat harus mencegah deteksi aroma yang lemah; Bagi kekuatan aroma yang dicari dengan kekuatan aroma yang terkuat, dan gagal jika terlalu kecil. Ini bisa membuat jejak aroma seseorang dengan sengaja membingungkan.