▶ AI
- 3D 월드에서 AI가 맵을 돌아 다니게 하려면 Terrain / NavMesh / Navigation 정보가 필요하다.
ㄴ 맵에 3종 중 하나를 심는다.
◇ Terrain (Landscape)
- 캐릭터가 움직일 배경이 되는 자연환경을 생성하는 것.
◆ Navigation
- 사용 엔진에서 게임 오브젝트가 길을 찾을 때 사용한다.
ㄴ 라이트맵과 유사한 구조를 가진다.
ㄴ 미리 Bake를 진행하고 시작하기 때문에 길찾기 로직치고는 가볍다.
ㄴ 단, 맵의 크기가 커지거나 오브젝트가 많아지면 부하가 발생하기 시작한다.
◆ NavMesh
- Navigation Mesh의 줄임말
- 맵을 구성하는 3D 오브젝트의 Mesh 정보를 분석하여 추적 할 수 있는 영역과 장애물로 판단해 지나갈 수 있는 영역의 데이터를 미리 만들어 둔다.
- 이후 Bake 네비게이션 정보를 생성하고 생성된 정보를 바탕으로 객체가 움직인다.
- NavMesh 같은 경우에는 레벨 당 1개 / 2개 정도가 적당하다. -> 남발할 경우 최적화에 실패 가능성이 높다.
※ 다익스트라 / 에이스타 / JPS (Jump Point Search)...
▶ AI 로직을 구현하기 위한 객체(기능)
- 언리얼에서 지원하는 고급 AI 기능
1. Behavior Tree (행동 트리) : 동작
- 적 캐릭터의 의사 결정에 필요한 로직을 관리.
ㄴ 의사결정이라 함은 어떤 조건에 어떠한 액션을 취할 것인지?
ㄴ 커스텀 애니메이션 -> FSM (Finite State Machine)
2. AI Controller : 몸
- AI 컨트롤러는 캐릭터와 행동 트리를 연결하는 중간 역할을 한다.
ㄴ 행동 트리에서 만들어진 정보와 액션을 캐릭터에게 전달해 액션이 실제 발생하게 한다.
3. Black Board : 뇌
- 행동 트리에서 사용되는 모든 데이터를 담고 있는 컨테이너
◆ Pawn
- 액터의 서브 클래스로 폰 클래스는 플레이어나 AI가 제어 할 수 있는 모든 액터의 베이스 클래스라고 할 수 있다.
- 폰은 플레이어 또는 NPC 형태로 게임의 AI 제어를 받을 수 있다는 점이 액터랑 다른 점이다.
▶ 행동 트리 분기
ㆍ 분기 노드
1. 셀렉터
- 아래 쪽으로 연결된 모든 노드를 실행한다.
- 아래 쪽으로 연결된 노드들은 자식이라고 하며 "왼쪽->오른쪽으로 실행"이 된다.
★ 이 때 실행된 자식이 성공적으로 실행 됐다면 그곳에서 실행을 멈추고 다음 노드를 실행하지 않는다.
ㄴ 셀렉터가 3개의 자식을 갖고 있다고 했을 때 가장 오른쪽에 있는 세번재 노드가 실행되려면 첫번째 / 두번째 노드가 실행에 실패해야 한다.
2. 시퀀스
- 셀렉터와는 반대로 실행되며 모든 자식을 왼쪽 -> 오른쪽으로 실행
★ 하나의 자식이라도 실행에 실패하면 바로 실행을 멈추고 시퀀스를 중지
3. 테스크 노드 (액션)
- 테스크 노드는 시각적으로 행동의 결과를 의미
ㄴ 행동 트리에서 가장 아래쪽에 위치하며 행동의 결과를 의미하기 때문에 아래 쪽으로 더 이상 노드를 추가 할 수 없다.
'Unreal' 카테고리의 다른 글
Unreal C++ Script (0) | 2023.10.13 |
---|---|
Unreal 폰 감각 입히기 (0) | 2023.10.12 |
Unreal UI (0) | 2023.10.06 |
Unreal 타임라인, 프렉쳐, 보간 (0) | 2023.10.05 |
Unreal 트랜스폼 (0) | 2023.09.27 |