여유 공간에서 효율적인 경로 찾기


12

우주에 게임이 있는데 길 찾기가 필요한 이동 명령을 내고 싶습니다. 이제 A * 등이 대부분 나무에 적용되며 경로 찾기 노드가없는 빈 공간이 아니라는 것을 이해합니다. 현재 고정 AABB로 표시되는 장애물이 있습니다. 즉, 무한한 "지형"장애물이 없습니다. 또한, 나는 대부분의 장애물이 큐브 나 구체로 합리적이라고 생각합니다.

그래서 훨씬 간단한 경로 찾기 알고리즘을 적용하려고 생각했습니다. 즉, 현재 위치에서 대상 위치로 광선을 캐스트하면 공간 분할을 사용하여 비교적 빠르게 장애물 목록을 얻을 수 있습니다. 내가 확실하지 않은 것은 주문 된 유닛이 장애물 주위에서 기동하는 부분을 결정하는 방법입니다.

지금까지 내가 생각한 것은 단순히 잠재적 인 장을 사용한다는 것입니다. 즉, 모든 유닛은 서로 떨어져 강한 반발력을 느끼고 원하는 지점을 향한 적당한 힘을 느낄 것입니다. 이것은 또한 그룹 명령을 내릴 수 있다는 장점이 있습니다. 다른 엔티티를 향해 중간 수준의 힘을 주문할 수도 있습니다. 그러나 이것은 분명히 최적의 솔루션을 달성하지 못할 것입니다.

잠재적 필드가 매개 변수를 고려하여 합리적인 근사치를 얻습니까? 아니면 다른 솔루션이 필요합니까?

답변:


7

잠재적 인 필드가 작동 할 수 있지만, 주변 장애물로 인해 장치가 갇히게되는 차선책과 "현지 최소값"에 문제가있을 것입니다. A *는 3D 열린 공간 환경에 적합합니다. 그것은 당신의 요구에 맞는 네비게이션 메쉬를 생성하는 문제가됩니다. 탐색 노드에 Octrees와 같은 구조를 사용할 수도 있습니다. 각 옥탄트의 최대 크기가 작을수록 경로가 더 매끄 럽습니다. Face to Face 게임 에서이 기사 를 확인하십시오 . A *는 경로 최적화 (시선 바로 가기와 같은) 및 조향 동작과 결합되어 있으므로 사용하기 좋습니다! 경로 노드에 octree를 사용하는 예는 아래 이미지를 참조하십시오.


이것이 더 큰지도로 어떻게 확장됩니까? 각 차원에서 두 배나 큰 맵이있는 경우 노드 수의 8 배가 필요하므로 문제가 될 수 있습니다.
DeadMG

반드시 그런 것은 아닙니다. 검색이 가까워 질 때까지 노드 크기를 크게 유지할 수 있습니다. 이를 통해 관심이없는 노드를 상당히 크고 적은 수로 유지할 수 있습니다.
MichaelHouse

빈 공간 탐색 메시의 좋은 특성은 여행 비용 평등입니다. A * JPS를 사용할 수 있습니다.
Will

@ Will : 나는 약간의 인터넷 검색을했지만 실제로 나온 길 찾기 알고리즘을 이해하지 못했습니다. 답변을 게시 하시겠습니까?
DeadMG

@DeadMG 이것은 확실한 설명입니다 : harablog.wordpress.com/2011/09/07/jump-point-search <br/> A *를 구현할 수 있다면 JPS를 매우 간단하게 개조 할 수 있습니다. A *를 먼저 수행하고 JPS를 최적화로 추가하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.