Unreal

Unreal AI

로만주 2023. 10. 10. 23:51

▶ 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