๐ค Behavior Tree๋ฅผ ์ฌ์ฉํด์ ์ง์ AI๋ฅผ ๊ตฌํํด๋ณด์.
์ด์ ํฌ์คํ ์์ AI๊ฐ ๋ฐ๋ผ์์ ํ์ฉ๋ฒ์๋ด๋ก ๋ค์ด์จ๋ค๋ฉด ๊ณต๊ฒฉํ๋ ๋ถ๋ถ๊น์ง ํ๋ํธ๋ฆฌ๋ฅผ ์ ์ํ์์ต๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ์บ๋ฆญํฐ๊ฐ ํ๋ ์ด์ด๋ฅผ ์ง์ผ๋ณด๋๋ก Focus ๊ธฐ๋ฅ์ ๋ฃ๊ฒ ์ต๋๋ค.
์ถ๊ฐ๋ก ์์ผ๋ก ์ค๋ช
์ ํธ์๋ฅผ ์ํด์
ํ๋ํธ๋ฆฌ (Behavior Tree)๋ ์์ผ๋ก BT๋ก,
๋ธ๋๋ณด๋ (Black Board)๋ ์์ผ๋ก BB๋ก,
AI Controller๋ AIC๋ผ๊ณ ๋ถ๋ฅผ ์์ ์
๋๋ค.
Ali Elzoheiry๋์ Smart AI ๊ฐ์ ์์์ ๋ณด๋ฉด์ ๊ณต๋ถํ์์ต๋๋ค.
์๋ฆฌ์ฆ์ ์์ด ๋ง์ง๋ง ์ ๋ฆฌ๊ฐ ์์ฃผ ์ ๋์ด ์์ผ๋ ํ๋ฒ์ฉ ์์ฒญ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
ํ์ฌ ์ฐ๋ฆฌ๊ฐ ๋ง๋ AI๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
ํ๋ ์ด์ด๋ฅผ ํฅํด ๋ค๊ฐ์ ํ์ฉ๋ฒ์๋ด์ ๋๋ฌํ๋ฉด ๊ณต๊ฒฉ์ ํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ํ๋ ์ด์ด๊ฐ ํ์ฉ๋ฒ์ ๋ด์์ ๋ค๋์ ๊ฐ ๋,
ํ๋ ์ด์ด๋ฅผ ๋ฐ๋ผ๋ณด์ง ์๊ณ ๊ณต๊ฒฉ์ ์ด์ด ๋๊ฐ๋๋ค.
์ด๋ ๋์์ ์ณ๋ค๋ณด๋๋ก ํ๋ ์๋ก์ด Focus Task๋ฅผ ๋ง๋ค์ด ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
BT๋ก ์ด๋ํด์ ์๋ก์ด ํ์คํฌ๋ฅผ ๋ง๋ค์ด ์ฃผ๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Task ํด๋์ BTT_FocusTarget์ ์ถ๊ฐํด์ฃผ๊ฒ ์ต๋๋ค.
Task ํด๋๊ฐ ์๋ค๋ฉด ํด๋ ์ ๋ฆฌ๋ ํ ๊ฒธ ์์ฑํด์ฃผ์ธ์.
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์ ํ๋ฆ์ ์ข์ธก์์๋ถํฐ ํ๋ฅธ๋ค๊ณ ํ์ฃ ?
๊ณต๊ฒฉํ๊ธฐ์ ์ ํ๋ ์ด์ด๋ฅผ ์ณ๋ค ๋ณด์์ผ ํฉ๋๋ค.
๊ณต๊ฒฉ ํ์คํฌ ์ข์ธก์ ๋ฃ์ด ์ฃผ๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ForcusTarget ํ์คํฌ๋ฅผ ํด๋ฆญํด์ ์ฐ์ธก์ Details๋ฅผ ๋ด์ฃผ์ธ์.
์ฐ๋ฆฌ๊ฐ ์์ฑํ Attack Target Key ๋ณ์๊ฐ์ด ์์ต๋๋ค.
์ด๋ฅผ Attack Target์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์.
ํน์ ๋ณ์๊ฐ ๋ณด์ด์ง ์๋๋ค๋ฉด ์์์ ์ค๋ช ํ ๋ ๋ชจ์ ๋ฒํผ์ ํด๋ฆญํด public์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์.
๊ทธ๋ฆฌ๊ณ ๋ค์ ์คํํด์ฃผ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ ๋ฌธ์ ํด๊ฒฐ๊ณ ๋์์ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ ์ Focus๊ฐ ๋์์๊ฒ ๊ณ ์ ๋์ด ๋ฌธ์ํฌ๋ ํ๊ณ ์ฌ์ด๋์คํญ๋ ๋ฐ์ต๋๋ค.
Clear Focus๋ฅผ ์ํ ์์ ๋ ์งํํด์ฃผ๊ฒ ์ต๋๋ค.
BTT_FocusTarget๊ณผ ๋์ผํ ์์ ์ผ๋ก ์๋ก์ด ํ์คํฌ๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์.
๊ทธ๋ฆฌ๊ณ BTT_ClearFocus๋ก ์ด๋ฆ ์ง์ด ์ฃผ๊ฒ ์ต๋๋ค.
์คํ ๋ ธ๋๋ฅผ ๋ฃ์ด ์ค ๋ค, ClearFocus ๋ ธ๋๋ฅผ ์ถ๊ฐํด์ ์ด์ด ์ฃผ๋ฉด ๋์ ๋๋ค.
์ฒดํฌ ์์ง ๋ง์ ์ฃผ์ธ์.
๋ฐฉ๊ธ ์ฒดํฌ๋ฅผ ํ์ง ์๊ณ ์์ฑํ๋ค๊ฐ ๋ฒ๊ทธ๊ฐ ๋ฌ์ต๋๋ค.
๊ถ๊ธํ์ ๋ถ๋ค์ ์ฒดํฌ๋ฅผ ํด์ ํ ๋ค ์ด๋ป๊ฒ ๋์ํ๋์ง ์ง์ ์ดํด๋ด์ฃผ์ธ์.
โ์ปดํ์ผ ์ ์ฅโํด์ฃผ์ธ์.
ClearFocus๋ ํ๋ฆ ์ ์ด๋์ ๋ฃ์ด์ผ ํ ๊น์?
๋ชจ๋ ํ๋ ์ด์ ์ ๊ณ ์ ๋ ์์์ ํด์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ฒ์์ ๋ฃ์ด ์ฃผ์ธ์.
๊ทธ๋ฆฌ๊ณ ์คํํด๋ณด๋ฉด
๋ค์ ์ด๋์์๋ Focus๊ฐ ํ๋ฆฌ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๊ฒ์ผ๋ก ๊ณต๊ฒฉ์ ์ ํ๋ ์ด์ด๋ฅผ ๋ฐ๋ผ๋ณด๊ณ , ํ๋ ์ด์ ์ ํฌ์ปค์ค๊ฐ ํ๋ฆฌ๋๋ก ๊ตฌํํ์์ต๋๋ค.
์ด๊ฒ ์ ์์ ์๋๋ ๊ฐ์์ ๋์ ํ๋ฆ์ ๋ง๊ฒ ์ฌ์ฉํด๋ณด์ธ์.
์๊ฐ๋ณด๋ค ๊ธธ์ด์ง ๊ฒ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋ค์ ํฌ์คํ ์ ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค.