| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 2023 버닝비버
- 게임개발
- 브레이킹 루틴
- 모토가있는하루
- 바닥부터배우는강화학습
- Unity
- ECS
- 유니티
- 2023 비버잼
- 강화학습
- 역행자
- custommessaging
- 2023 경기게임잼
- MapleStoryWorlds
- Wings2022굿즈
- 인디게임개발
- 프로이트 #쾌락원칙을넘어서
- Catverse
- #스타를#하다보니#최적화맛들림#42미네랄#앞마당파일런
- InputSystem
- Wings2022
- 객체지향의사실과오해 #객체지향
- 메이플스토리월드
- 공정한경쟁
- necode
- Netcode
- 페스트 #알베르카뮈
- 보통일베들의시대
- 넷코드
- 쫄?
- Today
- Total
이문회우
[Unreal Behavior Tree] 공식 문서 읽기 본문
참고 공식 문서
언리얼 엔진의 비헤이비어 트리 - 퀵 스타트 가이드 | 언리얼 엔진 5.0 문서 (unrealengine.com)
비헤이비어 트리 퀵 스타트 가이드
이 가이드에서는 순찰하거나 플레이어를 추격하는 AI 캐릭터를 비헤이비어 트리로 구성하는 방법을 알아봅니다.
docs.unrealengine.com
Blackboard
공식 문서에서는 언리얼 AI 시스템에서 '두뇌'를 맡는다고 되어있지만, 실제 판단은 Behavior Tree가 하기 때문에 와닿는 비유는 아니다.
이와 관련해서 ChatGPT에게 물어보니 '중앙 데이터 저장소'라고 한다.

적절한 비유다.
언리얼 AI 시스템은 크게 두 축으로 구성돼 있는데,
'캐릭터의 상황을 받아들이는 부분'과 받아들인 정보를 바탕으로 '일련의 과정을 통해 판단을 내리는 부분'이 있다.
여기서 전자, 상황을 받아들이는 부분이 Blackboard다.
이 AI 시스템이 붙어있을 오브젝트의 위치나 가속도, 그 외 기타 등등 필요한 정보를 가져올 수 있는 공간이다.
특히, 이 때 '상황으로부터 받아들일 정보'가 Blackboard Key라고 한다.
이 Blackboard Key가 Behavior Tree로 전달돼서 판단에 쓰이게 된다.
Behavior Tree
'일련의 과정을 통해 판단을 내리는 부분'을 맡는다.
기본적으로 판단을 시작하는 Root를 갖고 있고, 그 Root에 연결된 줄기의 흐름에 따라서 판단을 하게 된다.
아래는 이 Behavior Tree의 구성 요소들
Composite
줄기의 고급진 표현이다. 즉, Behavior Tree의 흐름은 모두 이 Composite이다.
밑에 있는 Selector, Sequence, Simple Parallel은 각각마다 고유의 방식으로 흐름을 제어한다.
흐름은 기본적으로 위에서 아래로, 왼쪽에서 오른쪽으로 진행된다.
Task
설명 편의상 Task 먼저 설명하겠다.
Composite이 줄기라면 이 Task는 나뭇잎 또는 과실과 같은 최종 목적지이다.
Composite의 흐름에 따라서 이 Task에 도달하면, 해당 Task가 실행되게 된다.
Selector
왼쪽에서부터 오른쪽으로 진행하며, 처음으로 실행 가능한 Task 또는 Composite을 실행시킨다. 그렇게 실행을 완료했으면 부모 노드로 되돌아간다. 즉, 해당 실행 노드 오른쪽에 있는 애들은 무시됨.
결국 하나만 실행시키기 때문에 Select. 선택자이다.
Sequence
왼쪽에서부터 오른쪽으로 진행하는 것은 Selector와 동일하다.
하지만 실행에 성공했다고 부모 노드로 되돌아가는 것이 아니라, 왼쪽에서 오른쪽으로 순차적으로 다 실행시킨다.
그러다 실패했을 때 멈추고 돌아간다. Selector는 계속 실패하다 하나라도 성공하면 되돌아가는 것과 대조적이다.
Sequence, '순차적'이란 의미 그대로이다.
Simple Parallel
자식 노드를 일단 다 동시에 실행시킨다. Simple Parallel이란 의미 그대로.
이 때 모든 자식 노드가 성공해야만 Simple Parallel이 성공으로 간주된다.
Decorator
Decorator는 노드에 붙어서(Decorate라는 단어 그대로) 해당 노드가 실행되기 전에 If문을 거는 것이다.
사실 상기한 Composite이 '흐름 제어'를 하지만 프로그래밍에서 보통 '흐름 제어'라 말하는 조건문은 없다.
Decorator가 그 조건문이라 보면 된다.
Service
특정 노드가 실행되고 있을 때, 그 노드에 붙어서 주기적으로 실행되는 애들이다. Update다.
끗. 이상 ChatGPT 짱짱맨

2022.11.23. 던전 앤 시그널 SW 페스티벌 대상 (tistory.com)
2022.11.23. 던전 앤 시그널 SW 페스티벌 대상
와! 대상! 와! 알고보니 각 부문별 최우수상 받은 작품 중에 다시 대상을 수상하는 것이더라. 그래서 상금이 더 커졌다. 대신 공동 수상이라 반토막. 플레이 영상을 올리고 싶지만 안드로이드에
koesob.tistory.com
최근에 이때 만든 게임을 재구성해보는 시도를 하고 있다.
오토배틀러 장르의 게임이라 이 Behavior Tree를 사용하는데
지환이형이 언리얼의 Behavior Tree 시스템을 고스란히 유니티로 옮겨온 덕택에 가능했다.
지금 그 코드를 읽어보면서 공부하고 있는데...
어케했ㄴ;;;
와중에 언리얼의 Behavior Tree 에디터 창을 그대로 유니티로 가져왔다.
정말 학교 사람들 미친거 같아요....
덕분에 나는 꽁으로 유니티에서 Behavior Tree 구현하는 법을 배우고 있다. 사랑합니다❤❤
Behavior(미국식) Behaviour(영국식) 뭔가 자꾸 헷갈리길래 왜 그런가 했더니
언리얼에선 Behavior를 사용하고, 유니티에서는 MonoBehaviour를 필두로 Behaviour를 사용한다.
허허
'글' 카테고리의 다른 글
| 고전 읽기 : 프로이트, 쾌락원칙을 넘어서 (3) | 2024.11.26 |
|---|---|
| 7월 여행 기록 (1) - 조치원 (1) | 2023.07.23 |
| 게임 프로그래밍 패턴 (0) | 2023.04.20 |
| [Unity Netcode] 멀티 개념 잡기 / 넷코드 + 포톤 + 메이플스토리 월드 (2) | 2023.04.18 |
| 파란색 / 스즈메의 문단속 (0) | 2023.03.31 |