2장 상태구도형 에이전트의 디자인
TRANSCRIPT
게임인공지능
제 2 장 상태구동형 에이전트의 디자인
김홍준
유한상태기계• 유한상태기계 (finite state machine, FSM)
– 빠르고 코딩하기가 쉽다– 오류수정이 용이하다– 계산 부담이 없다– 직관적이다– 유연성이 있다
switch, if-else
유한상태기계 : 상태전환표• State transition table
• 에이전트가 상태전환표를 정기적으로 질의하여 상태 전환• 테이블은 에이전트 외부에 존재• 명확하과 유연한 구조 : 기본 코드 + 상태전환표
유한상태기계 : 내장된 규칙들• 상태들 자신의 내부에 상태 전환을 위한 규칙을 내장
유한상태기계 : 내장된 규칙들
West World 프로젝트
West World 프로젝트
West World 프로젝트• BaseGameEnti
ty 클래스– 모든
거주자들을 위한 기초 클래스
West World 프로젝트• Miner 클래스
– BaseGameEntity 클래스로부터 파생– 속성 : 건강 , 피곤함의 정도 , 위치
West World 프로젝트• Miner 상태들
주머니가 꽉참
West World 프로젝트• 상태 디자인 패턴
– 기본적인 State 클래스
West World 프로젝트• Miner 의 ChangeState
West World 프로젝트• 광부 Bob 의 상태기계 구현을 위한 UML 클래스 도표
West World 프로젝트• EnterMineAndDigForNugget
West World 프로젝트• EnterMineAndDigForNugget::Enter
West World 프로젝트• EnterMineAndDigForNugget::Execute
West World 프로젝트• EnterMineAndDigForNugget::Exit
상태 기본 클래스 재사용
전역 상태 및 상태 블립
상태기계 클래스
상태기계 클래스
상태기계 클래스
상태기계 클래스
개선된 Miner 클래스
개선된 Miner 클래스
갱신된 디자인
Elsa 소개하기 : WestWorldWithWoman
Elsa 소개하기 : WestWorldWithWoman
Elsa 소개하기 : WestWorldWithWoman
메시지 처리• 잘 디자인된 게임 : 이벤트 대응 (event-driven) 형• 이벤트 : 사용자 입력 , 외부 요인 , 내부 요인…
– 각 이벤트에 적절하게 대응하도록 관계되는 모든 객체에 전달
• 이벤트 핸들링 : 각 객체는 관심 있는 이벤트가 올 때만 처리• 전달 방법 : 데이터 패킷 형태 ( 타임 스탬프 등의 정보 포함 )
메시지 처리 : 전보 구조
메시지 처리 : 광부 Bob 과 Elsa의 통신
메시지 급송 및 관리 : EntityManager
• EntityManager: 에이전트를 가리키는 포인터와 ID 관리
메시지 급송 및 관리 : EntityManager
메시지 급송 및 관리 : EntityManager
• Entity 생성 및 등록
• Entity 의 포인터 검색
메시지 급송 및 관리 : MessageDispatcher
메시지 급송 및 관리 : MessageDispatcher
메시지 급송 및 관리 : MessageDispatcher
메시지 급송 및 관리 : DispatchDelayedMessage
메시지 처리하기 : BaseGameEntity 수정
메시지 처리하기 : State 수정
메시지 처리하기 : StateMachine 수정
메시지 처리하기 : Miner 수정
메시지 처리하기 : 새로운 클래스 구조
Elsa 는 저녁을 준비한다 .
Elsa 는 저녁을 준비한다 : 첫 번째 단계
Elsa 는 저녁을 준비한다 : 두 번째 단계
Elsa 는 저녁을 준비한다 : 세 번째 단계
Elsa 는 저녁을 준비한다 : 네 번째 단계
Elsa 는 저녁을 준비한다 : 네 번째 단계
Elsa 는 저녁을 준비한다 : 다섯 번째 단계
Elsa 는 저녁을 준비한다 : 결과