Saya pikir implementasi Anda mengasumsikan tingkat suara dalam sel bersifat kumulatif, dan amplitudo hanya bergerak ke luar secara merata di semua arah. Suara tidak menyebar, bingkai demi bingkai, entah diputar atau tidak, dan Anda ingin mengetahui amplitudo untuk diputar pada titik mana pun.
Raycasting melalui ubin adalah salah satu cara (dan mungkin cara paling efektif) untuk melakukannya. Cukup tarik garis antara emitor dan penerima, dan kurangi nilai peredam dari setiap sel di sepanjang jalan. Jika angkanya positif, Anda memutar suaranya.
Jika Anda ingin memodelkan suara tidak langsung, maka Anda harus mencari jalur. Perlakukan emitor sebagai akar dari pohon Anda, dan modelkan setiap sel yang berdekatan sebagai simpul yang terhubung. Setiap tautan memiliki biaya, dikurangi dari volume saat ini. Teruslah menelusuri grafik sampai Anda menemukan penerima atau volume Anda turun di bawah nol (jika ya, mundur dan coba jalur lain). Jika tidak ada jalur ke penerima dengan volume positif, emitor Anda tidak dapat didengar. NB: Anda tidak bisa menyerah begitu saja ketika menemukan receiver, karena mungkin ada banyak jalur dari emitor ke penerima, dan Anda membutuhkan jalur dengan volume tertinggi.
Jika Anda memodelkan AI yang peduli dari mana suara itu berasal, pendekatan terakhir akan membantu - AI akan 'mendengar' suara datang dari arah segmen terakhir di jalan. Baik, jika ada dua jalur yang dapat didengar untuk penerima, mereka AI bisa bingung tentang beberapa suara dan arah mana yang harus diambil.