1. AI 클래스 계층 구조 설계 (Inheritance)
단순한 구조가 아닌, 확장성을 고려하여 C++ 기반의 계층 구조를 설계함.
- AF4CharacterBase: 공통 ASC(Ability System Component) 및 속성 관리.
- AF4EnemyBase: 적 AI의 공통 로직(사거리 체크, 타겟 인식, 사망 처리) 담당.
- AF4MeleeEnemy / AF4RangeEnemy: 공격 방식(근접 판정 vs 투사체 발사)에 따른 C++ 클래스 분화.
- 이유: 단순히 수치만 다른 게 아니라 로직 자체가 다르므로 C++에서 뼈대를 나누는 것이 유지보수에 유리함.
2. 거리 기반 인지 시스템 (Perception by Distance)
복잡한 시야각(FOV) 계산 이전에 가장 확실한 거리 연산을 통해 AI의 상태 전환 근거를 마련함.
- TraceRange (추격 범위): 플레이어를 인식하고 추적하기 시작하는 거리.
- AttackRange (공격 범위): 실제로 공격 어빌리티를 실행할 수 있는 사거리.
- 최적화: FVector::Dist 대신 DistSquared를 사용하여 제곱근 연산을 피함으로써 CPU 부하 최적화.
3. GAS 태그 기반 상태 관리
Boolean 변수(bIsDead, bIsAttacking) 대신 Gameplay Tags를 사용하여 상태를 제어함.
- 태그 네이밍: Character.State.Attack 보다는 State.Attack과 같이 범용적인 카테고리화 사용.
- 어빌리티 제어:
- Activation Blocked Tags: 캐릭터가 기절/사망 상태일 때 어빌리티 발동을 원천 차단.
- Block Abilities With Tag: 특정 동작(예: 회피, 궁극기) 중에 다른 행동이 섞이지 않도록 제어.
4. Behavior Tree(BT) 구조와 C++ 연동
비헤이비어 트리의 핵심 구성 요소인 Task와 Service의 역할을 명확히 구분함.
- BTService (감시자): 주기적으로 플레이어와의 거리를 체크하여 블랙보드(Blackboard) 값을 갱신.
- BTTask (행동자): 블랙보드 조건이 충족되었을 때 실제 GAS 어빌리티를 실행하거나 이동 명령을 수행.
- Wait Node: 공격 후 딜레이를 주는 가장 빠른 방법으로 활용. (추후 GAS Cooldown으로 고도화 예정)
'내배캠 TIL' 카테고리의 다른 글
| [내배캠 TIL 260304] 적 사망 시 피격 판정 제거 및 사운드 중복 방지 (0) | 2026.03.04 |
|---|---|
| [내배캠 TIL 260224] C++ std::sort 커스텀 비교 함수 구현하기 (0) | 2026.02.24 |
| [내배캠 TIL 260209] Unity 모델 에셋의 Unreal Engine 이식 및 좌표계 트러블슈팅 (0) | 2026.02.09 |
| [내배캠 TIL 260205] Unreal Enhanced Input 헤더 인식 이슈 (0) | 2026.02.05 |
| [내배캠 TIL 260203] Unreal Engine 타이머, 람다식, UObject 수명 관리 이슈 (0) | 2026.02.03 |