2011-01-16 6 views
1

타일 기반지도와 길 찾기를위한 A * 알고리즘을 특징으로하는 작은 게임 엔진을 작성했습니다. 그러나 2 개의 물체가 충돌하고 중간 지점을 막을 때 나는 문제가있다. 그들은 반대 방향에서 오는 것이므로 더 이상 움직일 수 없으며 결코 다음 웨이 포인트에 도달하지 못합니다. 나는 이동에 모든 타일을 신고, 움직이는 객체 주위의 경로를 계산하는 방법

  • 그냥 다음 무료 웨이 포인트의 경로를 계산 차단 된 타일을 신고 경로를 다시 계산 다른 이동 물체와 충돌 할 수없는

    • 이동 객체와 같은 몇 가지 가능한 솔루션을 생각 차단 된 객체

    나는 엔진과 같은 액션 게임이 아니라면, 첫 번째 가능성을 정말로 원하지 않는다. 마지막 두 가지 가능성은지도 상에 많은 이동 가능한 물체가있는 경우 매우 느려질 수 있습니다. 내가 어떻게해야한다고 생각합니까? 그런데 첫 번째 가능성은 "Stronghold"에서 구현되며, 다른 두 가지 전략은 새로운 전략 게임에서 찾을 수 있습니다.

  • +0

    스택 오버플로에 대한 주제가 아직 남아 있기 때문에 질문하지 않는 한 강제로 마이그레이션하지는 않지만 [게임 개발] (http : //gamedev.stackexchange) 사이트가 있음을 지적하고 싶습니다. .com /) 질문에만 해당됩니다. 매우 활발한 사이트이므로 질문을 거기로 옮길 수도 있습니다. –

    답변

    1

    이 물론 단 하나의 정답은 없다,하지만 난 비슷한 문제로 한 일을 공유 할 수는 :

    나는 통과하는이 시점에서 오래된 학교를 보이는 것에 동의합니다. 그러나 객체가 탐색 메쉬보다 작 으면 실제로 경로를 무효화하지 않고 경계 상자로 충돌 회피를 수행 할 수 있습니다. 큰 경로에 비해 충돌 회피를 작고 로컬하게 만듭니다.

    게임에서 작동하지 않는 경우 일반적으로 블록을 추가하는 것이 가장 좋습니다. 경로 찾기 비용이 염려되는 경우 충돌이 발생할 때까지 기다렸다가 임시로 "블록"을 추가하고 경로를 다시 지정할 수 있습니다. 또 다른 방법은 블록과 경로를 주기적으로 삽입하는 것입니다. 이것은 자연스럽게 보이는 경로를 제공 할 수 있으며, "움직이기 전에 서로 뛰놀다"는 것을 피할 수 있습니다.

    비용은 A * 알고리즘에 따라 크게 달라집니다. 알고리즘이 결과를 캐시하지 않으면 블록에 증분 비용이 없으므로 A *를 가능한 한 자주 실행할 수 있습니다. 예를 들면, A *를 한 번 실행하고 A * 작업의 대기열을 유지합니다.

    알고리즘에서 결과를 캐시하는 경우 블록을 이동하기 전에 여러 해결 방법을 사용하도록 A * 계산을 그룹화 해보십시오.

    관련 문제