개요
이번 포스팅에서는 몬스터 AI를 구현하기 위해 필요한 AI Controller에 대해 다루어보도록 하겠습니다.
Controller
언리얼 엔진의 Controller는 Pawn(폰) 또는 Character(캐릭터)처럼 폰에서 파생된 클래스를 빙의(Possess)하여 동작을 제어할 수 있는 액터입니다.
크게 사람이 조종하는 폰에 사용되는 PlayerController와 AI를 구현하기 위해 필요한 AI Controller로 구분되며, 두 컨틀롤러 모두 Possess 함수를 통해 Pawn(폰)의 제어권을 획득하고, Unpossess 함수로 소유권 해제가 가능합니다.
컨트롤러는 제어중인 폰에 발생하는 다수의 이벤트를 받으며, 기본적으로 Pawn(폰)과 1:1 대응 관계를 가집니다. 즉, 각각의 컨트롤러는 하나의 폰만을 제어할 수 있다는 의미입니다.
AI Controller
AI Controller는 게임 세계에서 AI가 어떻게 동작하고 상호작용할지 제어하는 "두뇌"와 같은 역할을 합니다.
AI Controller는 다음과 같은 역할을 수행합니다.
- AI 캐릭터 제어
- Possess() 함수를 사용해 특정 Pawn을 제어하거나 UnPossess() 함수를 통해 연결을 해제할 수 있습니다.
- Pawn을 제어하여 이동 경로를 계산하고, 목적지로 이동시키거나 공격/방어 등의 행동을 실행합니다.
- 의사 결정
- Behavior Tree와 Blackboard를 함께 사용하여 AI의 의사 결정 과정을 만들 수 있습니다.
- AI Controller는 BehaviorTree와 상호작용하며, Blackboard를 통해 데이터를 저장 및 사용할 수 있습니다.
- 경로 탐색
- AI Controller는 내장된 Navigation System을 활용하여 소유한 Pawn이 장애물을 피해 목적지까지 이동할 수 있도록 경로를 탐색하고, 이동시킬 수 있습니다.
AI Controller 간단 설정
실제로 몬스터에 사용할 AI Controller를 설정(Possess / UnPossess)하는 코드를 작성해보았습니다.
Possess (빙의)
UnPossess (빙의 해제)
위와 같이 간단히 Possess와 UnPossess 코드를 작성하였다면, 실제 몬스터 클래스에서 AI Controller를 해당 클래스로 설정해주면 자동으로 몬스터가 배치/스폰됨과 동시에 설정한 Behavior Tree를 실행됩니다.
참고 자료
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/controllers-in-unreal-engine
'Game Programming > Unreal Engine' 카테고리의 다른 글
[Unreal Engine] 스마트 포인터 (C++ vs UE) (0) | 2024.10.29 |
---|---|
[Unreal Engine] DataAsset, Lazy Loading (0) | 2024.10.28 |
[Unreal Engine 5] FABRIK IK (0) | 2024.08.25 |
[Unreal Engine] 리플렉션 시스템, CDO (0) | 2024.07.26 |
[Unreal Engine 5] GameInstanceSubsystem (0) | 2024.07.17 |