[UE5] ๐Ÿค– ํ–‰๋™ํŠธ๋ฆฌ๋กœ AI ์  ๋งŒ๋“ค๊ธฐ (2)

Singery00ยท2024๋…„ 4์›” 16์ผ
0

UE5 Blueprint

๋ชฉ๋ก ๋ณด๊ธฐ
18/29
post-thumbnail

๊ฐœ์š”

๐Ÿค– Behavior Tree๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง์ ‘ AI๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์ž.

์ด์ „ ํฌ์ŠคํŒ…์—์„œ AI๊ฐ€ ๋”ฐ๋ผ์™€์„œ ํ—ˆ์šฉ๋ฒ”์œ„๋‚ด๋กœ ๋“ค์–ด์˜จ๋‹ค๋ฉด ๊ณต๊ฒฉํ•˜๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ํ–‰๋™ํŠธ๋ฆฌ๋ฅผ ์ œ์ž‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์บ๋ฆญํ„ฐ๊ฐ€ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ง€์ผœ๋ณด๋„๋ก Focus ๊ธฐ๋Šฅ์„ ๋„ฃ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ ์•ž์œผ๋กœ ์„ค๋ช…์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด์„œ
ํ–‰๋™ํŠธ๋ฆฌ (Behavior Tree)๋Š” ์•ž์œผ๋กœ BT๋กœ,
๋ธ”๋ž™๋ณด๋“œ (Black Board)๋Š” ์•ž์œผ๋กœ BB๋กœ,
AI Controller๋Š” AIC๋ผ๊ณ  ๋ถ€๋ฅผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

Ali Elzoheiry๋‹˜์˜ Smart AI ๊ฐ•์˜ ์˜์ƒ์„ ๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์‹œ๋ฆฌ์ฆˆ์˜ ์–‘์ด ๋งŽ์ง€๋งŒ ์ •๋ฆฌ๊ฐ€ ์•„์ฃผ ์ž˜ ๋˜์–ด ์žˆ์œผ๋‹ˆ ํ•œ๋ฒˆ์”ฉ ์‹œ์ฒญ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Ali Elzoheiry ์œ ํˆฌ๋ธŒ


๋ณธ๋ก 


๐Ÿ‘€ Focus Player

ํ˜„์žฌ ๋ฌธ์ œ์ 

ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  AI๋ฅผ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด๋ฅผ ํ–ฅํ•ด ๋‹ค๊ฐ€์™€ ํ—ˆ์šฉ๋ฒ”์œ„๋‚ด์— ๋„๋‹ฌํ•˜๋ฉด ๊ณต๊ฒฉ์„ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ํ—ˆ์šฉ๋ฒ”์œ„ ๋‚ด์—์„œ ๋’ค๋Œ์•„ ๊ฐˆ ๋•Œ,
ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๋ฐ”๋ผ๋ณด์ง€ ์•Š๊ณ  ๊ณต๊ฒฉ์„ ์ด์–ด ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

์ด๋Š” ๋Œ€์ƒ์„ ์ณ๋‹ค๋ณด๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด Focus Task๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

BTT_Focus ์ถ”๊ฐ€

BT๋กœ ์ด๋™ํ•ด์„œ ์ƒˆ๋กœ์šด ํƒœ์Šคํฌ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Task ํด๋”์— BTT_FocusTarget์„ ์ถ”๊ฐ€ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
Task ํด๋”๊ฐ€ ์—†๋‹ค๋ฉด ํด๋” ์ •๋ฆฌ๋„ ํ•  ๊ฒธ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

BTT_Focus ์ž‘์„ฑ

Excute์™€ Finish Excute๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  Set Focus๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

SetFocus๋…ธ๋“œ๋Š” ๋ฐ”๋ผ๋ณด๋Š” ์ฃผ์ฒด์™€ ๋ฐ”๋ผ๋ณผ ๋Œ€์ƒ์„ ๋„ฃ์–ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ Owner Controller๋ฅผ 1๋ฒˆ์งธ ํƒ€๊ฒŸ์œผ๋กœ ๋„ฃ์–ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ฐ”๋ผ๋ณด์•„์•ผํ•  ๋Œ€์ƒ์„ ๋„ฃ์–ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” BB์— ๊ณต๊ฒฉ ๋Œ€์ƒ์„ Attack Target์œผ๋กœ ์ •์˜ํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

BB์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
AttackTargetKey๋ฅผ Blackboard Key Selector๋กœ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

Get Attack Target Key๋ฅผ ๊ฐ€์ ธ์™€์„œ Get Blackboard Value as Actor๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  SetFocus์˜ New Focus์— ๋„ฃ์–ด ์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ์˜†์— ๋ˆˆ ๋ชจ์–‘์„ ํด๋ฆญํ•ด์„œ ๋œฌ ๋ชจ์–‘์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š”.
๊ฐ๊ฒจ ์žˆ์œผ๋ฉด private ๋œจ๊ณ  ์žˆ์œผ๋ฉด public์œผ๋กœ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

โ—์ปดํŒŒ์ผ ์ €์žฅโ—ํ•ด์ฃผ์„ธ์š”.

๐ŸŒณ BT ์ˆ˜์ •

BTT FocusTarget ์ถ”๊ฐ€

BT์˜ ํ๋ฆ„์€ ์ขŒ์ธก์—์„œ๋ถ€ํ„ฐ ํ๋ฅธ๋‹ค๊ณ  ํ–ˆ์ฃ ?
๊ณต๊ฒฉํ•˜๊ธฐ์ „์— ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ณ๋‹ค ๋ณด์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ฒฉ ํƒœ์Šคํฌ ์ขŒ์ธก์— ๋„ฃ์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

BTT FocusTarget ํ‚ค ๊ฐ’ ์ง€์ •

๊ทธ๋ฆฌ๊ณ  ForcusTarget ํƒœ์Šคํฌ๋ฅผ ํด๋ฆญํ•ด์„œ ์šฐ์ธก์˜ Details๋ฅผ ๋ด์ฃผ์„ธ์š”.

์šฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑํ•œ Attack Target Key ๋ณ€์ˆ˜๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ Attack Target์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š”.

ํ˜น์‹œ ๋ณ€์ˆ˜๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค๋ฉด ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ˆˆ ๋ชจ์–‘ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด public์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•ด์ฃผ๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Clear Focus

์ž ๋ฌธ์ œ ํ•ด๊ฒฐ๊ณ  ๋™์‹œ์— ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ ์˜ Focus๊ฐ€ ๋Œ€์ƒ์—๊ฒŒ ๊ณ ์ •๋˜์–ด ๋ฌธ์›Œํฌ๋„ ํ•˜๊ณ  ์‚ฌ์ด๋“œ์Šคํƒญ๋„ ๋ฐŸ์Šต๋‹ˆ๋‹ค.

Clear Focus๋ฅผ ์œ„ํ•œ ์ž‘์—…๋„ ์ง„ํ–‰ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

BTT_ClearFocus ์ถ”๊ฐ€

BTT_FocusTarget๊ณผ ๋™์ผํ•œ ์ž‘์—…์œผ๋กœ ์ƒˆ๋กœ์šด ํƒœ์Šคํฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  BTT_ClearFocus๋กœ ์ด๋ฆ„ ์ง€์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

BTT_ClearFocus ์ž‘์„ฑ

์‹คํ–‰ ๋…ธ๋“œ๋ฅผ ๋„ฃ์–ด ์ค€ ๋’ค, ClearFocus ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ด์–ด ์ฃผ๋ฉด ๋์ž…๋‹ˆ๋‹ค.

์ฒดํฌ ์žŠ์ง€ ๋ง์•„ ์ฃผ์„ธ์š”.
๋ฐฉ๊ธˆ ์ฒดํฌ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ์ž‘์„ฑํ•˜๋‹ค๊ฐ€ ๋ฒ„๊ทธ๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค.

๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์ฒดํฌ๋ฅผ ํ•ด์ œํ•œ ๋’ค ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ง์ ‘ ์‚ดํŽด๋ด์ฃผ์„ธ์š”.

โ—์ปดํŒŒ์ผ ์ €์žฅโ—ํ•ด์ฃผ์„ธ์š”.

๐ŸŒณ BT ์ˆ˜์ •

ClearFocus๋Š” ํ๋ฆ„ ์ƒ ์–ด๋””์— ๋„ฃ์–ด์•ผ ํ• ๊นŒ์š”?

๋ชจ๋“  ํ–‰๋™ ์ด์ „์— ๊ณ ์ •๋œ ์ž์›์„ ํ•ด์ œํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ฒ˜์Œ์— ๋„ฃ์–ด ์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ฉด

๋‹ค์‹œ ์ด๋™์‹œ์—๋Š” Focus๊ฐ€ ํ’€๋ฆฌ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

์ด๊ฒƒ์œผ๋กœ ๊ณต๊ฒฉ์ „์— ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ , ํ–‰๋™ ์ด์ „์— ํฌ์ปค์Šค๊ฐ€ ํ’€๋ฆฌ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด๊ฒŒ ์ •์„์€ ์•„๋‹ˆ๋‹ˆ ๊ฐ์ž์˜ ๋™์ž‘ ํ๋ฆ„์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.

์ƒ๊ฐ๋ณด๋‹ค ๊ธธ์–ด์ง„ ๊ฒƒ ๊ฐ™์•„ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ ํฌ์ŠคํŒ…์— ์ง„ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž

0๊ฐœ์˜ ๋Œ“๊ธ€