Dari sudut pandang dunia nyata: Jika Anda menuju dari A ke B dan menemukan pintu D dengan cara yang terkunci, Anda akan menyadari bahwa Anda harus menemukan kunci D. Jadi, jika AI Anda sama tidak dikenalnya seperti manusia pada umumnya. , Itu akan melibatkan pengintaian untuk kunci, yang merupakan serangkaian langkah kecil dalam menemukan jalannya sendiri. Di sisi lain Anda mungkin ingin AI Anda tahu, bahkan sebelum mencoba jalan, bahwa ada pintu yang terkunci pada rute itu, dan dalam hal ini mungkin juga akan tahu di mana menemukan kunci.
Bagaimanapun, masalahnya adalah salah satu konektivitas di dua tingkat. Pada level "di tanah", Anda tahu bahwa Anda selalu dapat bergerak dengan aman dalam satu zona yang tidak terbagi ... tidak terbagi oleh pintu yang terkunci, yaitu. Di sinilah Anda dapat menggunakan implementasi pathfinding A * saat ini dengan bebas. (Dalam contoh sederhana, Anda bisa melihat zona sebagai satu ruangan. Anda tidak bisa mencapai ruangan lain tanpa membuka kunci pintu. Pada kenyataannya, itu bisa menjadi seluruh wilayah ruang bawah tanah Anda.) Ini adalah fondasi dari Anda gerakan entitas, tapi ini agak seperti berjalan-jalan dengan mata tertunduk, alih-alih mengamati daerah di sekitar Anda terlebih dahulu - Anda cenderung berjalan ke tiang lampu. Atau dalam hal ini, pintu yang terkunci. Jadi peta level dasar tempat A * dijalankan harus membatasi pemain agar hanya bergerak di dalam zona saat ini.
Selanjutnya, ada peta tingkat yang lebih tinggi, yang lebih topologis daripada topografi di alam. Itu tidak benar-benar peduli tentang rincian hambatan di lapangan dan sebagainya, itu hanya peduli tentang konektivitas antara zona. Peta topologi ini mengandung koneksi antara zona genap yang saat ini memiliki pintu terkunci di antara mereka, karena ini menunjukkan konektivitas ideal semua zona di ruang bawah tanah Anda. Di tepinya - masing-masing mewakili pintu antara zona - ia menyimpan kunci apa yang diperlukan, jika ada, untuk membuka pintu itu, jika tidak maka dianggap terbuka. Jadi dalam mencari grafik ini untuk jalur terpendek, harus membatasi jalur yang ditemukan hanya untuk rute yang sudah terbuka , dengan memeriksa data di tepinya saat pencarian berjalan. Konektivitas di sini tidak menyiratkan keterbukaan, melainkan menyiratkan potensi keterbukaan.
Saat Anda ingin pindah ke titik yang berada dalam zona terpisah, pertama-tama Anda mencari peta tingkat yang lebih tinggi untuk menemukan jalur. (A * atau algoritma jalur terpendek lainnya dapat digunakan pada level ini.) Setelah Anda menemukan path, peta level yang lebih tinggi itu juga harus memberikan info pintu mana yang perlu Anda gunakan untuk mendapatkan dari zona Anda saat ini ke zona lain. Sekarang, di zona lokal, Anda dapat melakukan AI di permukaan tanah untuk menavigasi ke pintu itu. Setelah pintu tercapai, karakter Anda dapat melewati pintu / portal itu. Dia sekarang di zona B. Jika ini adalah zona target, dia dapat menggunakan navigasi dari permukaan tanah untuk menuju ke tombol. Jika tidak, maka Anda perlu mengulangi langkah pertama sampai Anda mencapai zona target.
Ada kemungkinan kunci yang dicari ada di balik pintu yang terkunci ... dan kunci pintu itu juga ... dan seterusnya ad nauseum. Ini pada dasarnya adalah masalah resolusi ketergantungan, dan ada beberapa cara untuk mengatasi ini, salah satunya adalah Petri Nets. Lihat kertas yang luar biasa ini .
PS. Jika Anda membuat ruang bawah tanah secara prosedural, maka saat melakukannya, Anda dapat menyimpan informasi tentang pemesanan ketergantungan, asalkan Anda sudah mengetahui posisi awal pemain.