※ 개인적인 공부를 위해 포스팅 하는 글입니다.
# AI를 구성하기 위해선
ㆍ 블랙보드, AI Controller, Behavior Tree가 필요하다.
# 블랙보드
ㆍ 칠판처럼, 뇌처럼 즉 AI에서 필요한 변수들을 저장하는...
# AI컨트롤러에서 간단하게 불러오기. 코드로도 쉽게 고칠 수 있겠다.
# Behavior Tree
ㆍ 만들고 블랙보드를 바인드 해주고
#여러가지 노드들
ㆍ 기존에 알고있던거라 자세한 포스팅은 생략. 기억 안나면 주석을 보자
▶ 테스크 노드
ㆍ 새 태스크 노드를 만들어 정의할 수 있는데. 이걸 C++로 할 수 있다.
ㆍ 실제 행동에 관련된 노드들, 일감 느낌
# 테스크 노드 블루프린트
ㆍ 일단 저기서 Execute AI 이벤트를 찾아서 눌러주자.
※ 흐름을 간단하게 보자면..
ㆍ LocationKey라는 Blackbord 키 선택툴 이라는 변수를 통해 행동트리에서 블랙보드의 키값을 설정할 수 있게
구조가 짜여있다.
※ 결과는 랜덤한 1000의 범위 내에서 적이 정찰을 한다.
▶ 서비스 노드
# 하지만 모든걸로 Task로 구현하긴 좀 힘들것이다
ㆍ 코드로 치면 싱글톤같이... 테스크와 상관 없이 계속 돌아가는 그런게 있으면 좋겠다.
ㆍ 플레이어가 감지되었을땐 플레이어를 감지할 수 있는 그런... 서비스가 필요하다
# 그게 바로 서비스 노드
ㆍ 만들고 Recive Tick AI 이벤트를 오버라이드 하자
감지된 엑터를 블랙보드 키 선택 툴에 넣어줘 행동트리와 블랙보드에서 관리할 수 있게 해준다.
ㆍ 만들어진 서비스 노드는 어딘가에서 기생하여 사용할 수 있다.
ㆍ 0.5초마다 실행이 되고 있다. 그리고 타겟 키를 설정하는거를 잊으면 안된다.
▶ 데코레이터
ㆍ 조건을 다는 개념이라고 보면 된다.
ㆍ 타겟이 있다면? 일로 들어오고 없다면? 절로들어가.
ㆍ 얘도 기생해서 쓴다 만들어 줄 수도 있고, 가장 많이 쓰는건 저 Blackboard 저놈이다
※ 데이터를 보고 판단하겠다.
ㆍ 참 거짓 조건을 이렇게 달아줄 수 있고, 그에 따라 이곳으로 탈건지 아닐건지를 판단할 수 있다
# 당연히 커스텀도 가능하다
ㆍ 새 데코레이터를 파줘서 이렇게 정의해줄 수도 있다.
ㆍ 역 조건으로 바로 판별도 가능하다.
ㆍ 값이 바뀔때는 새로고침이 바로 될 수 있게 해줘서 버벅임을 없앴다.
※ 다음 포스팅엔 이걸 C++에서 해보는 작업을 해 볼 예정.
'언리얼엔진 > 언리얼 C++' 카테고리의 다른 글
UI 위젯블루프린트 (4) | 2024.10.25 |
---|---|
Behavior Tree (Task, Service, Decorator) - C++ (0) | 2024.10.25 |
AI Controller (0) | 2024.10.24 |
Post Process (0) | 2024.10.23 |
데미지 처리와 애니메이션 노티파이 (0) | 2024.10.23 |