언리얼 엔진의 AI ROV (RVO: Reciprocal Velocity Obstacles) 기능은 AI 에이전트들 사이의 충돌을 피하기 위한 이동 알고리즘입니다. 즉, 여러 AI 캐릭터가 동시에 움직일 때 서로 충돌하지 않고 자연스럽게 경로를 회피하도록 만들어주는 기능입니다. 이 기능은 특히 군중 시뮬레이션, RTS, MOBA 장르에서 자주 사용됩니다.
RVO (Reciprocal Velocity Obstacles) 개념
- 목적: AI가 다른 AI 또는 장애물과 충돌하지 않도록 경로를 조절함.
- 기반 원리: 다른 에이전트의 속도를 예측해 충돌 가능성이 있는 경우, 서로의 속도를 적절히 조절해 충돌을 피함.
- Reciprocal의 의미: 단방향 회피가 아니라 쌍방 간 양보/회피.
언리얼 엔진에서의 적용 방식
언리얼 엔진에서는 UCrowdFollowingComponent를 통해 RVO가 지원됩니다.
NavMesh를 기반으로 이동하되, AI 간 충돌을 회피하도록 설정할 수 있습니다.
1. 사용 전제 조건
- NavMeshBoundsVolume이 제대로 설정되어 있어야 함
- AIController의 MovementComponent가 UCrowdFollowingComponent 여야 함
// AIController 생성자에서 설정 예시
AAIControllerWithRVO::AAIControllerWithRVO()
{
CrowdFollowingComponent = CreateDefaultSubobject<UCrowdFollowingComponent>(TEXT("CrowdFollowingComponent"));
SetMoveBlockDetection(true); // 옵션에 따라 설정
}
2. 캐릭터의 CharacterMovementComponent 설정
CharacterMovementComponent에서 아래 항목을 설정해야 합니다:
CharacterMovement->bUseRVOAvoidance = true; // RVO 회피 기능 사용
CharacterMovement->AvoidanceWeight = 0.5f; // 회피 우선순위 (0.0~1.0)
CharacterMovement->AvoidanceConsiderationRadius = 500.f; // 고려 반경
CharacterMovement->AvoidanceGroup.SetGroup(1); // 회피 그룹 설정 (비트마스크)
3. Avoidance Priority (우선순위)
- AvoidanceWeight와 함께 사용하는 값.
- AI가 서로 충돌할 경우, 우선순위가 높은 쪽이 덜 피하고, 낮은 쪽이 더 피함.
CharacterMovement->SetAvoidancePriority(10); // 낮을수록 먼저 피함
4. Editor 상에서도 설정 가능
- CharacterMovementComponent → Avoidance 카테고리에서 설정 가능
- Use RVO Avoidance 체크박스
- Avoidance Weight, Avoidance Priority 수치 입력
5. 디버깅
- ShowDebug crowd 콘솔 명령어로 군중 및 RVO 회피 동작 시각화 가능
요약
항목 | 설명 |
기능명 | RVO (Reciprocal Velocity Obstacle) |
목적 | AI끼리 충돌하지 않고 자연스럽게 회피 |
관련 컴포넌트 | UCrowdFollowingComponent, CharacterMovementComponent |
주요 설정 | bUseRVOAvoidance, AvoidanceWeight, AvoidancePriority |
디버그 명령어 | ShowDebug crowd |
필수 요소 | NavMesh, MovementComponent가 Crowd용으로 설정되어야 함 |
'TIL > Unreal Engine' 카테고리의 다른 글
언리얼 엔진 레벨 전환 시 로딩 방식 (0) | 2025.05.14 |
---|---|
언리얼 엔진의 맵 로딩 (0) | 2025.05.08 |
Unreal Engine에서 SFX 임포트 및 어테뉴에이션 세팅하기 (Feat. 발소리와 BGM) (0) | 2025.04.23 |
Chaos Destruction (0) | 2025.03.26 |
리슨 서버 컨트롤러 구조 (0) | 2025.03.20 |