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

군집과 회피 기초

난이도초급
예상 시간45분
선수지식20강의 전투 AI

21강. 군집과 회피 기초

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

여러 적이 같은 플레이어 위치를 향해 이동하면서 한 점에 겹치고 서로 밀어냅니다. 정적 장애물 경로와 움직이는 이웃 회피를 구분합니다.

2. 학습 목표

3. 핵심 개념

Pathfinding은 벽과 지형을 피해 목적지까지 큰 경로를 찾습니다. Avoidance는 경로를 따라 이동하는 동안 다른 움직이는 Agent와 충돌하지 않을 속도를 고릅니다.

Unreal Navigation은 RVO와 Detour Crowd 계열 회피를 제공합니다. 공식 Using Avoidance 문서는 두 방식의 특징을 설명합니다. 두 시스템을 근거 없이 동시에 켜지 말고 프로젝트 규모와 Controller 구조에 맞춰 하나부터 검증합니다.

4. 단계별 실습

C++ · 파일 경로: Source/TopDownSurvival/Enemies/MathAIEnemyCharacter.cpp · 생성자

MathAIEnemyCharacter.cpp · RVO 설정
#include "GameFramework/CharacterMovementComponent.h"

AMathAIEnemyCharacter::AMathAIEnemyCharacter()
{
UCharacterMovementComponent* Movement = GetCharacterMovement();
Movement->bUseRVOAvoidance = true;
Movement->AvoidanceConsiderationRadius = 250.0f;
Movement->AvoidanceWeight = 0.5f;
}

Unreal Editor 작업

  1. 넓은 NavMesh 바닥 중앙에 플레이어를 둡니다.
  2. 적 5, 20, 50개를 원형으로 배치해 동시에 추적시킵니다.
  3. RVO Off와 On에서 겹침, 진동, 도착 시간과 Game Thread 시간을 비교합니다.
  4. Capsule Radius와 Acceptance Radius가 너무 작지 않은지 확인합니다.

선택적 수동 Separation은 가까운 이웃과 반대 방향 벡터를 합하는 방식이지만, 모든 적 쌍을 매 Tick 검사하면 O(n²) 비용이 됩니다. 먼저 엔진 회피와 Collision 설정을 사용하고 실제 요구가 남을 때 공간 분할과 제한된 주기를 설계합니다.

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

RVO는 이웃의 현재 속도 벡터를 고려해 충돌을 줄이는 대안 속도를 선택합니다. NavMesh가 정적 경로를 제공하고 RVO가 국소 속도를 조정합니다. Consideration Radius가 크면 더 많은 이웃을 고려해 품질과 비용이 함께 증가할 수 있습니다.

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

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

군집과 회피 기초 미니 퀴즈

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

0 / 2
  1. 문제 1“군집과 회피 기초” 실습을 안전하게 진행하기 위한 판단으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘성능 수치를 다른 PC 결과와 직접 비교’ 상태에 관한 “군집과 회피 기초” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

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

21강. 군집과 회피 기초 미완료 상태