게임과 같은 워크래프트 3에서 장애물로 길 찾기


10

타일 ​​기반지도에서 A * 검색을 고려하십시오. 간단한 코드는 다음과 같습니다. 해당 셀 안에 장치가 있으면 연결할 수 없습니다.

그러나지도 해상도 문제가 있습니다. Warcraft 3를 살펴보면, 몬스터와 구조물의 반경이 다르며, 벡터와 비슷한 거리에 있습니다. 어떻게 구현 되었습니까?

또한 Warcraft 3와 같은 이동 경로 충돌 감지와 경로 찾기 알고리즘을 통합하는 표준 솔루션은 무엇입니까?


"벡터 기반"이란 무엇입니까?
jcora

답변:


7

WC3 개발자들이 어떤 종류의 접근 방식을 사용했는지는 확실치 않지만 계층 적 주석 A *와 매우 비슷합니다. WC3Editor에 정의 된 단위 반경은 3D 모델 스케일링에 그대로 사용되었지만 경로 찾기에 대한 실제 단위 크기는 불 연속적입니다 (예 : unitSize = (int) (unitRadius / 10)). 벡터 기반이 아니 었습니다.

고해상도 노드 그리드를 만드는 많은 경로 노드가 있다고 가정 해 봅시다. 구울과 같은 간단한 단위의 크기는 2이므로 그리드에 배치하려면 서로 가까운 4 개의 자유 경로 노드가 필요합니다. 데스 나이트 영웅은 3 개의 크기로 약간 더 커서 9 개의 경로 노드를 사용합니다. 이제 우리는 2 개의 지글 라트를 함께 배치하여 그 사이에 2 개의 노드 전체 공간을 남겨두고 구울과 죽음의 기사를 다른쪽에 보냅니다. 구울은 두 개의 지 그라우트 사이를 통과 할 수 있지만 죽음의 기사는 움직여야합니다. 어떻게 확인할 수 있습니까?

노드가 특정 크기의 단위를 수용 할 수 있는지 확인하기 위해 최대 허용 단위 크기를 정의하는 각 노드에 특별한 여유 값을 할당합시다. 기본적으로 이는 노드에 대한 여러 바운딩 검사가 이루어졌으며 가능한 가장 큰 범위는 노드의 클리어런스로 기억됩니다. 따라서 우리는 어떤 노드에 데스 나이트를 배치하고 싶을 때 노드의 클리어런스를 데스 나이트의 크기와 비교하는 것만 큼 간단합니다. 물론, 노드를 놓고 경쟁하기 위해 여러 유닛이있을 때 상황이 훨씬 더 복잡해 지겠지만 이는 또 다른 이야기입니다.

자세한 내용은이 기사를 확인하십시오.

http://harablog.wordpress.com/2009/01/29/clearance-based-pathfinding/


4

테셀레이션을 사용하여 경로 영역 AKA 내비게이션 메시를 만듭니다. 이 기사 는 개념을 전체 다이어그램으로 설명합니다.

경로 찾기 방식으로 A *를 계속 유지할 수 있지만 네트워크는 더 이상 그리드 (4 연결 그래프)가 아니라 다각형 영역 간의 임의 연결을 나타내는 그래프입니다. 따라서 알고리즘을 맞게 조정해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.