다른 이동 유형을 처리하는 경로 찾기 알고리즘이 있습니까?


12

BattleTech 보드 게임 시뮬레이터 봇을 개발 중입니다 ( http://en.wikipedia.org/wiki/BattleTech ).

보드는 육각형으로 나뉘며 각 지형 유형과 고도가 다릅니다. 다른 로봇을 파괴하기 위해 로봇을 움직입니다.

Dijkstra와 A * 경로 찾기 알고리즘 만 알고 있지만 문제는 3 가지 유형의 움직임이 있습니다. 여러 육각형을 걷거나 뛰고 점프하는 것입니다 (각각 고유 한 규칙이 있음). 걷기와 달리기는 거의 같습니다.

가장 좋은 경로는 조합 또는 각 이동 유형일 수 있습니다. 다음은 맵 http://megamek.info/sites/default/files/isometric_view.png 의 예입니다 .

이 복잡한 길 찾기에 적합한 알고리즘이나 각 운동 유형에 대해 A * 결과를 결합하는 방법을 알고 있습니까?


나는 종종 A * (가중치가 그 경로 / 사각형의 비용 임)로 가중 경로를 영리하게 조작하여 처리한다고 생각합니다. 예를 들어, 점프가 바람직하다면, 걷기 (예를 들어 10)보다 무게가 더 작아진다 (예를 들어 5).
ashes999

세 가지 유형의 운동이 정확히 어떻게 다른가요? 그것들을 결합 할 수 있습니까 (타일 A로 걸어 간 다음 B로 달려가 같은 차례에 C로 뛰어 넘을 수 있습니까)? 그렇다면, 플레이어 A가 타일 A에서 타일 B로가는 가장 저렴한 방법을 항상 사용하지 못하게하는 규칙은 무엇입니까?
Philipp

@Philipp A *를 사용할 때 가능합니다. 모든 이동 유형과 함께 이동할 수있는 모든 타일을 열린 목록에 추가 한 다음 각 타일의 가격 + 더 나은 추론을 기반으로 한 추론을 기반으로 할 수 있습니다.
akaltar

@Philipp 아니오, 매 턴마다 한 가지 유형의 이동 만 사용할 수 있습니다.
alexvisio

걷기 : 높이 차이가 거의없이 육각형을 따라 움직입니다. 실행 : 동일하지만 멀리 갈 수는 있지만 열을 발생시키고 정확도를 잃을 수 있습니다 (항상 최고는 아닙니다). 점프 : 당신은 그들 주위를 걷는 대신 장애물 (벽이나 강)을 뛰어 넘을 수 있습니다.
alexvisio

답변:


10

Dijkstra와 A *는 모두 한 타일에서 다른 타일로 가장자리 (= 연결)에 다른 비용을 추가 할 수 있습니다. 또한 두 노드 (= 타일)를 둘 이상의 에지로 연결할 수 있으며 각 노드는 서로 다른 비용으로 연결됩니다.

대체 점프 모드는 점프 거리에서 각 타일에서 각 타일로의 대체 직접 에지가 있음을 의미합니다. 그러나 기계 장치가 한 턴에 걷거나 뛸 수 있기 때문에이 엣지를 사용하는 데 드는 비용은 전체 턴의 이동 포인트와이 턴이 이미 이동 한 경우 현재 턴의 나머지 포인트가됩니다.

귀하의 설명에 따르면, 걷기 대 달리기 결정은 경로 선택과 관련하여 많은 차이를 만들지 않지만 오히려 결정적인 전략적 결정으로 보입니다. 배우는 달리기를하지 않고 현재 차례에 목적지에 도달 할 때 걸을 수 있습니다. 그러나 그렇지 않으면 다음과 같이 고려해야 할 많은 요소가 있습니다.

  • 현재 열 수준과 식기 전에 전투에 참여할 가능성
  • 이번 라운드에서 발사해야 할 샷의 난이도
  • 목적지에 빨리 도달하는 것이 얼마나 전략적으로 중요한가

이 결정을 내리기위한 엄격한 규칙은 없습니다. 최선의 방법은 휴리스틱 방식을 사용하는 것입니다. 모든 상황에 양수 또는 음수 값을 지정하고 합산 한 다음 결과가 양수인지 음수인지 확인하십시오.

길 찾기에는 고려해야 할 또 다른 요소가 있습니다. 어떤 조건에서는 특정 위치에서 턴이 끝나는 것을 피하는 것이 좋습니다. 위험 지역에있을 때, 3 턴을 사용하여 A에서 B로 갈 수 있지만 각 커버를 끝내는 것이 2 개를 사용하는 것보다 낫지 만 각 끝에 노출되는 것이 좋습니다. 아니면 아닐 수도 있습니다. 상황과 정확한 게임 메커니즘에 따라 다릅니다. 이는 휴리스틱을 기반으로 결정해야하는 전략적 결정입니다. AI를 이동시키지 못하도록 위험한 타일을 켜는 가장자리에 추가 비용을 추가하여이를 나타낼 수 있습니다.

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