실제 세계의 관점에서 : A에서 B로 향하고 잠겨있는 방식으로 문 D를 발견했다면 키 D를 찾아야한다는 사실을 알게 될 것입니다. 따라서 AI가 일반적인 사람만큼 모르는 경우 , 그것은 키를 스카우트하는 것을 포함 할 것이며, 그것은 그 자체로 일련의 작은 길 찾기 단계입니다. 반면에 경로를 시도하기 전에 해당 경로에 잠겨진 문이 있다는 것을 AI가 알기를 원할 수도 있으며,이 경우 키를 찾을 수있는 위치를 알고있을 것입니다.
어느 쪽이든, 문제는 두 가지 수준의 연결성 중 하나입니다. "지상"수준에서, 당신은 항상 하나의 분할되지 않은 영역 내에서 안전하게 안전하게 이동할 수 있다는 것을 알고 있습니다. 여기에서 현재 A * 경로 찾기 구현을 자유롭게 사용할 수 있습니다. (간단한 예에서는 구역을 단일 방으로 볼 수 있습니다. 문을 잠금 해제하지 않고 다른 방에 갈 수는 없습니다. 실제로는 던전의 전체 지역이 될 수 있습니다.) 실체 움직임이지만 주변 지역을 먼저 조사하는 대신 눈을 내리고 걸어 다니는 것과 비슷합니다. 또는이 경우에는 잠긴 문입니다. 따라서 A *가 실행되는지면지도는 플레이어가 현재 영역 내에서만 이동하도록 제한해야합니다.
다음으로, 지형보다 지형이 더 높은 상위 수준의 맵이 있습니다. 실제로 장애물에 대한 지상의 세부 사항은 신경 쓰지 않으며 영역 간의 연결에만 신경 쓰입니다. 이 토폴로지 맵은 현재 던전에있는 모든 영역의 이상적인 연결성을 보여주기 때문에 현재 잠겨있는 영역이있는 짝수 영역 간의 연결을 보여줍니다. 가장자리 사이-각각 영역 사이의 문을 나타냅니다-문을 열려면 아직 필요한 키가 저장되어 있습니다. 그렇지 않으면 열린 것으로 간주됩니다. 따라서 가장 짧은 경로에 대한이 그래프를 검색 할 때 검색이 실행될 때 가장자리의 데이터를 확인하여 찾은 경로를 이미 열려있는 경로로만 제한해야 합니다. 여기서의 연결성은 개방성을 의미하는 것이 아니라 잠재적 인 개방성을 의미합니다.
별도의 영역에 속하는 지점으로 이동하려면 먼저 상위 레벨지도를 검색하여 경로를 찾으십시오. (이 레벨에서는 A * 또는 다른 최단 경로 알고리즘을 사용할 수 있습니다.) 경로를 찾으면 해당 상위 레벨 맵은 현재 영역에서 다른 영역으로가는 데 사용해야하는 문에 대한 정보도 제공해야합니다. 이제 로컬 영역에서 지상 AI를 수행하여 해당 문으로 이동할 수 있습니다. 문에 도달하면 캐릭터는 그 문 / 포탈을 통과 할 수 있습니다. 그는 현재 구역 B에 있습니다.이 구역이 목표 구역 인 경우 지상 탐색을 사용하여 키로 이동할 수 있습니다. 그렇지 않은 경우 대상 영역에 도달 할 때까지 1 단계를 반복해야합니다.
찾고있는 열쇠 자체가 잠긴 문 뒤에있을 가능성이 있으며, 그 문 열쇠도 마찬가지로 .. 이것은 본질적으로 의존성 해결 문제이며, 이것을 해결하는 몇 가지 방법이 있으며, 그중 하나는 Petri Nets입니다. 참조 이 우수한 종이.
추신. 절차 적으로 던전을 생성하는 경우 플레이어의 시작 위치를 이미 알고있는 경우 종속성 순서에 대한 정보를 저장할 수 있습니다.