010-2135-9730무료 상담
실전 팁

언리얼 행동 트리로 적 AI 만들기

언리얼에서 적 AI를 만들 때는 행동 트리와 블랙보드, AI 컨트롤러 세 가지를 함께 씁니다. 블랙보드는 적이 기억하는 정보(플레이어가 어디 있는지 등)를 담는 메모장이고, 행동 트리는 그 메모를 보고 지금 무엇을 할지 고르는 결정 순서도이며, AI 컨트롤러는 이 둘을 적 캐릭터에 연결해 실행하는 두뇌 역할을 합니다. 처음에는 '플레이어가 안 보이면 순찰, 보이면 추격'하는 적 하나를 완성하는 것이 가장 좋은 연습입니다.

읽는 시간 약 7분게임프로그래밍
언리얼 과정
이 글과 연결된 과정언리얼 과정 알아보기

블루프린트만으로도 게임을 만들 수 있지만, 회사에서는 성능과 유지보수를 위해 C++과 함께 쓰는 경우가 많습니다. 수업에서는 어떤 기능을 블루프린트로, 어떤 …

행동 트리가 결정을 내리는 방식

행동 트리는 위에서 아래로, 왼쪽에서 오른쪽으로 읽힙니다. 맨 위 뿌리에서 출발해 가지를 따라 내려가며 지금 실행할 행동을 찾습니다. 왼쪽에 있는 가지일수록 먼저 검사되므로, 중요한 행동을 왼쪽에 두는 것이 기본입니다.

가지를 나누는 대표 노드는 셀렉터와 시퀀스입니다. 셀렉터는 아래 가지 중 하나라도 성공하면 멈추는 '이것 아니면 저것' 구조입니다. 시퀀스는 아래 가지를 순서대로 모두 성공해야 끝나는 '이것 하고 저것 하고' 구조입니다. 이 둘의 차이만 정확히 잡아도 행동 트리의 절반은 이해한 셈입니다.

일상에 비유하면 셀렉터는 '배고프면 밥 먹고, 아니면 졸리면 자고, 아니면 게임한다'처럼 조건에 맞는 하나를 고르는 판단이고, 시퀀스는 '냉장고 열고, 재료 꺼내고, 요리한다'처럼 단계를 차례로 밟는 행동입니다. 중간 단계가 실패하면 시퀀스 전체가 실패로 돌아갑니다.

가지 끝에 달리는 실제 행동을 작업(태스크)이라고 부릅니다. 이동하기, 기다리기, 소리 내기처럼 실제로 무언가를 하는 노드입니다. 가지 위에 붙어 들어갈지 말지를 정하는 조건은 데코레이터, 가지가 실행되는 동안 주기적으로 정보를 갱신하는 노드는 서비스라고 합니다. 작업, 데코레이터, 서비스 세 가지 이름을 알아 두면 이후 설명이 훨씬 잘 읽힙니다.

준비물: 블랙보드, 행동 트리, AI 컨트롤러

구성 요소하는 일이번 실습에서 넣을 것
블랙보드AI가 판단에 쓰는 값을 저장목표 액터(플레이어), 순찰 지점 위치
행동 트리블랙보드 값을 보고 행동 선택추격 가지, 순찰 가지
AI 컨트롤러캐릭터를 조종하며 행동 트리 실행시작할 때 행동 트리 실행 노드
내비게이션 메시AI가 걸어갈 수 있는 바닥 영역 계산레벨 바닥을 덮는 영역 볼륨

콘텐츠 브라우저에서 블랙보드와 행동 트리 에셋을 만들고, 행동 트리 설정에서 사용할 블랙보드를 지정합니다. AI 컨트롤러 블루프린트를 만든 뒤 적 캐릭터의 설정에서 이 컨트롤러를 쓰도록 연결하면 준비가 끝납니다.

가장 자주 빠뜨리는 것이 내비게이션 메시입니다. 레벨에 내비 메시 영역 볼륨을 놓고 바닥을 덮을 만큼 크기를 키워야 AI가 이동 경로를 계산할 수 있습니다. 뷰포트에서 P 키를 누르면 걸을 수 있는 영역이 초록색으로 표시되어 확인하기 쉽습니다.

순찰과 추격을 오가는 적 AI 만드는 순서

  1. 블랙보드에 목표 액터용 오브젝트 키와 순찰 위치용 벡터 키를 만듭니다.
  2. AI 컨트롤러의 시작 이벤트에서 행동 트리 실행 노드로 우리 행동 트리를 지정합니다.
  3. 행동 트리 뿌리 아래에 셀렉터를 두고, 왼쪽에 추격 시퀀스, 오른쪽에 순찰 시퀀스를 답니다.
  4. 추격 시퀀스에는 목표 액터를 향해 이동하는 작업을 넣고, 목표 액터 키가 비어 있지 않을 때만 들어가도록 블랙보드 조건 데코레이터를 붙입니다.
  5. 순찰 시퀀스에는 주변 임의 위치를 구해 순찰 위치 키에 저장하는 작업, 그 위치로 이동하는 작업, 잠깐 기다리는 작업을 차례로 넣습니다.
  6. 플레이어를 발견하면 목표 액터 키에 값을 넣고, 놓치면 비우는 로직을 컨트롤러에 추가합니다.

임의 위치를 구하는 부분은 직접 작업 노드를 블루프린트로 만들어야 합니다. 새 작업 블루프린트에서 내비게이션 시스템의 주변 임의 위치 함수를 호출하고, 결과를 블랙보드 키에 저장한 뒤 작업 완료를 알리는 노드로 성공을 반환하면 됩니다. 이 완료 신호를 빼먹으면 트리가 그 작업에서 멈춰 버립니다.

플레이어를 '보는' 기능 붙이기

적이 플레이어를 발견하게 하려면 AI 퍼셉션 컴포넌트를 컨트롤러에 추가하고 시각 감각을 설정합니다. 보는 거리와 시야각을 정하고, 무엇을 적으로 인식할지 감지 대상을 정한 뒤, 감지가 바뀔 때 호출되는 이벤트에서 블랙보드 값을 넣거나 비웁니다.

처음 실습에서는 감지 대상 설정 때문에 플레이어를 인식하지 못하는 경우가 많습니다. 적, 중립, 아군을 모두 감지하도록 체크해 두고 동작부터 확인한 뒤, 나중에 팀 구분을 다듬는 순서가 덜 막힙니다.

블랙보드 조건 데코레이터에는 값이 바뀔 때 실행 중인 가지를 중단시키는 설정이 있습니다. 이것을 켜 두지 않으면 순찰 중에 플레이어를 발견해도 순찰 이동이 끝날 때까지 추격으로 넘어가지 않습니다. 반응이 한 박자 늦다면 이 설정부터 확인해 보세요.

이름과 연락처만 남기면 담당 멘토가 연락드립니다상담 가능 시간 평일·주말 · 전화 010-2135-9730

디버깅하는 법과 다음 단계

게임을 실행한 상태에서 행동 트리 편집 창을 열면, 지금 실행 중인 가지가 밝게 표시됩니다. 적이 이상하게 움직일 때 어느 노드에서 멈춰 있는지, 블랙보드 값이 기대대로 들어갔는지 바로 볼 수 있습니다. 문제가 생기면 코드를 고치기 전에 이 화면부터 보는 습관을 들이면 시간이 크게 줄어듭니다.

기본 순찰과 추격이 동작하면 확장할 거리는 많습니다. 일정 거리 안에 들어오면 공격하는 가지, 체력이 낮으면 도망가는 가지, 소리를 듣고 그 위치를 확인하러 가는 가지를 하나씩 더해 보세요. 가지가 늘어날수록 왼쪽부터 우선순위를 어떻게 둘지가 설계의 핵심이 됩니다. 공격 가지를 추격 가지보다 왼쪽에 두지 않으면, 적이 플레이어 바로 앞까지 와서도 계속 따라다니기만 하는 일이 생깁니다.

주기적으로 값을 갱신해야 하는 경우에는 서비스 노드를 쓸 수 있습니다. 예를 들어 추격 가지가 실행되는 동안 일정 간격으로 플레이어와의 거리를 계산해 블랙보드에 넣어 두면, 공격 가지가 그 값을 보고 판단할 수 있습니다. 포트폴리오용 적 AI를 행동 트리로 어디까지 설계해야 할지 기준이 필요하다면, SBS아카데미게임학원 게임프로그래밍 과정 상담에서 지금 만든 AI 구조를 놓고 다음 단계를 이야기해 보세요.

자주 묻는 질문

행동 트리와 상태 머신 중 무엇을 먼저 배워야 하나요?

상태 머신은 개념이 단순해 원리를 이해하기 좋고, 행동 트리는 행동이 많아질 때 관리하기 편합니다. 언리얼에서 적 AI를 만든다면 행동 트리를 바로 실습해도 무리는 없습니다.

행동 트리를 C++로도 만들 수 있나요?

작업, 데코레이터, 서비스 노드를 C++ 클래스로 만들 수 있습니다. 처음에는 블루프린트로 흐름을 익히고, 성능이나 재사용이 필요할 때 C++로 옮기는 경우가 많습니다.

TIP내 상황에 맞는 답이 필요하다면 무료 상담에서 지금 수준과 목표를 기준으로 구체적으로 안내해 드립니다.

가까운 캠퍼스에서 언리얼 알아보기

사는 곳과 가까운 캠퍼스를 고르면 수업 내용, 오시는 길, 상담 신청을 한 번에 볼 수 있습니다.

함께 읽으면 좋은 글

Free consulting

언리얼, 내 상황에서는 어떻게 시작할까요?

글에서 다룬 내용을 내 실력과 목표에 맞춰 담당 멘토가 구체적으로 정리해 드립니다.

  1. 상담 신청서 접수
  2. 담당 멘토가 연락드림
  3. 방문 또는 전화로 진로·과정 상담
전화로 바로 상담010-2135-9730
전화 상담상담 신청