본문으로 건너뛰기
게임 수학 · 게임 AI 기초집LESSON 18

순찰 AI

난이도초급
예상 시간50분
선수지식17강의 상태 머신

18강. 순찰 AI

1. 이번 강의에서 해결할 문제

현재 위치를 중심으로 계속 랜덤 순찰해 적이 원래 구역에서 멀리 떠납니다. HomeLocation을 기준으로 목적지를 선택하고 도착 후 잠시 대기합니다.

2. 학습 목표

3. 핵심 개념

순찰은 목표 위치 선택, 이동, 도착, 대기의 반복입니다. 위치 선택과 이동 성공 여부를 분리하면 NavMesh 실패를 다룰 수 있습니다.

현재 위치를 기준으로 랜덤 지점을 계속 고르면 Random Walk가 되어 장기적으로 멀어질 수 있습니다. 스폰 또는 배치 위치인 HomeLocation을 중심으로 반경을 제한합니다.

4. 단계별 실습

Blackboard 작업

BB_EnemyCombat에 HomeLocation Vector Key를 추가합니다.

C++ · 파일 경로: Source/TopDownSurvival/AI/MathAIController.cpp · OnPossess 추가

MathAIController.cpp · Home 저장
void AMathAIController::OnPossess(APawn* InPawn)
{
Super::OnPossess(InPawn);
if (!BehaviorTreeAsset || !RunBehaviorTree(BehaviorTreeAsset))
{
return;
}

if (UBlackboardComponent* Blackboard = GetBlackboardComponent())
{
Blackboard->SetValueAsVector(
TEXT("HomeLocation"), InPawn->GetActorLocation());
Blackboard->SetValueAsEnum(
TEXT("AIState"), static_cast<uint8>(EEnemyAIState::Patrol));
}
}

C++ · 파일 경로: Source/TopDownSurvival/AI/Tasks/BTTask_FindPatrolLocation.cpp · 기준 변경

BTTask_FindPatrolLocation.cpp · Home 기준
UBlackboardComponent* Blackboard = OwnerComp.GetBlackboardComponent();
const FVector Home = Blackboard->GetValueAsVector(TEXT("HomeLocation"));

FNavLocation Location;
if (!Navigation->GetRandomReachablePointInRadius(
Home, PatrolRadius, Location))
{
return EBTNodeResult::Failed;
}

Blackboard->SetValueAsVector(
PatrolLocationKey.SelectedKeyName, Location.Location);
return EBTNodeResult::Succeeded;

Behavior Tree 작업

Patrol Sequence를 다음 순서로 구성합니다.

  1. Decorator: AIState == Patrol
  2. Find Reachable Patrol Location
  3. Move To: PatrolLocation, Acceptable Radius 60
  4. Wait: 1.0~2.5초 Random Deviation

Decorator의 Observer Aborts를 Self로 설정하면 상태가 Chase로 바뀔 때 순찰 Branch를 중단할 수 있습니다. 세부 옵션 이름은 UE 버전에 따라 다를 수 있습니다.

5. 코드와 수학·AI가 동작하는 이유

Home을 고정 중심으로 사용하면 각 목적지가 같은 순찰 구역 안에 남습니다. Navigation이 반환한 도달 가능 위치만 Blackboard에 기록하고 MoveTo가 비동기로 경로를 수행합니다. Wait는 이동 완료 뒤 즉시 다음 경로를 요청하는 부자연스러움을 줄입니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

순찰 AI 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1다음 중 “순찰 AI”의 핵심 요약을 실제 상황에 맞게 적용한 것은 무엇인가요?
  2. 문제 2‘MoveTo를 매 Tick 호출’ 상태에 관한 “순찰 AI” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

18강. 순찰 AI 미완료 상태