Seperti yang Anda tahu ada banyak solusi ketika Anda menemukan jalan terbaik dalam lingkungan 2 dimensi yang mengarah dari titik A ke titik B.
Tetapi bagaimana cara menghitung jalur ketika suatu objek berada di titik A, dan ingin menjauh dari titik B, secepat dan sejauh mungkin?
Sedikit informasi latar belakang: Game saya menggunakan lingkungan 2d yang tidak berbasis ubin tetapi memiliki akurasi floating point. Gerakan ini berbasis vektor. Pathfinding dilakukan dengan mempartisi dunia game menjadi empat persegi panjang yang dapat dilalui atau tidak berjalan dan membangun grafik dari sudutnya. Saya sudah memiliki pathfinding antara poin yang bekerja dengan menggunakan algoritma Dijkstras. Kasus penggunaan untuk algoritma pelarian adalah bahwa dalam situasi tertentu, aktor dalam permainan saya harus menganggap aktor lain sebagai bahaya dan melarikan diri darinya.
Solusi sepele adalah dengan hanya memindahkan aktor dalam vektor ke arah yang berlawanan dari ancaman sampai jarak "aman" tercapai atau aktor mencapai dinding di mana ia kemudian menutupi dalam ketakutan.
Masalah dengan pendekatan ini adalah bahwa para aktor akan terhalang oleh hambatan kecil yang dapat dengan mudah mereka lewati. Selama bergerak di sepanjang dinding tidak akan membuat mereka lebih dekat dengan ancaman, mereka bisa melakukan itu, tetapi itu akan terlihat lebih pintar ketika mereka akan menghindari rintangan di tempat pertama:
Masalah lain yang saya lihat adalah dengan jalan buntu pada geometri peta. Dalam beberapa situasi makhluk harus memilih antara jalan yang membuatnya lebih cepat sekarang tetapi berakhir di jalan buntu di mana ia akan terperangkap, atau jalan lain yang berarti bahwa ia tidak akan sejauh itu dari bahaya pada awalnya (atau bahkan sedikit lebih dekat) tetapi di sisi lain akan memiliki hadiah jangka panjang yang jauh lebih besar karena pada akhirnya akan membuat mereka jauh lebih jauh. Jadi reward jangka pendek semakin menjauh cepat harus entah bagaimana dihargai terhadap reward jangka panjang semakin menjauh jauh .
Ada juga masalah peringkat lain untuk situasi di mana seorang aktor harus menerima untuk bergerak lebih dekat ke ancaman kecil untuk menjauh dari ancaman yang jauh lebih besar. Tetapi mengabaikan sama sekali semua ancaman kecil akan menjadi bodoh juga (itu sebabnya aktor dalam grafik ini berusaha menghindari ancaman kecil di area kanan atas):
Apakah ada solusi standar untuk masalah ini?