dnjfs.log
로그인
dnjfs.log
로그인
언리얼 엔진5 Basic - 행동 트리 모델의 이해
타입
·
2024년 4월 25일
팔로우
0
UE5
언리얼
0
언리얼 강의
목록 보기
18/47
행동 트리 모델의 이해 (Behavior Tree)
행동 트리 모델 개요
행동 트리(Behavior Tree)의 역사
2004년 개발사 번지의 헤일로2에서 인공지능을 설계하는데 사용
우선순위와 트리 구조를 사용해 인공지능을 설계하는 기법
FSM이 가지고 있던 문제를 해결하는 새로운 게임 인공지능 모델의 수립
행동 트리 모델의 장점
모듈화가 잘 되어 있어 확장이 자유롭다.
트리를 기반으로 계층화가 잘 되어 있어, 복잡한 인공지능 모델을 쉽게 설계할 수 있다.
다이어그램으로 인공지능 모델을 효과적으로 표현할 수 있다.
제공되는 여러 편리한 부가 기능을 활용해 다양한 상황에 대해 손쉽게 제어할 수 있다.
행동 트리 모델의 구성 요소
트리에서 항상 왼쪽에 있는 노드에 우선 순위를 부여
시작 상태를 설정할 필요 없이 왼쪽에서부터
깊이 우선 탐색
을 시작
행동을 중심으로 설계
단 부모 노드에서 다수의 행동을 컨트롤
컴포짓 노드 (Composite Node)
Selector: 여러 행동 중 하나의 행동을 지정
Sequence: 여러 행동을 모두 수행
Parallel: 여러 행동을 함께 수행
행동에 대한 다양한 결과
Succeeded: 행동의 성공
Failed: 행동의 실패
Aborted: 외부 요인으로 인한 행동의 실패
InProgress: 행동 결과를 홀딩
컴포짓 노드마다 다른 행동 결과 처리
Selector - 성공한 노드가 나오면 종료
Sequence - 실패한 노드가 나올 때까지 진행
컴포짓 노드에 부착하는 다양한 추가 기능
Decorator: 컴포짓 노드가 실행되는 조건을 지정
Service: 컴포짓 노드가 활성화될 때 주기적으로 실행하는 부가 명령
Observer Aborts: 데코레이터 조건에 부합되면 컴포짓 내 활동을 모두 중단
행동 트리 모델의 구현 예시
전형적인 RPG 게임 플레이어에 대한 행동 트리 모델 예시
플레이어 캐릭터는 PlayerController로 조종, NPC는 AIController 빙의
Auto 자동 빙의
: 폰의 생성 및 AI 컨트롤러에 의한 빙의 시기 결정
AI 컨트롤러 클래스
: 폰이 AI에 의해 컨트롤될 때 기본으로 사용할 AIController 클래스
실습코드
https://github.com/dnjfs/ArenaBattle/commit/221e59c01810f1f32bc5edb775882b0ba72ab2e4
AIModule 추가
BehaviorTree와 BlackBoard와 같은 AI 기능을 사용하려면 uproject의 Modules에 "AIModule"을 추가해야함
BT 실행/중지
실행: AAIController::RunBehaviorTree(UBehaviorTree*)
중지: UBehaviorTreeComponent::StopTree()
타입
주니어 언리얼 프로그래머
팔로우
이전 포스트
언리얼 엔진5 Basic - 게임 데이터 관리
다음 포스트
언리얼 엔진5 Basic - 행동 트리 모델의 구현
0개의 댓글
댓글 작성