Programming game ai

1,207
-1

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,207
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Programming game ai

  1. 1. Programming Game AIby Example<br />8. 실질적인 길 계획하기<br />아키텍트를 꿈꾸는 사람들(http://cafe.naver.com/architect1)<br />최기원 (dagri82@gmail.com)<br />
  2. 2. 내비게이션 그래프 구축<br />Raven 내비게이션 그래프<br />노드 경로 VS 에지 경로<br />경로 계획자<br />경로 부드럽게 하기<br />최적화<br />난처한 상황에서 빠져 나오기<br />
  3. 3. 내비게이션 그래프 구축<br />Raven 내비게이션 그래프<br />노드 경로 VS 에지 경로<br />경로 계획자<br />경로 부드럽게 하기<br />최적화<br />난처한 상황에서 빠져 나오기<br />
  4. 4. 타일 기반 그래프<br />셀, 사각형, 육각형<br />RTS에서 많이 사용<br />노드: 각 타일의 중심<br />에지: 인접한 타일과의 연결<br />지형의 특성에 따라 각 에지에 비용 부여<br />단점: 탐색 공간이 쉽게 커짐<br />예) 100x100 셀 맵의 경우, 10,000개의 노드와 약 78,000개의 에지로 구성 + 수십 ~ 수백게의 AI 유닛<br />
  5. 5. 가시점(PoV) 내비게이션 그래프<br />수작업으로 주요 지점에 노드 배치<br />각 노드는 적어도 하나의 다른 노드에 시선을 갖도록<br />특정 정보를 제공하는 노드 추가 용이<br />큰 맵의 경우 각 노드 위치 조정이 어려움<br />임의의 맵 생성이 어려움<br />자동으로 POV 그래프 생성하기 위한 알고리즘/툴 필요<br />  무작위 맵 생성 방법을 제공하지 않는 게임들존재<br />확장 지형기술로 해결<br />
  6. 6. 가시점 내비게이션 그래프<br />
  7. 7. 확장 지형 (expanded geometry)<br />다각형으로 구축된 지형을 에이전트의 반경만큼 확장<br />확장 지형의 꼭지점을 노드로 그래프에 추가<br />각 꼭지점 사이의 시선 시험  에지 추가<br />
  8. 8. NavMesh<br />3D FPS 게임에서 활용<br />볼록(convex) 다각형으로 맵 구성<br />
  9. 9. 내비게이션 그래프 구축<br />Raven 내비게이션 그래프<br />노드 경로 VS 에지 경로<br />경로 계획자<br />경로 부드럽게 하기<br />최적화<br />난처한 상황에서 빠져 나오기<br />
  10. 10. 정교하게 과립화된(Finely Grained) 그래프<br />잘못된 경로 및 접근 할 수 없는 문제들 해결<br />자동으로 노드 생성, 밀물 채우기 알고리즘(flood fill algorithm)<br />
  11. 11. 밀물 채우기 알고리즘(flood fill algorithm)<br />
  12. 12. Raven 내비게이션 그래프<br />접근 질의의 속도를 향상시키기 위해서 공간 분할 사용하기<br />노드 검색 성능: 노드의 수가 2배가 되면 시간은 4배로<br />셀 공간 분리, BSP 트리, quad 트리와 같은 공간 분할 사용<br />
  13. 13. 내비게이션 그래프 구축<br />Raven 내비게이션 그래프<br />노드 경로 VS 에지 경로<br />경로 계획자<br />경로 부드럽게 하기<br />최적화<br />난처한 상황에서 빠져 나오기<br />
  14. 14. Bot의 행동에 관한 정보 저장노드 경로 vs에지 경로<br />f<br />h<br />c<br />B<br />A<br />g<br />d<br />e<br />
  15. 15. Bot의 행동에 관한 정보 저장노드 경로 vs에지 경로<br />f<br />h<br />c<br />B<br />A<br />g<br />d<br />e<br />
  16. 16. Bot의 행동에 관한 정보 저장노드 경로 vs에지 경로<br />f<br />h<br />c<br />B<br />A<br />g<br />d<br />e<br />
  17. 17. 내비게이션 그래프 구축<br />Raven 내비게이션 그래프<br />노드 경로 VS 에지 경로<br />경로 계획자<br />경로 부드럽게 하기<br />최적화<br />난처한 상황에서 빠져 나오기<br />
  18. 18. Raven 경로 계획자<br />Raven_PathPlanner<br />필요한 기능<br />특정 위치까지의 경로 계획<br />다수의 목표 중 가장 가까운 경로 계획<br />Bot<br />PathPlanner<br />
  19. 19. 특정 위치까지의 경로 계획<br />
  20. 20. 다수의 목표 중 가장 가까운 경로 계획<br />
  21. 21.
  22. 22. 다수의 목표 중 가장 가까운 경로 계획<br />
  23. 23. 내비게이션 그래프 구축<br />Raven 내비게이션 그래프<br />노드 경로 VS 에지 경로<br />경로 계획자<br />경로 부드럽게 하기<br />최적화<br />난처한 상황에서 빠져 나오기<br />
  24. 24. 경로 부드럽게 하기<br />
  25. 25. 경로 부드럽게 하기<br />
  26. 26. 경로 부드럽게 하기<br />B<br />C<br />C<br />A<br />A<br />A에서 C의 경로에 방해하는 장애물이 없으므로 두 에지는 하나로 교체될 수 있다.<br />B<br />B<br />C<br />C<br />A<br />A<br />경로 상에 장애물이 있으므로 두 에지 모두 필요하다.<br />
  27. 27. E2<br />시작<br />E1<br />끝<br />
  28. 28. E2<br />시작<br />E1<br />끝<br />
  29. 29. E2<br />시작<br />E1<br />끝<br />
  30. 30. E2<br />시작<br />E1<br />끝<br />
  31. 31. 시작<br />끝<br />E2<br />E1<br />
  32. 32. 시작<br />끝<br />E2<br />E1<br />
  33. 33. 시작<br />끝<br />E1<br />E2<br />
  34. 34. 시작<br />끝<br />E1<br />E2<br />
  35. 35. 시작<br />끝<br />
  36. 36.
  37. 37. 내비게이션 그래프 구축<br />Raven 내비게이션 그래프<br />노드 경로 VS 에지 경로<br />경로 계획자<br />경로 부드럽게 하기<br />최적화<br />난처한 상황에서 빠져 나오기<br />
  38. 38. 최적화,경로 계산<br />
  39. 39. 최적화,비용 계산<br />
  40. 40. 시간별 경로 계획<br /><ul><li>Dijkstra, A* 알고리즘을 한꺼번에 수행하지 않고여러 단계에 걸쳐서 수행</li></li></ul><li>
  41. 41. 계층적 경로 찾기<br />
  42. 42. 내비게이션 그래프 구축<br />Raven 내비게이션 그래프<br />노드 경로 VS 에지 경로<br />경로 계획자<br />경로 부드럽게 하기<br />최적화<br />난처한 상황에서 빠져 나오기<br />
  43. 43. 난처한 상황에서 빠져 나오기<br />
  44. 44. 난처한 상황에서 빠져 나오기<br />해결 방법<br />매 갱신 단계마다 현재 경유점 까지의 거리 계산<br />거리가 같거나 지속적으로 증가한다면 다시 계획<br />각 경유점에 대한 예상 도착 시간 계산<br />예상 시간을 초과하면 다시 계획<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×