[UE5] 🌳 Behavior Tree

Singery00Β·2024λ…„ 4μ›” 16일
0

UE5

λͺ©λ‘ 보기
5/37
post-thumbnail

κ°œμš”

🌳 ν–‰λ™νŠΈλ¦¬(Behavior Tree)에 λŒ€ν•΄ μ•Œμ•„λ³΄μž!

AIλ₯Ό μ μš©ν•œ 적을 λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” Behavior Treeλ₯Ό 빼놓을 수 μ—†λ‹€.
λ˜ν•œ Behavior Treeν•˜λ©΄ 같이 따라 μ˜€λŠ” Black Board에 λŒ€ν•΄μ„œλ„ ν•¨κ»˜ μ•Œμ•„ λ³΄κ² μŠ΅λ‹ˆλ‹€.

언리얼 엔진5 라이트 곡식 λ¬Έμ„œ


λ³Έλ‘ 


🌳 ν–‰λ™νŠΈλ¦¬(Behavior Tree)

AIλŠ” μ—¬λŸ¬ 상황에 λŒ€ν•΄μ„œ μ–΄λ– ν•œ 행동을 ν–‰ν•˜λ„λ‘ λ§Œλ“€μ–΄μ§„λ‹€.

적을 마주치면 μ „νˆ¬ μƒνƒœκ°€ λœλ‹€λ˜μ§€,
μ‹œμ•Όμ—μ„œ λ†“μΉ˜λ©΄ 주변을 μˆ˜μƒ‰ν•œλ‹€ λ“±λ“±μ˜ μƒνƒœλ₯Ό κ°€μ Έμ•Ό ν•œλ‹€.

μ—¬λŸ¬ AIλ₯Ό μ œμž‘ν•˜κΈ° μœ„ν•œ 방법이 μžˆλŠ”λ° 언리얼 μ—”μ§„μ—μ„œλŠ” ν–‰λ™νŠΈλ¦¬ (Behavior Tree)λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•  수 μžˆλ‹€.

ν–‰λ™νŠΈλ¦¬λŠ” λ…Έλ“œ μ•„λž˜μ˜ μ’ŒμΈ‘μ—μ„œλΆ€ν„° 우츑의 μš°μ„ μˆœμœ„λ₯Ό 가지고 μ‹€ν–‰λœλ‹€.

μ’ŒμΈ‘μ— μžˆλŠ” λ…Έλ“œλΆ€ν„° μ‹€ν–‰λ˜κ³ ,
μ’ŒμΈ‘μ— μžˆμ„μˆ˜λ‘ 높은 μš°μ„ μˆœμœ„λ₯Ό 가진닀.

이λ₯Ό μ•Œμ•„λ‘μž.

BlackBoardμ™€μ˜ 관계

ν–‰λ™νŠΈλ¦¬λŠ” 늘 λΈ”λž™λ³΄λ“œμ™€ ν•¨κ»˜ ν•œλ‹€.

λΈ”λž™λ³΄λ“œλŠ” AI의 'λ‡Œ'이닀.
AIκ°€ νŒλ‹¨μ„ ν•˜κΈ° μœ„ν•œ 데이터λ₯Ό μ €μž₯ν•˜λŠ” 역할을 ν•œλ‹€.

ν–‰λ™νŠΈλ¦¬λŠ” λΈ”λž™λ³΄λ“œκ°€ 가진 데이터λ₯Ό 기반으둜 μ˜μ‚¬κ²°μ •μ„ 내리고 μ‹€ν–‰λœλ‹€.

이 관계λ₯Ό 잘 μ•Œμ•„λ‘μž.

ν–‰λ™νŠΈλ¦¬ λ…Έλ“œ μ’…λ₯˜

ν–‰λ™νŠΈλ¦¬λŠ” 5κ°€μ§€μ˜ λ…Έλ“œλ₯Ό κ°€μ§€λŠ”λ° ν•˜λ‚˜μ”© μ•Œμ•„λ³΄κ² λ‹€.

  1. 루트 (Root)
  2. 컴포짓 (Composite)
  3. λ°μ½”λ ˆμ΄ν„° (Decorator)
  4. νƒœμŠ€ν¬ (Task)
  5. μ„œλΉ„μŠ€ (Service)

ν•˜λ‚˜μ”© μ•Œμ•„λ³΄μž. πŸ‘


루트 (Root)

루트 λ…Έλ“œλŠ” BTλ₯Ό μƒμ„±ν•˜λ©΄ 기본으둜 μ œκ³΅λ˜μ–΄ μžˆλŠ” λ…Έλ“œμ΄λ‹€.

ν–‰λ™νŠΈλ¦¬μ˜ μ‹œμž‘μ μœΌλ‘œ, main()ν•¨μˆ˜μ™€ κ°™λ‹€κ³  보면 λœλ‹€.

μ•„λž˜λ‘œ 1개의 μ—°κ²°λ§Œ ν•  수 μžˆλ‹€.

λ˜ν•œ, λ°μ½”λ ˆμ΄ν„°λ‚˜ μ„œλΉ„μŠ€λ₯Ό μΆ”κ°€ν•  수 μ—†λ‹€.


컴포짓 (Composite)

컴포짓 λ…Έλ“œλŠ” 흐름이 μ‹€ν–‰λ˜λŠ” κΈ°λ³Έ κ·œμΉ™μ„ μ •μ˜ν•©λ‹ˆλ‹€.

컴포짓 λ…Έλ“œλŠ” 3개의 μ’…λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

  1. μ…€λ ‰ν„°(Selector)
  2. μ‹œν€€μŠ€(Sequence)
  3. μ‹¬ν”Œ 페러렐(Simple Parallel)

μ…€λŸ­ν„°(Selector)

μ…€λ ‰ν„°λŠ” μžμ‹ λ…Έλ“œ 쀑 ν•˜λ‚˜λΌλ„ μ„±κ³΅ν•˜λ©΄ μ„±κ³΅μœΌλ‘œ νŒλ‹¨ν•œλ‹€.
λ˜ν•œ 성곡 μ‹œ 싀행이 μ€‘μ§€λœλ‹€.

λͺ¨λ“  μžμ‹μ΄ μ‹€νŒ¨ν•˜λ©΄ 셀렉터도 μ‹€νŒ¨ν•œ κ²ƒμœΌλ‘œ κ°„μ£Όν•œλ‹€.

μ‹œν€€μŠ€(Sequence)

μ‹œν€€μŠ€λŠ” 단 ν•˜λ‚˜μ˜ μžμ‹λ§Œ μ‹€νŒ¨ν•΄λ„ μ‹€νŒ¨λ‘œ κ°„μ£Όν•œλ‹€.
λ˜ν•œ 싀행이 μ€‘μ§€λœλ‹€.

λͺ¨λ“  μžμ‹λ“€μ΄ 성곡을 ν•΄μ•Ό μ„±κ³΅μœΌλ‘œ κ°„μ£Όλœλ‹€.

μ‹¬ν”Œ 페러렐(Simple Parallel)

μ‹¬ν”Œ 페러렐 λ…Έλ“œλŠ” ν•˜λ‚˜μ˜ 메인 νƒœμŠ€ν¬λ₯Ό ν—ˆμš©ν•œλ‹€.

메인 νƒœμŠ€ν¬κ°€ μ™„λ£Œλ˜μ—ˆμ„ λ•Œ,
Finish의 섀정에 따라 λ…Έλ“œκ°€ μ¦‰μ‹œ μ™„λ£ŒμΈμ§€, Secondary 트리λ₯Ό 쀑단해야 ν•˜λŠ”μ§€, μ§€μ—°ν• μ§€μ˜ μ—¬λΆ€λ₯Ό κ²°μ •ν•œλ‹€.


λ°μ½”λ ˆμ΄ν„° (Decorator)

λ°μ½”λ ˆμ΄ν„°λŠ” ν–‰λ™νŠΈλ¦¬μ˜ IF문으둜 μ‘°κ±΄μ ˆμ— ν•΄λ‹Ήν•œλ‹€.

μ»€μŠ€ν…€ λ°μ½”λ ˆμ΄ν„°λ₯Ό μƒμ„±ν•˜μ—¬ μ›ν•˜λŠ” 쑰건에 따라 λ…Έλ“œμ˜ 싀행을 μ œμ–΄ν•  수 μžˆλ‹€.

μ•„λž˜ μ‚¬μ§„μ²˜λŸΌ λ…Έλ“œμ— λ°μ½”λ ˆμ΄ν„°λ₯Ό μΆ”κ°€ν•˜μ—¬ μ œμ–΄ν•œλ‹€.


νƒœμŠ€ν¬ (Task)

νƒœμŠ€ν¬λŠ” 이동, 곡격, 포컀슀 λ“± λΈ”λž™λ³΄λ“œμ˜ κ°’ μ‘°μ •κ³Ό 같은 μž‘μ—…μ„ ν•©λ‹ˆλ‹€.

ν•„μš”ν•œ μž‘μ—…μ„ μ»€μŠ€ν…€μœΌλ‘œ μƒμ„±ν•˜μ—¬ ν–‰λ™νŠΈλ¦¬μ˜ 핡심 κ΅¬ν˜„μ„ λ§Œλ“€ 수 μžˆλ‹€


μ„œλΉ„μŠ€ (Service)

μ„œλΉ„μŠ€λŠ” 컴포짓 λ…Έλ“œκ°€ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ 정해진 λΉˆλ„μ— λ§žμΆ°μ„œ μ‹€ν–‰λœλ‹€.

λ˜ν•œ λΈ”λž™λ³΄λ“œμ˜ λ³€μˆ˜λ₯Ό μ—…λ°μ΄νŠΈ μ‹œμΌœμ€€λ‹€.

μ•„λž˜ 사진과 같이 μ„œλΉ„μŠ€λ₯Ό 컴포짓 λ…Έλ“œμ— μΆ”κ°€ν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

λ˜ν•œ ν•„μš”ν•œ μ„œλΉ„μŠ€λ₯Ό μ»€μŠ€ν…€μœΌλ‘œ κ΅¬ν˜„ν•  수 μžˆλ‹€.


마무리

AIλŠ” κ²Œμž„μ—μ„œ 맀우 μ€‘μš”ν•œ μš”μ†Œμ΄λ‹€.
ν”Œλ ˆμ΄μ–΄μ™€ 적이 μ‘°μš°ν–ˆλŠ”λ° 적이 λ©€λš±νžˆ μ„œμžˆλ‹€κ±°λ‚˜,
μΆ”κ²©ν•˜μ§€ μ•Šκ³  λ°˜λŒ€ λ°©ν–₯으둜 달린닀면 ν”Œλ ˆμ΄ 쀑 κ²Œμž„μ— λŒ€ν•œ λͺ°μž…도가 ν™• λ–¨μ–΄μ§ˆ 것이닀.

κ·Έλž˜μ„œ 언리얼 엔진은 ν–‰λ™νŠΈλ¦¬λ₯Ό ν†΅ν•΄μ„œ 효과적인 AIλ₯Ό λ§Œλ“€ 수 μžˆλ„λ‘ ν•œλ‹€.

ν–‰λ™νŠΈλ¦¬λŠ” λ‚œμ΄λ„κ°€ 쑰금 λ†’λ‹€λŠ” 것이 λ‹¨μ μ΄μ§€λ§Œ, μ—°μŠ΅ν•˜λ‹€λ³΄λ©΄ μ‹€ν–‰ 흐름이 이해가 λœλ‹€.

λ˜ν•œ 본인의 κ²Œμž„μ— λ§žλŠ” AIλ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„œ 슀슀둜 νƒœμŠ€ν¬λ₯Ό λ§Œλ“€κ³  λ°μ½”λ ˆμ΄ν„°λ₯Ό λΆ™μ—¬ λ‚˜κ°€λ‹€λ³΄λ©΄ κ²Œμž„μ„ 더 λΉ›λ‚˜κ²Œ ν•΄μ£ΌλŠ” λ©‹μžˆλŠ” AIλ₯Ό λ§Œλ“€ 수 μžˆμ„ 것이닀.

profile
κ²Œμž„ κ°œλ°œμžκ°€ λ˜μ–΄λ³΄μž

0개의 λŒ“κΈ€