2장 상태구도형 에이전트의 디자인

53
게게게게게게 게 2 게 게게게게게 게게게게게 게게게 게게게

Upload: -

Post on 29-May-2015

1.076 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: 2장 상태구도형 에이전트의 디자인

게임인공지능

제 2 장 상태구동형 에이전트의 디자인

김홍준

Page 2: 2장 상태구도형 에이전트의 디자인

유한상태기계• 유한상태기계 (finite state machine, FSM)

– 빠르고 코딩하기가 쉽다– 오류수정이 용이하다– 계산 부담이 없다– 직관적이다– 유연성이 있다

Page 3: 2장 상태구도형 에이전트의 디자인

switch, if-else

Page 4: 2장 상태구도형 에이전트의 디자인

유한상태기계 : 상태전환표• State transition table

• 에이전트가 상태전환표를 정기적으로 질의하여 상태 전환• 테이블은 에이전트 외부에 존재• 명확하과 유연한 구조 : 기본 코드 + 상태전환표

Page 5: 2장 상태구도형 에이전트의 디자인

유한상태기계 : 내장된 규칙들• 상태들 자신의 내부에 상태 전환을 위한 규칙을 내장

Page 6: 2장 상태구도형 에이전트의 디자인

유한상태기계 : 내장된 규칙들

Page 7: 2장 상태구도형 에이전트의 디자인

West World 프로젝트

Page 8: 2장 상태구도형 에이전트의 디자인

West World 프로젝트

Page 9: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• BaseGameEnti

ty 클래스– 모든

거주자들을 위한 기초 클래스

Page 10: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• Miner 클래스

– BaseGameEntity 클래스로부터 파생– 속성 : 건강 , 피곤함의 정도 , 위치

Page 11: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• Miner 상태들

주머니가 꽉참

Page 12: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• 상태 디자인 패턴

– 기본적인 State 클래스

Page 13: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• Miner 의 ChangeState

Page 14: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• 광부 Bob 의 상태기계 구현을 위한 UML 클래스 도표

Page 15: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• EnterMineAndDigForNugget

Page 16: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• EnterMineAndDigForNugget::Enter

Page 17: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• EnterMineAndDigForNugget::Execute

Page 18: 2장 상태구도형 에이전트의 디자인

West World 프로젝트• EnterMineAndDigForNugget::Exit

Page 19: 2장 상태구도형 에이전트의 디자인

상태 기본 클래스 재사용

Page 20: 2장 상태구도형 에이전트의 디자인

전역 상태 및 상태 블립

Page 21: 2장 상태구도형 에이전트의 디자인

상태기계 클래스

Page 22: 2장 상태구도형 에이전트의 디자인

상태기계 클래스

Page 23: 2장 상태구도형 에이전트의 디자인

상태기계 클래스

Page 24: 2장 상태구도형 에이전트의 디자인

상태기계 클래스

Page 25: 2장 상태구도형 에이전트의 디자인

개선된 Miner 클래스

Page 26: 2장 상태구도형 에이전트의 디자인

개선된 Miner 클래스

Page 27: 2장 상태구도형 에이전트의 디자인

갱신된 디자인

Page 28: 2장 상태구도형 에이전트의 디자인

Elsa 소개하기 : WestWorldWithWoman

Page 29: 2장 상태구도형 에이전트의 디자인

Elsa 소개하기 : WestWorldWithWoman

Page 30: 2장 상태구도형 에이전트의 디자인

Elsa 소개하기 : WestWorldWithWoman

Page 31: 2장 상태구도형 에이전트의 디자인

메시지 처리• 잘 디자인된 게임 : 이벤트 대응 (event-driven) 형• 이벤트 : 사용자 입력 , 외부 요인 , 내부 요인…

– 각 이벤트에 적절하게 대응하도록 관계되는 모든 객체에 전달

• 이벤트 핸들링 : 각 객체는 관심 있는 이벤트가 올 때만 처리• 전달 방법 : 데이터 패킷 형태 ( 타임 스탬프 등의 정보 포함 )

Page 32: 2장 상태구도형 에이전트의 디자인

메시지 처리 : 전보 구조

Page 33: 2장 상태구도형 에이전트의 디자인

메시지 처리 : 광부 Bob 과 Elsa의 통신

Page 34: 2장 상태구도형 에이전트의 디자인

메시지 급송 및 관리 : EntityManager

• EntityManager: 에이전트를 가리키는 포인터와 ID 관리

Page 35: 2장 상태구도형 에이전트의 디자인

메시지 급송 및 관리 : EntityManager

Page 36: 2장 상태구도형 에이전트의 디자인

메시지 급송 및 관리 : EntityManager

• Entity 생성 및 등록

• Entity 의 포인터 검색

Page 37: 2장 상태구도형 에이전트의 디자인

메시지 급송 및 관리 : MessageDispatcher

Page 38: 2장 상태구도형 에이전트의 디자인

메시지 급송 및 관리 : MessageDispatcher

Page 39: 2장 상태구도형 에이전트의 디자인

메시지 급송 및 관리 : MessageDispatcher

Page 40: 2장 상태구도형 에이전트의 디자인

메시지 급송 및 관리 : DispatchDelayedMessage

Page 41: 2장 상태구도형 에이전트의 디자인

메시지 처리하기 : BaseGameEntity 수정

Page 42: 2장 상태구도형 에이전트의 디자인

메시지 처리하기 : State 수정

Page 43: 2장 상태구도형 에이전트의 디자인

메시지 처리하기 : StateMachine 수정

Page 44: 2장 상태구도형 에이전트의 디자인

메시지 처리하기 : Miner 수정

Page 45: 2장 상태구도형 에이전트의 디자인

메시지 처리하기 : 새로운 클래스 구조

Page 46: 2장 상태구도형 에이전트의 디자인

Elsa 는 저녁을 준비한다 .

Page 47: 2장 상태구도형 에이전트의 디자인

Elsa 는 저녁을 준비한다 : 첫 번째 단계

Page 48: 2장 상태구도형 에이전트의 디자인

Elsa 는 저녁을 준비한다 : 두 번째 단계

Page 49: 2장 상태구도형 에이전트의 디자인

Elsa 는 저녁을 준비한다 : 세 번째 단계

Page 50: 2장 상태구도형 에이전트의 디자인

Elsa 는 저녁을 준비한다 : 네 번째 단계

Page 51: 2장 상태구도형 에이전트의 디자인

Elsa 는 저녁을 준비한다 : 네 번째 단계

Page 52: 2장 상태구도형 에이전트의 디자인

Elsa 는 저녁을 준비한다 : 다섯 번째 단계

Page 53: 2장 상태구도형 에이전트의 디자인

Elsa 는 저녁을 준비한다 : 결과