Programming game ai

Post on 26-May-2015

1118 Views

Category:

Documents

8 Downloads

Preview:

Click to see full reader

Transcript

Programming Game AIby Example

8. 실질적인 길 계획하기

아키텍트를 꿈꾸는 사람들 (http://cafe.naver.com/architect1)최기원 (dagri82@gmail.com)

1. 내비게이션 그래프 구축2. Raven 내비게이션 그래프3. 노드 경로 VS 에지 경로4. 경로 계획자5. 경로 부드럽게 하기6. 최적화7. 난처한 상황에서 빠져 나오기

1. 내비게이션 그래프 구축2. Raven 내비게이션 그래프3. 노드 경로 VS 에지 경로4. 경로 계획자5. 경로 부드럽게 하기6. 최적화7. 난처한 상황에서 빠져 나오기

타일 기반 그래프• 셀 , 사각형 , 육각형• RTS 에서 많이 사용• 노드 : 각 타일의 중심• 에지 : 인접한 타일과의 연결• 지형의 특성에 따라 각 에지에 비용 부여• 단점 : 탐색 공간이 쉽게 커짐

– 예 ) 100x100 셀 맵의 경우 , 10,000 개의 노드와 약 78,000 개의 에지로 구성 + 수십 ~ 수백게의 AI 유닛

가시점 (PoV) 내비게이션 그래프• 수작업으로 주요 지점에 노드 배치• 각 노드는 적어도 하나의 다른 노드에 시선을 갖도록• 특정 정보를 제공하는 노드 추가 용이• 큰 맵의 경우 각 노드 위치 조정이 어려움• 임의의 맵 생성이 어려움

– 자동으로 POV 그래프 생성하기 위한 알고리즘 / 툴 필요 무작위 맵 생성 방법을 제공하지 않는 게임들 존재– 확장 지형 기술로 해결

가시점 내비게이션 그래프

확장 지형 (expanded geome-try)

• 다각형으로 구축된 지형을 에이전트의 반경만큼 확장• 확장 지형의 꼭지점을 노드로 그래프에 추가• 각 꼭지점 사이의 시선 시험 에지 추가

NavMesh• 3D FPS 게임에서 활용• 볼록 (convex) 다각형으로 맵 구성

1. 내비게이션 그래프 구축2. Raven 내비게이션 그래프3. 노드 경로 VS 에지 경로4. 경로 계획자5. 경로 부드럽게 하기6. 최적화7. 난처한 상황에서 빠져 나오기

정교하게 과립화된 (Finely Grained) 그래프• 잘못된 경로 및 접근 할 수 없는 문제들 해결• 자동으로 노드 생성 , 밀물 채우기 알고리즘 (flood fill algorithm)

밀물 채우기 알고리즘 (flood fill algorithm)

Raven 내비게이션 그래프• 접근 질의의 속도를 향상시키기 위해서 공간

분할 사용하기– 노드 검색 성능 : 노드의 수가 2 배가 되면 시간은

4 배로– 셀 공간 분리 , BSP 트리 , quad 트리와 같은

공간 분할 사용

1. 내비게이션 그래프 구축2. Raven 내비게이션 그래프3. 노드 경로 VS 에지 경로4. 경로 계획자5. 경로 부드럽게 하기6. 최적화7. 난처한 상황에서 빠져 나오기

Bot 의 행동에 관한 정보 저장노드 경로 vs 에지 경로

c

f

h

B

g

d

e

A

Bot 의 행동에 관한 정보 저장노드 경로 vs 에지 경로

c

f

h

B

g

d

e

A

Bot 의 행동에 관한 정보 저장노드 경로 vs 에지 경로

c

f

h

B

g

d

e

A

1. 내비게이션 그래프 구축2. Raven 내비게이션 그래프3. 노드 경로 VS 에지 경로4. 경로 계획자5. 경로 부드럽게 하기6. 최적화7. 난처한 상황에서 빠져 나오기

Raven 경로 계획자• Raven_PathPlanner

• 필요한 기능– 특정 위치까지의 경로 계획– 다수의 목표 중 가장 가까운 경로 계획

BotPathPlan-

ner

특정 위치까지의 경로 계획

다수의 목표 중 가장 가까운 경로 계획

다수의 목표 중 가장 가까운 경로 계획

1. 내비게이션 그래프 구축2. Raven 내비게이션 그래프3. 노드 경로 VS 에지 경로4. 경로 계획자5. 경로 부드럽게 하기6. 최적화7. 난처한 상황에서 빠져 나오기

경로 부드럽게 하기

경로 부드럽게 하기

경로 부드럽게 하기

A

B

C

A

B

CA

B

C

AC

A 에서 C 의 경로에 방해하는 장애물이 없으므로 두 에지는 하나로 교체될 수 있다 .

경로 상에 장애물이 있으므로 두 에지 모두 필요하다 .

시작끝

E1

E2

시작끝

E1

E2

시작끝

E1

E2

시작끝

E1

E2

끝시작

E1

E2

끝시작

E1

E2

시작끝

E1

E2

시작끝

E1

E2

시작끝

1. 내비게이션 그래프 구축2. Raven 내비게이션 그래프3. 노드 경로 VS 에지 경로4. 경로 계획자5. 경로 부드럽게 하기6. 최적화7. 난처한 상황에서 빠져 나오기

최적화 ,경로 계산

최적화 ,비용 계산

시간별 경로 계획• Dijkstra, A* 알고리즘을 한꺼번에 수행하지 않고

여러 단계에 걸쳐서 수행

계층적 경로 찾기

1. 내비게이션 그래프 구축2. Raven 내비게이션 그래프3. 노드 경로 VS 에지 경로4. 경로 계획자5. 경로 부드럽게 하기6. 최적화7. 난처한 상황에서 빠져 나오기

난처한 상황에서 빠져 나오기

난처한 상황에서 빠져 나오기• 해결 방법– 매 갱신 단계마다 현재 경유점 까지의 거리 계산• 거리가 같거나 지속적으로 증가한다면 다시 계획

– 각 경유점에 대한 예상 도착 시간 계산• 예상 시간을 초과하면 다시 계획

top related