Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

148

Share

Download to read offline

[NDC 2009] 행동 트리로 구현하는 인공지능

Download to read offline

[NDC 2009 발표 자료]
AI를 행동 트리로 구현할 때의 장점, 행동 트리의 동작 방식, 구현시 유의할 점을 개괄적으로 설명

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

[NDC 2009] 행동 트리로 구현하는 인공지능

  1. 1. 행동 트리로 구현하는 인공지능 개발 3본부 김용하
  2. 2. 발표자 소개 컴공 학부 졸업 대학원 인공 신경망 전공 샤이닝 로어 초기 AI [판타그램] 마비노기 초기 AI 기타 AI 코딩 경험 다수 미니맥스 알고리듬만 쓰면 AI가 나오는 줄 알았던 10년 전 사진
  3. 3. 발표 순서 1. 종래 AI 구조의 문제 2. 그래서 나온 BT 3. BT 구현 요소 4. BT 구현 이슈
  4. 4. 일반적인 AI 구조를 먼저 살펴 봅니다
  5. 5. WORLD SENSOR ACTOR Perception Animation MEMORY DECISION LOGIC AI
  6. 6. 일반적인 AI •센서를 통해 주변을 인지 •메모리에 타겟이나 제반 정보를 기록 •디시젼 로직에서 상황을 판단하고 일련의 커맨드를 실행 •캐릭터 액션을 수행 WORLD SENSOR ACTOR Perception Animation MEMORY DECISION LOGIC AI
  7. 7. FSM : Finite State Machine (유한 상태 기계) 오토마타 시간에 졸면서 배운 그 FSM 이거 왜 쓰는가? 책에 나오니까 다들 쓰고 있다고 하니까
  8. 8. 디시젼 로직 With FSM IDLE COMBAT RETREAT 적 발견 퇴치 못당하겠다 사생결단도주 성공 대부분 이런 형태로 시작
  9. 9. 어떻게 더 구체화 할 것인가 여기서 문제가 발생 ! State를 나누기가 Transition을 리와이어링 하기가 IDLE COMBAT RETREAT 적 발견 퇴치 못당하겠다 사생결단도주 성공 오마이갓 -_- 매우 곤란
  10. 10. 일반적인 해결책 #1 @ 한국 여기서부터는 하드 코딩 ! 각 State, 각 Transition을 여러 가지 패턴으로 하드 코딩 패턴을 조합하는 식으로 AI 로직 구현 새로운 움직임이 필요하면 해당 패턴을 다시 하드 코딩 IDLE COMBAT RETREAT 적 발견 퇴치 못당하겠다 사생결단도주 성공 ex) IDLE_SLIME, IDLE_ORC, COMBAT_REACTIVE, … ex) ORC = IDLE_ORC + COMBAT_AGGRESSIVE + RETREAT_NEVER
  11. 11. 일반적인 해결책 #2 @ 한국 스테이트 커맨드 부분을 모듈화 & 스크립트나 XML로 조합 기본적인 플로우 컨트롤 좀 더 코드 재활용도가 높음 Ex) [IDLE] LOOP WAIT 10~20 sec PATROL LOOP_END [ATTACK1] TARGET near APPROACH ATTACK melee WAIT 10 sec [ATTACK2] TARGET ranged APPROACH USE_SKILL A WAIT 20 sec [STRATEGY] … IF RANGED ATTACK2 ELSE ATTACK1 이것도 더 이상 FSM은 아님
  12. 12. 일반적인 해결책 #2 @ 한국 이정도면 되지 않나요? 네. RPG 자코캐릭터 AI 만드는 데는 충분합니다 그러나.. 보스몹의 다양한 패턴 생활하는 NPC 미리 정의된 스테이트 안에 갇혀 버림. 확장이 제한됨 이런 것은 구현하기 힘듭니다
  13. 13. 일반적인 해결책 #3 @ 서양 PvE가 컨텐츠의 거의 전부인 콘솔에서는 온라인 게임보다 AI가 훨씬 중요한 요소 훨씬 복잡한 환경 요소 NPC가 생활도 하고 성장도 하고… FABLE 2 SPORE 그래서 결국… ?
  14. 14. 일반적인 해결책 #3 @ 서양 HFSM : Hierarchical Finite State Machines 적 발견 퇴치 못당하겠다 사생결단도주 성공 패트롤 HIDE SHOOT RELOAD 보다 다양한 AI를 만들 수 있으나 유지 보수 코스트는 여전히 높다 Brute-Force 하게 나누는 대신 State를 적절히 모듈화해나감 State 모듈의 재활용
  15. 15. 그래서 나온 것이 BT (Behavior Tree)
  16. 16. BT 개요 •사실은 HFSM을 보다 일반화한 것 – 계층적으로 State를 나누어가는데 집중 – 나누다보니 굳이 State가 아니라도 되게 되었음 – 트리 탐색형 명령 체계로 일반화됨 HALO 2 BT melee shoot grenade uncover pursue cover sleep fight search hide idle root
  17. 17. BT 개요 •구조적인 장점 – 단순한 하부 구조 (그래프 <> 트리) 구현 코스트도 적다 – Divide & Conquer 로 작업을 쪼개기 쉬움 – 모듈 재활용이 용이, 읽기도 쉽고, 유지 보수가 간편… melee shoot grenade uncover pursue cover sleep fight search hide idle root HALO 2 BT
  18. 18. BT 개요 •최근 가장 HOT 한 AI 트렌드 – HALO 2 대성공 이후 – SPORE, GTA 등에서 Adapt – 기존의 HFSM에서 BT로 이전해가는 추세 melee shoot grenade uncover pursue cover sleep fight search hide idle root HALO 2 BT 하지만 BT가 완전히 새로운 개념은 아니고 기존의 방법론을 일반화, 체계화한 것
  19. 19. Final Fantasy XII Gambit System MASK ORDER CONDITOIN ACTION
  20. 20. Carnage Heart UCC AI 게임 분기도 있고 센서/액션 커맨드도 다양 개념적으로 BT와 상당히 유사하다 동작 동영상
  21. 21. BT 구체적인 동작을 알아봅시다
  22. 22. Decider 기반 BT(HALO BT 1.5) •보다 HFSM에 가까운 형태 •Spore에서 사용 •Decider 부분이 FSM과 유사 – 일종의 State Set •Behavior는 개별 액션 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE DECIDER BEHAVIOR
  23. 23. Decider 탐색 매 틱마다 순서에 따라 Decider Function을 재평가 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE Activated Evaluation
  24. 24. Decider 탐색 Priority가 앞선 Decide Function이 Accept 되면 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE Activated Evaluation Accepted !
  25. 25. Decider 탐색 Activate되었던 기존 노드를 클리어 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE Activated Evaluation Accepted ! HALT
  26. 26. Decider 탐색 …한 뒤, Child를 탐색 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE Activated Evaluation Accepted ! Parent Decide는 Child Decide의 부분집합 (Parent가 Accept하고 Child가 Reject 할 수 없음)
  27. 27. Decider 탐색 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE Activated Evaluation Accepted ! State 사이에 Transition이 이뤄지는 FSM과 달리 우선 순위에 따라 State를 가로채는 방식
  28. 28. Decider 탐색 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE Activated Evaluation Accepted ! Accepted ! Accept 된 노드들이 연쇄적으로 Activate 됨
  29. 29. Decider 탐색 Reject 되면 다음 Decide function계속 평가 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE Activated Evaluation
  30. 30. Decider 탐색 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE Activated Evaluation Reject 되면 다음 Decide function계속 평가
  31. 31. Decider 탐색 ROOT FLEE GUARD FIGHT EAT IDLE YELL_FOR_HELP FIGHT PATROL REST FIND_FOOD EAT_FOOD PLAY REST FLIP ROLL DANCE Activated Evaluation 이미 Activate 상태인 노드는 평가하지 않고 Leaf 노드를 계속 수행
  32. 32. 트리를 매 프레임 다 탐색? Decider에 Pre-Condition을 두어 탐색을 가속 Time Check DecisionFlag Decide Function 매 00초 마다만 검사 Enable/Disable Mask
  33. 33. Alex’s BT •Alex J. Champandard RockStar 개발자 출신, AiGameDev 운영자 요즘 BT 제일 열심히 선전하고 있는 사람 •이 아저씨 모델은 Halo BT 1.5 보다 좀 더 BT를 일반화한 것 •매우 심플해서 바닥부터 구현할 때 용이
  34. 34. 기본적으로 트리 탐색 patrol investigate attack look aroundmove bite 재귀적으로 태스크를 분해
  35. 35. Halo BT와의 차이 Leaf는 Condition 혹은 Action Condition도 Leaf node임 Condition Action 액터 상태, 이벤트 체크 충돌 등등.. 소리를 내거나 애니메이션을 틀거나…
  36. 36. Halo BT와의 차이 Parent Node는 Sequence 혹은 Selector 계속 진행 Fail 종료 Sequence Child가 Success이면 순서 대로 진행 모두 S면 결과도 S
  37. 37. Halo BT와의 차이 Parent Node는 Sequence 혹은 Selector Selector Child가 Fail이면 순서 대로 진행 하나라도 S면 결과도 S Success 종료 계속 시도
  38. 38. 트리 탐색 과정의 예 Halo에서는 Decide에 따라 탐색할지 말지 결정되지만 여기서는 Leaf 까지 내려가서 조건을 판단
  39. 39. Alex 모델의 장점 •구현이 간단 S / F 의 리턴 값과 Tick만으로 구성된 기본 Node, Seq / Sel (compositor) 클래스만으로 AI 기반이 완성! (반나절이면 된다!) •Decider와 Behavior가 전혀 다른 Halo 모델에 비해, 컨디션을 분해하기 용이
  40. 40. Alex 모델의 부가적인 패턴들 기능이 추가된 Seq / Sel - 랜덤 Seq / Sel Decorator - 자식을 건드리지 않고 기능을 추가 Wait 멍!멍! Timer 최대 n초간 Loop 여러번 Wrapper Fail 무시
  41. 41. BT 구현시 이슈 직접 사용해 보니…
  42. 42. AI 작업의 리팩토링이 용이 •Tree의 노드로 분해하면 됨 SEQ 공격 상태이거나 타게팅할 적이 근처에 있으면 적을 타게팅하고 적에게 접근해서 공격 Condition Action SEQ 공격 상태이면 타겟이 공격 범위 안에 있으면 SEQ 공격 SEL 타겟에 접근
  43. 43. AI 작업의 리팩토링이 용이 •SubTree나 Node를 재사용 가능 공격 상태이면 타겟이 공격 범위 안에 있으면 SEQ 공격 SEL 타겟에 접근 타겟이 공격 범위 안에 있으면 SEQ 공격 SubTree를 모듈 처럼 사용할 수 있다
  44. 44. 코드 리뷰나 수정이 용이 •로직이 코드에 그대로 드러남
  45. 45. 그 밖의 장점 •BT 구조를 그대로 플래닝에 활용할 수 있음 – Pre-Evaluation 펑션을 만들어 트리 탐색 / 결과 예측해볼 수 있음 •비쥬얼 툴 제작이 용이 Brainiac Designer 2.1
  46. 46. 그 밖에 주의할 점 •BT 노드의 탐색 순서가 행동에 영향을 미친다 •BT 노드는 서로간에 의존성이 없어야 한다 •BT 노드는 Blackboard나 게임 옵젝트에서 정보를 얻어 와야 함 ex) <공격> 노드는 타겟 정보를 <타게팅> 노드에서 전달 받는 것이 아니라 게임 옵젝트의 ‘현재 타겟’ 값을 읽어와 처리
  47. 47. 그 밖에 주의할 점 •FSM과 BT는 구조적인 방향성이 다르다 – FSM : ‘상태’를 정의하고 이벤트에 따라 다른 상태로 바뀌 는 과정을 구조화 – BT : AI가 달성할 소정의 목표를 정의하고 이것들을 서브 태스크로 나누어 운용
  48. 48. 그 밖에 주의할 점 •BT에서의 이벤트 처리는 FSM과 다르다 – FSM 처럼 다른 상태로 ‘점프’ 하는 것 보다는 – 현재 노드로부터 발생한 상황을 처리하는 서브트리로 분 기해서 작업을 처리하는 쪽으로 작업 – 다른 브랜치의 서브 트리를 복사해와서 써도 무방! Ex) 회피중에 공격을 받는 경우 •FSM : 회피 State에서 다른 State로 전이해서 처리… •BT : [공격 받은 경우]를 처리하는 서브 트리를 회피 밑에 복사 해서 회피중 피격 상황에 대한 세부 처리…
  49. 49. 결론 : 이제 FSM은 잊어버리고 BT로 가자! •State를 고민하지 않아도 빠르게 동작을 구현해볼 수 있다 (State 비슷한 것이 필요하다면 나중에 묶어서 만들면 됨) •코드를 다시 봐도 읽을 수 있다 •코드 리팩토링과 모듈화가 용이하다 •확장성이 높음
  50. 50. References Spore Behavior Tree Docs, Chris Hecker http://chrishecker.com/My_Liner_Notes_for_Spore Handling Complexity in the Halo 2 AI, Damian Isla http://www.gamasutra.com/gdc2005/features/20050311/isla_01.shtml GAME::AI++ (Source Code) http://aigamedev.com/premium/releases/gameai-06/ AIGameDev - Behavior Tree Related Articles http://aigamedev.com/
  51. 51. Q & A
  • ssuser86bd39

    Feb. 6, 2021
  • AuraAura16

    Oct. 28, 2020
  • Bangkibeom

    Aug. 31, 2020
  • castlespike

    May. 20, 2020
  • JaeminLee65

    Mar. 18, 2020
  • HyochoonPark

    Dec. 22, 2019
  • paxvobis1

    Dec. 11, 2019
  • KimDeokBae

    Aug. 11, 2019
  • lsh1208

    Jun. 27, 2019
  • jerrypoiu

    Apr. 1, 2019
  • hanlgun

    Jan. 14, 2019
  • JINHYUNGAHN3

    Jan. 6, 2019
  • choongheemoon

    Dec. 31, 2018
  • youngdokee5

    Dec. 31, 2018
  • SunghwanCho8

    Nov. 8, 2018
  • ssuser6a5009

    Aug. 17, 2018
  • unseopkim77

    Jun. 1, 2018
  • ssuser93938a

    May. 12, 2018
  • cowabung

    Apr. 29, 2018
  • Voyageyoon

    Apr. 20, 2018

[NDC 2009 발표 자료] AI를 행동 트리로 구현할 때의 장점, 행동 트리의 동작 방식, 구현시 유의할 점을 개괄적으로 설명

Views

Total views

25,199

On Slideshare

0

From embeds

0

Number of embeds

1,149

Actions

Downloads

424

Shares

0

Comments

0

Likes

148

×