길 찾기에 정사각형 또는 육각형 격자가 더 낫습니까?


17

경로 찾기 알고리즘으로 검색 한 영역에 정사각형 또는 육각형 격자를 사용하는 것 사이에 중요한 차이점이 있습니까? 다시 말해, 정사각형 또는 육각형이 더 좋으며, 그렇다면 왜 그렇습니다.


4
Methinks 당신은 당신의 게임 플레이에 맞는 것을 사용해야합니다;)
Andrew Russell

답변:


19

정사각형 대 16 진 격자를 사용할지 여부를 결정하기위한 주요 고려 사항은 AI 구현이 쉽지 않아야합니다. 너비 우선 및 깊이 우선 검색 알고리즘은 그래프 종류에 관계없이 거의 동일합니다.

오히려 이것은 게임 디자이너가 고려해야 할 게임 플레이 문제입니다. 정사각형 그리드는 대중 시장에서 더 접근하기 쉬우 며 (16 진 보드는 "유쾌한"것처럼 보임), 위 / 아래 / 왼쪽 / 오른쪽 컨트롤의 세계에서는 UI 관점에서 육각형보다 사각형을 탐색하는 것이 훨씬 더 직관적입니다. 정사각형 격자는 움직임을 조금 더 제한하는 경향이 있습니다. 직교 이동 (대각선이 아님)을 가정 할 때, 육각 격자에서 3 개의 이동에 비해 1 개의 사각형 장애물 주위를 이동하려면 4 개의 이동이 필요합니다. 프로그래밍 관점에서 헥스는 구현하기가 조금 더 쉽지만 정사각형 그리드가 2 차원 배열과 같지만 16 진수 그리드는 실제로 표준 데이터 구조에 매핑되지 않는 한 검색 알고리즘에 관한 것이 아닙니다.

정사각형 그리드의 단점은 움직임이 제대로 느껴지지 않는다는 것입니다. 대각선으로 움직이면 sqrt (2) 이동 지점이 필요하지만 실제로는 1 개의 움직임 (대각선을 걷는 것처럼 느리게 느끼고 직교하게 걷는 이유는 거의 없음)이거나 2 개의 움직임 (대각선 움직임이 너무 느리게 느껴짐)입니다 ). 16 진 격자를 사용하면 이동 거리가 훨씬 직관적입니다. 경로에 상관없이 항상 16 진에서 다른 16 진으로의 거리가 동일하기 때문입니다.


4
+1. 이것은 AI 결정이 아니라 디자인 결정입니다. 육각형 격자를 원한다면 www-cs-students.stanford.edu/~amitp/game-programming/grids/… 와 같은 오프셋 사각형 격자는 캐주얼 플레이어에게는 덜 위협적 일 수 있으며 수학적으로 육각형과 같습니다. 또한 편리한 인 메모리 표현이기도합니다.

2
문장의 +1 "
대형

Edwin은 그리드 기반 게임에서 무엇이 더 좋은지 묻지 않습니다. 그는 AI가 정사각형 또는 육각형을 사용하는 것이 더 좋은지 묻고 있습니다. 세계와 게임 플레이 자체는 AI가 검색하는 노드에만 제한 될 필요가 없습니다.
AttackingHobo

16 진수 및 정사각형 그리드로 턴 기반 전략 게임을 구현했으며 경로 찾기 복잡성 측면에서 필요한 차이는 전혀 없습니다. 심지어 하나의 게임을 16 진수 맵에서 정사각 맵으로 전환했으며 (렌더링과 별도로) 두 섹터 사이의 거리를 계산하는 MapLocation :: GetDistance () 메서드 만 변경했습니다. 나는 다른 모든 행이 약간 오프셋되는 것을 처리하기 위해 계산을 조정해야했습니다. 두 경우 모두 동일한 메모리 내 표현을 사용할 수 있습니다. 따라서 다른 사람들이 말했듯이 실제로 디자인 문제입니다.
Mike Strobel

4
헥스는 2 차원 배열에 매핑 될 수 있습니다. 정사각형 격자를 그린 다음 모든 짝수 열을 반씩 줄입니다. 이제 육각 격자와 동형 인 오프셋 사각형 격자가 생겼습니다.
Asmor

3

나는 AI 전문가가 아니지만 그 차이는 무시할 만하다. 정사각형 그리드는 조금 더 빠르지 만 (6 개 대신 노드 당 4 개 연결), 실제로 알고리즘 런타임의 제한 요소는 아닙니다. 사용하려는 알고리즘에 따라 코드를 계산하는 것이 조금 더 복잡하고 쿼드 트리 / 옥트리 바로 가기를 사용하는 것이 더 어렵 기 때문에 16 진 그리드의 경우 코드가 조금 더 복잡 할 수 있습니다. 길 찾기에서 자주 사용됩니다.

그러나 턴제 전략 게임 수준과 같은 단순한 세상의 경우 두 레이아웃의 차이는 중요하지 않습니다. 정사각형 그리드는 약간 더 간단하고 빠릅니다.


5
"정사각형 그리드가 조금 더 빠릅니다 (6 개 대신 노드 당 4 개 연결)"– 대각선을 따라 이동할 수없는 경우 (8 개 연결 대 6 개)
Ian Schreiber

터치 당신은 완전히 옳습니다; 물론 대각선 연결이 가능할 것입니다.
Gregory Avery-Weir

3

경로 계획과 관련하여 생각할 수있는 실질적인 차이점이 있습니다. 16 진수 셀의 중심에서 이웃 셀로의 이동은 항상 같은 거리이지만 대각선 이동을 허용하는 경우 사각형에는 적용되지 않습니다.


0

육각형에 대한이 안내서 는 훌륭합니다. 길 찾기에 대한 부분은 대화식 예제와 사각형 길 찾기를 해결하는 방법에 대한 정보를 제공합니다.

A * 또는 Dijkstra 알고리즘 또는 Floyd-Warshall과 같은 그래프 기반 경로 찾기를 사용하는 경우 16 진 격자에서의 경로 찾기는 사각형 격자에서의 경로 찾기와 다르지 않습니다.

  • 이웃. 경로 찾기 자습서에서 제공하는 샘플 코드는 graph.neighbors를 호출하여 위치의 이웃을 가져옵니다. 이를 위해 이웃 섹션의 기능을 사용하십시오. 통과 할 수없는 이웃을 걸러냅니다.
  • 휴리스틱 A *의 샘플 코드는 두 위치 사이의 거리를 제공하는 휴리스틱 함수를 사용합니다. 이동 비용에 맞게 조정 된 거리 공식을 사용하십시오. 예를 들어 이동 비용이 16 진수당 5이면 거리에 5를 곱하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.