언리얼 엔진

UE5) 적, NPC 인공지능 시스템

zzugest1 2025. 5. 8. 00:33

게임을 제작할 때 플레이어 외 여러 몹들을 생성해 이들과 상호작용는 것을 목표로 제작할 수 있는데, 이 때 적이나 NPC들이 어떻게 행동할지 정해주는 인공지능(AI) 시스템을 언리얼 엔진의 비헤이비어 트리(Behavior Tree)로 제작할 수 있다. 

 

콘텐츠 드로어 우클릭 후 인공지능을 클릭하면 블랙보드와 비헤이비어 트리를 볼 수 있다. 먼저 블랙보드를 생성 후 보면

 

 

왼쪽에 블랙보드 키를 생성하는 칸과 키들의 디테일창이 있다. 여기서 생성된 키는 후에 설명할 비헤이비어 트리에서 사용된다.

 

그리고 비헤이비어 트리를 생성하면

 

 

위와 같이 맨 첫시작 노드 ROOT를 이용할 블랙보드에 연결해 블랙보드 안의 키들을 사용할 수 있고 하위 노드로 세개의 컴포짓 노드를 생성할 수 있다.  이는 각각 아래와 같다.

Selector : 하나라도 성공하면 성공

Sequence : 왼쪽 노드부터 순서대로 진행하는데 하나라도 실패하면 실패

Simple Parallel : 여러 노드 동시에 진행

 

적이 플레이어를 추격하는 것을 인공지능 시스템으로 간단하게 만들어 보면 

 

 

우선 블랙보드에 Player라는 키를 새로 생성(아래의 키는 여기선 사용x) 

 

그 다음 Player의 디테일창에서 키 타입 -> 베이스 클래스를 플레이어 캐릭터 클래스로 만들어준다. 

 

콘텐츠 드로어에서 AI Controller 블루플인트 클래스를 하나 생성해준다.

 

블루프린트 클래스에서 AI 검색

 

 

 

컴포넌트에 AI 인지 컴포넌트를 추가한다. 이 컴포넌트는 적이 AI를 통해 주변에 어떤 사물이 있는지 감지하게 하는 컴포넌트이다. 

 

그 다음 디테일창에 들어가

 

AI 퍼셉션을 위와 같이 설정해준다. 탐지 반경 등은 걸맞게 수정해줄 수 있다. 적 탐지를 클릭해 플레이어를 탐지할 수 있게 한다.

 

 

디테일 창의 이벤트 부분의 타깃 퍼셉션 업데이트 시를 추가해준다.

 

 

AI 컨트롤러 블루프린트의 이벤트 그래프를 위와 같이 만들어 준다. 이벤트 시작 시 Us BlackBoard와 Run Behavior Tree는 이전에 만든 블랙보드와 비헤이비어 트리 에셋을 선택해 이를 사용하겠다는 뜻이다.

 

타깃 퍼셉션 업데이트 시 우리가 만든 블랙보드에서 Player키를 AI가 감지한 대상에게 키를 부여(Set Value as object)한다는 뜻이다. 즉 적이 나를 감지한다면 나를 Player키에 부여한다는 뜻이다. 이렇게 AI 컨트롤러를 생성을 했다면 이를 적에게 부여하면 된다.

 

이 때 Set Value as object함수의 Key Name을 변수로 승격 후 이 변수를 Player로 명명했지만 컴파일 후 기본값을 Player로 해야 한다. 이 변수의 기본값이 블랙보드의 키와 철자가 틀리면 블랙보드 키에 값을 할당할 수 없다. 

 

AI를 이용하고자 하는 적 클래스의 디테일 창에 

 

 

AI 컨트롤러 클래스를 이전에 만든 AI 컨트롤러 클래스로 선택해준다.

 

마지막으로 블랙보드에 들어가

 

 

Root 아래 Selector노드를 만든 후 Selector노드에서 아래로 드래그하면 컴포짓 노드 외 테스크 노드도 볼 수 있다. 테스크 노드는 AI가 수행할 가장 기본적인 행동들이 있다. 여기서 Move to를 선택해 AI를 움직이게 만들 수 있다.

 

 

Move to의 디테일창에 들어가 블랙보드 키를 Player로 바꿔준다. 그럼 블랙보드의 Player의 키에 해당하는 대상을 향해 움직인다는 뜻이다. 여기서 Player는 AI 컨트롤러 클래스에서 플레이어를 지정해주었기 때문에 플레이어를 추격할 것이다. 허용 가능 반경내에 들어오면 AI는 추격을 멈춘다.

 

 

 

 

 

 

이렇게 허용 반경 범위까지 추적 후 반경 내에 들어오면 추격을 멈추는 것을 볼 수 있다. 

 

블랙보드에서 키는 오브젝트 타입이 아닌 여러 타입들이 있고 이를 활용해 AI의 여러 행동들을 만들어낼 수 있다.