programming game ai

45
Programming Game AI by Example 8. 실실실실 실 실실실실 실실실실실 실실실 실실실 (http://cafe.naver.com/architect1 ) 실실실 ([email protected])

Upload: guest136767

Post on 26-May-2015

1.127 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Programming game ai

Programming Game AIby Example

8. 실질적인 길 계획하기

아키텍트를 꿈꾸는 사람들 (http://cafe.naver.com/architect1)최기원 ([email protected])

Page 2: Programming game ai

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

Page 3: Programming game ai

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

Page 4: Programming game ai

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

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

Page 5: Programming game ai

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

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

Page 6: Programming game ai

가시점 내비게이션 그래프

Page 7: Programming game ai

확장 지형 (expanded geome-try)

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

Page 8: Programming game ai

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

Page 9: Programming game ai

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

Page 10: Programming game ai

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

Page 11: Programming game ai

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

Page 12: Programming game ai

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

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

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

공간 분할 사용

Page 13: Programming game ai

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

Page 14: Programming game ai

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

c

f

h

B

g

d

e

A

Page 15: Programming game ai

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

c

f

h

B

g

d

e

A

Page 16: Programming game ai

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

c

f

h

B

g

d

e

A

Page 17: Programming game ai

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

Page 18: Programming game ai

Raven 경로 계획자• Raven_PathPlanner

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

BotPathPlan-

ner

Page 19: Programming game ai

특정 위치까지의 경로 계획

Page 20: Programming game ai

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

Page 21: Programming game ai
Page 22: Programming game ai

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

Page 23: Programming game ai

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

Page 24: Programming game ai

경로 부드럽게 하기

Page 25: Programming game ai

경로 부드럽게 하기

Page 26: Programming game ai

경로 부드럽게 하기

A

B

C

A

B

CA

B

C

AC

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

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

Page 27: Programming game ai

시작끝

E1

E2

Page 28: Programming game ai

시작끝

E1

E2

Page 29: Programming game ai

시작끝

E1

E2

Page 30: Programming game ai

시작끝

E1

E2

Page 31: Programming game ai

끝시작

E1

E2

Page 32: Programming game ai

끝시작

E1

E2

Page 33: Programming game ai

시작끝

E1

E2

Page 34: Programming game ai

시작끝

E1

E2

Page 35: Programming game ai

시작끝

Page 36: Programming game ai
Page 37: Programming game ai

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

Page 38: Programming game ai

최적화 ,경로 계산

Page 39: Programming game ai

최적화 ,비용 계산

Page 40: Programming game ai

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

여러 단계에 걸쳐서 수행

Page 41: Programming game ai
Page 42: Programming game ai

계층적 경로 찾기

Page 43: Programming game ai

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

Page 44: Programming game ai

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

Page 45: Programming game ai

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

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