안선생의 개발 블로그
[UE5 AI] Behavior Tree - Service 본문
Behavior Tree - Service?
Service는 Behavior Tree에서 각 task나 composite에 붙여 사용하는데, task가 실행되기 전에 먼저 실행되어 blackboard에서 값을 읽어 각 task에 값을 공급하는 등의 역할 또한 Service란 이름처럼 task나 composite가 실행되는 동안에 주기적으로 동작을 반복수행합니다.
서비스는 주로 Behavior Tree의 특정 상태에서 AI 캐릭터의 상태를 모니터링하거나 업데이트하는 데 사용됩니다. 예를 들어, 캐릭터가 특정 위치로 이동하도록 지시하는 행동 트리가 있다고 가정해 보겠습니다. 이동 중에 캐릭터의 위치를 계속 확인하고 목표 위치에 도달했는지 확인하려면 서비스를 사용하여 이러한 동작을 주기적으로 실행할 수 있습니다.
서비스는 Behavior Tree에서 다른 노드와 마찬가지로 조건, 액션과 유사한 구조를 가지며, Behavior Tree에 포함된 노드 중 하나로 사용됩니다. 서비스는 Behavior Tree를 사용하여 AI 캐릭터의 복잡한 행동을 조정하고 상태를 감시하는 데 유용한 도구
한번 실제로 사용해보자
새 서비스를 만들어줍시다.
이름은 간단하게 하고
Event Receive Activation AI 이벤트를 실행하여 S1을 출력합니다.
Event Receive Activation AI 는 활성화 될 떄 한번 실행됩니다.
비헤어트리를 실행해볼게요 위에 테스크는 그냥 Hello출력하는 Task입니다.
\
실행결과
서비스가 먼저 실행되는거를 알 수 있음.
즉 서비스로 블랙보드를 바꾸면 Task는 바뀐 블랙보드 값으로 실행된다.
다른 예시를 해보겠습니다.
GetRandomLocationInNavigableRadius는 내비게이션이 활성화 되있으면 Orign위체에서 Raidus만큼 만큼 랜덤 위치를 반환 100이니 10cm이내로 반환.
이 이벤트는 랜덤위치를 블랙보드 백터 키값에서 저장해주는 서비스입니다.
이제 키값을 설정해주고 실행해보겠습니다.
계속 키값이 바뀌는걸 알 수 있음
이렇게 Task가 실행되기전에 값을 공급해주는 역할을 할 수 있다.
서비스에는 Tick도 있다.
아래와 같이 Tick AI를 호출해주면 되는데 컨트롤러가 존재할때만 실행되게 조건을 걸수도 있다. 그러면 해당 서비스를 갖고있는 컴포즈나 Task를 실행할 때 계속 서비스가 실행된다.
만약 Move to Task를 사용하는데 계속 똑같은 플레이어만 쫓을테니 서비스에 있는 Tick 사용하여 가까운 플레이어 위치를 계속 바꿔줄 수 있다.
디테일 패널창에서 틱 간격을 조정할 수 있다.
0.5 편차 .1이라 0.4에서 0.6
서비스는 Task나 컴포즈가 실행될 때 서비스를 반복적으로 실행해서 블랙보드에 있는 블랙보드에 있는 키값을 바꾸는 기능이라고 생각하면 된다.
'언리얼 > AI' 카테고리의 다른 글
[UE5 AI] EQS( Environment Query System) (0) | 2025.02.17 |
---|---|
[UE5 AI] Behavior Tree - Decorator (0) | 2024.03.27 |
[UE5 AI] Simple Parallel (0) | 2024.03.21 |
[UE5 AI] AI - BlackBoard (0) | 2024.03.20 |
[UE5 AI] AI Behavior Tree - Task, 셀렉터(Selector),시퀀스(Sequence) (0) | 2024.03.17 |