초보자를 위한 언리얼 엔진 4 입문 : 6장 AI 사용하기

Jiyeon Jeong·2021년 7월 20일
0
post-thumbnail

본 챕터에서는 AI를 이용하여 술래잡기 게임을 구현한다.


준비

각종 게임 엔진에는 AI 기술이 적용되고 있다. 언리얼 엔진은 다른 게임 엔진과 비교했을 때 AI를 게임에 쉽게 적용할 수 있다는 장점이 존재한다.

1. 내비게이션 메시

앞서 언급한 챕터들에서 캐릭터를 움직이는 것은 플레이어였다. 하지만 AI는 당연히 수동이 아니다. 여기서 AI가 벽이나 경사를 자동으로 판단할 수 있게끔 내비게이션 메시 기능을 이용한다. 내비게이션 메시는 AI에 스테이지의 모양을 인식시키기 위해 스테이지 전체를 덮는 메시를 일컫는다. 그럼 AI는 내비게이션 메시를 이용해 얻은 정보를 바탕으로 최단 경로를 검색해 행동할 수 있다.

2. 액터 모빌리티

Actor에 내비게이션을 적용하려면 대상 액터가 스태틱 액터여야 한다.

  • Static Actor(정적 액터) : 이동하지 않는 액터
  • Movable Actor(동적 액터) : 모양을 바꾸거나 움직일 수 있는 액터
  • Stationary Actor : 움직이지 않는 빛에 적용, 주위를 효율적으로 비추는 액터

모빌리티는 빛에도 영향을 준다. 게임에서 레벨에 배치된 액터를 빛으로 비추려면 액터의 위치와 크기를 파악해야한다. 라이트맵이란 맵상에 있는 액터의 위치나 크기를 파악하기 위한 눈에 보이지 않는 막을 말한다. 빛은 이 라이트맵의 정보에 따라 어디에 어떤 액터가 배치되어 있는지 알 수 있다. 그리고 빛이 액터를 비추며 상태에 따라 그림자가 만들어 진다.


위의 그림을 확인해보면 연두색 부분이 내비게이션 메시가 적용된 범위임을 확인할 수 있다.

AI 기능 개요


AI 기능을 사용한 액터는 위와 같이 여러 기능을 연계하며 동작한다.

1. AIController Class

AI 기능을 사용하여 캐릭터를 움직이기 위해서 AIController Class를 부모 클래스로 하는 블루프린트를 만들어야 한다. AIController Class는 AI로 움직이는 캐릭터의 뇌와 같은 역할을 하는 클래스로, 내비게이션 기능을 사용해 이동하는 등 각종 AI 기능을 이용할 수 있다.

2. Behavior Tree

AI로 움직이는 캐릭터의 Task(행동) 연결을 정의하는 데이터이다. Behavior Tree를 사용해 여러 Task 중 어느 것을 수행할지에 대한 순서를 정의한다. 글로만 정리하면 어려우니 아래 그림을 참고하면 이해가 조금 더 쉽다.

3. BlackBoard

블랙보드는 말그대로 칠판으로 생각하면 된다. 블랙보드에 적힌 정보는 Behavior Tree의 각 노드에서 공통으로 사용되는 정보(변수)이다. Behavior Tree는 블랙보드의 정보를 바탕으로 AI가 지금 어떤 행동을 취해야 하는지 판단한다. 이전 행동 결과를 블랙보드에 저장하고 다음 행동에 반영할 수 있다.
블랙보드에서 Behavior Tree에서 사용하는 정보를 Key라고 한다.

결과


AI의 시야에 들어오면 AI가 따라오게 된다.

그리고 부딪히면 Damaged가 뜨게 되고, 잠시 머무르다 다시 쫓아오게 된다.


Damaged 부분에서 Behavior Tree에서 순서를 바꾸어 AI가 움직이지 않아 시간을 조금 소요했다. 뒤늦게 순서가 바뀐것을 깨닫고 바꾸었더니 실행이 되었다.

profile
기록용입니다.

0개의 댓글