SlideShare a Scribd company logo
1 of 51
Download to read offline
행동 트리로
구현하는
인공지능
개발 3본부 김용하
발표자 소개
컴공 학부 졸업
대학원 인공 신경망 전공
샤이닝 로어 초기 AI [판타그램]
마비노기 초기 AI
기타 AI 코딩 경험 다수
미니맥스 알고리듬만 쓰면
AI가 나오는 줄 알았던 10년 전 사진
발표 순서
1. 종래 AI 구조의 문제
2. 그래서 나온 BT
3. BT 구현 요소
4. BT 구현 이슈
일반적인 AI 구조를
먼저 살펴 봅니다
WORLD
SENSOR ACTOR
Perception Animation
MEMORY
DECISION
LOGIC
AI
일반적인 AI
•센서를 통해 주변을 인지
•메모리에 타겟이나 제반 정보를 기록
•디시젼 로직에서 상황을 판단하고
일련의 커맨드를 실행
•캐릭터 액션을 수행
WORLD
SENSOR ACTOR
Perception Animation
MEMORY
DECISION
LOGIC
AI
FSM : Finite State Machine (유한 상태 기계)
오토마타 시간에 졸면서 배운 그 FSM
이거 왜 쓰는가?
책에 나오니까
다들 쓰고 있다고 하니까
디시젼 로직 With FSM
IDLE COMBAT
RETREAT
적 발견
퇴치
못당하겠다
사생결단도주 성공
대부분 이런 형태로 시작
어떻게 더 구체화 할 것인가
여기서 문제가 발생 !
State를 나누기가
Transition을 리와이어링 하기가
IDLE COMBAT
RETREAT
적 발견
퇴치
못당하겠다
사생결단도주 성공
오마이갓 -_-
매우 곤란
일반적인 해결책 #1 @ 한국
여기서부터는 하드 코딩 !
각 State, 각 Transition을
여러 가지 패턴으로 하드 코딩
패턴을 조합하는 식으로 AI 로직 구현
새로운 움직임이 필요하면 해당 패턴을 다시 하드 코딩
IDLE COMBAT
RETREAT
적 발견
퇴치
못당하겠다
사생결단도주 성공
ex) IDLE_SLIME, IDLE_ORC, COMBAT_REACTIVE, …
ex) ORC = IDLE_ORC + COMBAT_AGGRESSIVE + RETREAT_NEVER
일반적인 해결책 #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은 아님
일반적인 해결책 #2 @ 한국
이정도면 되지 않나요?
네. RPG 자코캐릭터 AI 만드는 데는 충분합니다
그러나..
보스몹의 다양한 패턴
생활하는 NPC
미리 정의된 스테이트 안에 갇혀 버림. 확장이 제한됨
이런 것은 구현하기 힘듭니다
일반적인 해결책 #3 @ 서양
PvE가 컨텐츠의 거의 전부인 콘솔에서는
온라인 게임보다 AI가 훨씬 중요한 요소
훨씬 복잡한 환경 요소
NPC가 생활도 하고 성장도 하고…
FABLE 2
SPORE
그래서 결국… ?
일반적인 해결책 #3 @ 서양
HFSM : Hierarchical Finite State Machines
적 발견
퇴치
못당하겠다
사생결단도주 성공
패트롤
HIDE SHOOT
RELOAD
보다 다양한 AI를 만들 수 있으나
유지 보수 코스트는 여전히 높다
Brute-Force 하게 나누는 대신
State를 적절히 모듈화해나감
State 모듈의 재활용
그래서 나온 것이 BT (Behavior Tree)
BT 개요
•사실은 HFSM을 보다 일반화한 것
– 계층적으로 State를
나누어가는데 집중
– 나누다보니 굳이 State가
아니라도 되게 되었음
– 트리 탐색형
명령 체계로 일반화됨
HALO 2 BT
melee
shoot
grenade
uncover
pursue
cover
sleep
fight
search
hide
idle
root
BT 개요
•구조적인 장점
– 단순한 하부 구조
(그래프 <> 트리) 구현 코스트도 적다
– Divide & Conquer 로
작업을 쪼개기 쉬움
– 모듈 재활용이 용이,
읽기도 쉽고, 유지 보수가 간편…
melee
shoot
grenade
uncover
pursue
cover
sleep
fight
search
hide
idle
root
HALO 2 BT
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가 완전히 새로운 개념은 아니고
기존의 방법론을 일반화, 체계화한 것
Final Fantasy XII
Gambit System
MASK
ORDER CONDITOIN ACTION
Carnage Heart
UCC AI 게임
분기도 있고
센서/액션 커맨드도 다양
개념적으로
BT와 상당히 유사하다
동작 동영상
BT 구체적인 동작을 알아봅시다
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
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
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 !
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
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 할 수 없음)
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를 가로채는 방식
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 됨
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
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계속 평가
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 노드를 계속 수행
트리를 매 프레임 다 탐색?
Decider에 Pre-Condition을 두어 탐색을 가속
Time Check
DecisionFlag
Decide Function
매 00초 마다만 검사
Enable/Disable Mask
Alex’s BT
•Alex J. Champandard
RockStar 개발자 출신, AiGameDev 운영자
요즘 BT 제일 열심히 선전하고 있는 사람
•이 아저씨 모델은 Halo BT 1.5 보다 좀 더
BT를 일반화한 것
•매우 심플해서 바닥부터 구현할 때 용이
기본적으로 트리 탐색
patrol investigate attack
look aroundmove bite
재귀적으로 태스크를 분해
Halo BT와의 차이
Leaf는 Condition 혹은 Action
Condition도 Leaf node임
Condition
Action
액터 상태, 이벤트 체크
충돌 등등..
소리를 내거나
애니메이션을 틀거나…
Halo BT와의 차이
Parent Node는
Sequence 혹은 Selector
계속 진행
Fail 종료
Sequence
Child가 Success이면
순서 대로 진행
모두 S면 결과도 S
Halo BT와의 차이
Parent Node는
Sequence 혹은 Selector
Selector
Child가 Fail이면
순서 대로 진행
하나라도 S면 결과도 S
Success 종료
계속 시도
트리 탐색 과정의 예 Halo에서는 Decide에 따라
탐색할지 말지 결정되지만
여기서는 Leaf 까지
내려가서 조건을 판단
Alex 모델의 장점
•구현이 간단
S / F 의 리턴 값과 Tick만으로 구성된
기본 Node, Seq / Sel (compositor) 클래스만으로
AI 기반이 완성! (반나절이면 된다!)
•Decider와 Behavior가 전혀 다른
Halo 모델에 비해, 컨디션을 분해하기 용이
Alex 모델의 부가적인 패턴들
기능이 추가된 Seq / Sel
- 랜덤 Seq / Sel
Decorator
- 자식을 건드리지 않고
기능을 추가
Wait 멍!멍!
Timer 최대 n초간
Loop 여러번
Wrapper
Fail 무시
BT 구현시 이슈
직접 사용해 보니…
AI 작업의 리팩토링이 용이
•Tree의 노드로 분해하면 됨
SEQ
공격 상태이거나
타게팅할 적이 근처에 있으면
적을 타게팅하고
적에게 접근해서 공격
Condition Action
SEQ
공격 상태이면
타겟이 공격 범위
안에 있으면
SEQ
공격
SEL
타겟에 접근
AI 작업의 리팩토링이 용이
•SubTree나 Node를 재사용 가능
공격 상태이면
타겟이 공격 범위
안에 있으면
SEQ
공격
SEL
타겟에 접근
타겟이 공격 범위
안에 있으면
SEQ
공격
SubTree를 모듈 처럼 사용할 수 있다
코드 리뷰나 수정이 용이
•로직이 코드에 그대로 드러남
그 밖의 장점
•BT 구조를 그대로 플래닝에 활용할 수 있음
– Pre-Evaluation 펑션을 만들어
트리 탐색 / 결과 예측해볼 수 있음
•비쥬얼 툴 제작이 용이
Brainiac Designer 2.1
그 밖에 주의할 점
•BT 노드의 탐색 순서가 행동에 영향을 미친다
•BT 노드는 서로간에 의존성이 없어야 한다
•BT 노드는 Blackboard나 게임 옵젝트에서
정보를 얻어 와야 함
ex) <공격> 노드는 타겟 정보를
<타게팅> 노드에서 전달 받는 것이 아니라
게임 옵젝트의 ‘현재 타겟’ 값을 읽어와 처리
그 밖에 주의할 점
•FSM과 BT는 구조적인 방향성이 다르다
– FSM : ‘상태’를 정의하고 이벤트에 따라 다른 상태로 바뀌
는 과정을 구조화
– BT : AI가 달성할 소정의 목표를 정의하고 이것들을 서브
태스크로 나누어 운용
그 밖에 주의할 점
•BT에서의 이벤트 처리는 FSM과 다르다
– FSM 처럼 다른 상태로 ‘점프’ 하는 것 보다는
– 현재 노드로부터 발생한 상황을 처리하는 서브트리로 분
기해서 작업을 처리하는 쪽으로 작업
– 다른 브랜치의 서브 트리를 복사해와서 써도 무방!
Ex) 회피중에 공격을 받는 경우
•FSM : 회피 State에서 다른 State로 전이해서 처리…
•BT : [공격 받은 경우]를 처리하는 서브 트리를 회피 밑에 복사
해서 회피중 피격 상황에 대한 세부 처리…
결론 : 이제 FSM은 잊어버리고 BT로 가자!
•State를 고민하지 않아도
빠르게 동작을 구현해볼 수 있다
(State 비슷한 것이 필요하다면 나중에 묶어서 만들면 됨)
•코드를 다시 봐도 읽을 수 있다
•코드 리팩토링과 모듈화가 용이하다
•확장성이 높음
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/
Q & A

More Related Content

What's hot

GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자TonyCms
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기강 민우
 
[NDC 2014] 모에론
[NDC 2014] 모에론[NDC 2014] 모에론
[NDC 2014] 모에론Yongha Kim
 
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계Imseong Kang
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013영욱 오
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들MinGeun Park
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법강 민우
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬KyeongWon Koo
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
Recast Detour.pptx
Recast Detour.pptxRecast Detour.pptx
Recast Detour.pptxMUUMUMUMU
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxTonyCms
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템QooJuice
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템Chaeone Son
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건강 민우
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .YEONG-CHEON YOU
 

What's hot (20)

GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
 
[NDC 2014] 모에론
[NDC 2014] 모에론[NDC 2014] 모에론
[NDC 2014] 모에론
 
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
Recast Detour.pptx
Recast Detour.pptxRecast Detour.pptx
Recast Detour.pptx
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 

Viewers also liked

게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴예림 임
 
An Actor Model in Go
An Actor Model in GoAn Actor Model in Go
An Actor Model in GoWeaveworks
 
김병관 성공캠프 SNS팀 자원봉사 후기
김병관 성공캠프 SNS팀 자원봉사 후기김병관 성공캠프 SNS팀 자원봉사 후기
김병관 성공캠프 SNS팀 자원봉사 후기Harns (Nak-Hyoung) Kim
 
Deep learning as_WaveExtractor
Deep learning as_WaveExtractorDeep learning as_WaveExtractor
Deep learning as_WaveExtractor동윤 이
 
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Esun Kim
 
Luigi presentation NYC Data Science
Luigi presentation NYC Data ScienceLuigi presentation NYC Data Science
Luigi presentation NYC Data ScienceErik Bernhardsson
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Heungsub Lee
 
Custom fabric shader for unreal engine 4
Custom fabric shader for unreal engine 4Custom fabric shader for unreal engine 4
Custom fabric shader for unreal engine 4동석 김
 
게임회사 취업을 위한 현실적인 전략 3가지
게임회사 취업을 위한 현실적인 전략 3가지게임회사 취업을 위한 현실적인 전략 3가지
게임회사 취업을 위한 현실적인 전략 3가지Harns (Nak-Hyoung) Kim
 
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임Imseong Kang
 
Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발Chris Ohk
 
Developing Success in Mobile with Unreal Engine 4 | David Stelzer
Developing Success in Mobile with Unreal Engine 4 | David StelzerDeveloping Success in Mobile with Unreal Engine 4 | David Stelzer
Developing Success in Mobile with Unreal Engine 4 | David StelzerJessica Tams
 
NDC16 스매싱더배틀 1년간의 개발일지
NDC16 스매싱더배틀 1년간의 개발일지NDC16 스매싱더배틀 1년간의 개발일지
NDC16 스매싱더배틀 1년간의 개발일지Daehoon Han
 
Approximate nearest neighbor methods and vector models – NYC ML meetup
Approximate nearest neighbor methods and vector models – NYC ML meetupApproximate nearest neighbor methods and vector models – NYC ML meetup
Approximate nearest neighbor methods and vector models – NYC ML meetupErik Bernhardsson
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
8년동안 테라에서 배운 8가지 교훈
8년동안 테라에서 배운 8가지 교훈8년동안 테라에서 배운 8가지 교훈
8년동안 테라에서 배운 8가지 교훈Harns (Nak-Hyoung) Kim
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012Esun Kim
 
영상 데이터의 처리와 정보의 추출
영상 데이터의 처리와 정보의 추출영상 데이터의 처리와 정보의 추출
영상 데이터의 처리와 정보의 추출동윤 이
 
Behavior Tree in Unreal engine 4
Behavior Tree in Unreal engine 4Behavior Tree in Unreal engine 4
Behavior Tree in Unreal engine 4Huey Park
 

Viewers also liked (20)

게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
 
An Actor Model in Go
An Actor Model in GoAn Actor Model in Go
An Actor Model in Go
 
김병관 성공캠프 SNS팀 자원봉사 후기
김병관 성공캠프 SNS팀 자원봉사 후기김병관 성공캠프 SNS팀 자원봉사 후기
김병관 성공캠프 SNS팀 자원봉사 후기
 
Deep learning as_WaveExtractor
Deep learning as_WaveExtractorDeep learning as_WaveExtractor
Deep learning as_WaveExtractor
 
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)
 
Luigi presentation NYC Data Science
Luigi presentation NYC Data ScienceLuigi presentation NYC Data Science
Luigi presentation NYC Data Science
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러
 
Custom fabric shader for unreal engine 4
Custom fabric shader for unreal engine 4Custom fabric shader for unreal engine 4
Custom fabric shader for unreal engine 4
 
게임회사 취업을 위한 현실적인 전략 3가지
게임회사 취업을 위한 현실적인 전략 3가지게임회사 취업을 위한 현실적인 전략 3가지
게임회사 취업을 위한 현실적인 전략 3가지
 
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
NDC17 게임 디자이너 커리어 포스트모템: 8년, 3개의 회사, 4개의 게임
 
Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발Re:Zero부터 시작하지 않는 오픈소스 개발
Re:Zero부터 시작하지 않는 오픈소스 개발
 
Developing Success in Mobile with Unreal Engine 4 | David Stelzer
Developing Success in Mobile with Unreal Engine 4 | David StelzerDeveloping Success in Mobile with Unreal Engine 4 | David Stelzer
Developing Success in Mobile with Unreal Engine 4 | David Stelzer
 
NDC16 스매싱더배틀 1년간의 개발일지
NDC16 스매싱더배틀 1년간의 개발일지NDC16 스매싱더배틀 1년간의 개발일지
NDC16 스매싱더배틀 1년간의 개발일지
 
Docker
DockerDocker
Docker
 
Approximate nearest neighbor methods and vector models – NYC ML meetup
Approximate nearest neighbor methods and vector models – NYC ML meetupApproximate nearest neighbor methods and vector models – NYC ML meetup
Approximate nearest neighbor methods and vector models – NYC ML meetup
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
8년동안 테라에서 배운 8가지 교훈
8년동안 테라에서 배운 8가지 교훈8년동안 테라에서 배운 8가지 교훈
8년동안 테라에서 배운 8가지 교훈
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
 
영상 데이터의 처리와 정보의 추출
영상 데이터의 처리와 정보의 추출영상 데이터의 처리와 정보의 추출
영상 데이터의 처리와 정보의 추출
 
Behavior Tree in Unreal engine 4
Behavior Tree in Unreal engine 4Behavior Tree in Unreal engine 4
Behavior Tree in Unreal engine 4
 

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

레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례기룡 남
 
FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기Jongwon Kim
 
게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소Seungmo Koo
 
[Gpg2권 박민근] 3.3 마이크로 스레드를 통한 ai 관리
[Gpg2권 박민근] 3.3 마이크로 스레드를 통한 ai 관리[Gpg2권 박민근] 3.3 마이크로 스레드를 통한 ai 관리
[Gpg2권 박민근] 3.3 마이크로 스레드를 통한 ai 관리MinGeun Park
 
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점Jubok Kim
 
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)Kwang-Hyun Park
 
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지영준 박
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰Jubok Kim
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서영준 박
 
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017devCAT Studio, NEXON
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트kgun86
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법YoungSu Son
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규ChangKyu Song
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰승민 백
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 정주 김
 
[Gpg1권 박민근] 1.0 1.4 요약 정리
[Gpg1권 박민근] 1.0 1.4 요약 정리[Gpg1권 박민근] 1.0 1.4 요약 정리
[Gpg1권 박민근] 1.0 1.4 요약 정리MinGeun Park
 
(임시) Career2012
(임시) Career2012(임시) Career2012
(임시) Career2012영준 박
 
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012devCAT Studio, NEXON
 
Game programming patterns
Game programming patternsGame programming patterns
Game programming patternsQooJuice
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 YoungSu Son
 

Similar to [NDC 2009] 행동 트리로 구현하는 인공지능 (20)

레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례
 
FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기
 
게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소
 
[Gpg2권 박민근] 3.3 마이크로 스레드를 통한 ai 관리
[Gpg2권 박민근] 3.3 마이크로 스레드를 통한 ai 관리[Gpg2권 박민근] 3.3 마이크로 스레드를 통한 ai 관리
[Gpg2권 박민근] 3.3 마이크로 스레드를 통한 ai 관리
 
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
 
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)KERIS SW교육 연계 로봇 활용 심화과정 (중등)
KERIS SW교육 연계 로봇 활용 심화과정 (중등)
 
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
 
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
 
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
이희영, 온라인 게임에서 모바일 게임으로 이어지는 메타플레이 트렌드, NDC2017
 
행동 기반 게임오브젝트
행동 기반 게임오브젝트행동 기반 게임오브젝트
행동 기반 게임오브젝트
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
[NDC_16] 캐릭터 한 달에 하나씩 업데이트 하기 : '최강의 군단' 스킬 개발 툴 포스트 모템과 차기작 '건파이트 맨션' 툴 프리뷰
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
 
[Gpg1권 박민근] 1.0 1.4 요약 정리
[Gpg1권 박민근] 1.0 1.4 요약 정리[Gpg1권 박민근] 1.0 1.4 요약 정리
[Gpg1권 박민근] 1.0 1.4 요약 정리
 
(임시) Career2012
(임시) Career2012(임시) Career2012
(임시) Career2012
 
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
 
Game programming patterns
Game programming patternsGame programming patterns
Game programming patterns
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법
 

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

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