์•ˆ๋…• ๋‹ค๋“ค ์ž˜ ์ง€๋‚ด๊ณ  ์žˆ์–ด?

๊ณ ์ •๋‹‰์ธ์ง€ ๋ญ”์ง€ ์•”ํŠผ ๊ทธ๋Ÿฐ๊ฒŒ ์žˆ๋Š”์ค„๋„ ๋ชจ๋ฅด๊ณ  ์žˆ๋‹ค๊ฐ€ ํ•จ ๋‚˜๋„ ์‹ ์ฒญํ•ด๋ด„.

์ด๋‹ฌ ์ดˆ์— ai ๋งŒ๋“ค๋ ค๊ณ  ๊ตฌ์ƒ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ

์‚๊ฑฑ๊ฑฐ๋ฆฌ์ง€๋งŒ ๊ทธ๋Ÿญ์ €๋Ÿญ ์›€์ง์ด๋Š” ai ๋งŒ๋“œ๋Š”๋ฐ ๊ฑฐ์˜ ํ•œ๋‹ฌ์ด ์ง€๋‚˜๊ฐ”์–ด

์š”์ฆ˜ ๊ฐœ๋ฐœ์ผ์ง€ ์˜ฌ๋ผ์˜ค๋Š” ๊ฒƒ๋“ค ๋ณด๋ฉด ์ข‹์€ ์ž๊ทน๋„ ๋งŽ์ด ๋˜๊ณ  ๋„์›€๋„ ๋งŽ์ด ๋˜์„œ ๊ณ ๋งˆ์šด ๋งˆ์Œ์ด ๋งŽ์ด ๋“ฌ


์•„๋ฌดํŠผ ๋‚˜๋„ ๊ฐœ๋ฐœ์ผ์ง€ ์ผ๋‹จ ์จ๋ด„.


๋™์˜์ƒ์€ ์˜ฌ๋ฆฌ๋ฉด ์™œ ๋งจ๋‚  ์‚ญ์ œ๋๋‹ค๊ณ  ๋œจ๋Š”์ง€ ๋ชจ๋ฅด๊ฒƒ๋„ค ๊ธ€ ์˜ฌ๋ฆฌ๊ณ ๋‚˜์„œ ํ™•์ธํ•˜๋‹ˆ ์•ˆ๋ณด์ด๊ธธ๋ž˜ ์œ ํŠœ๋ธŒ๋„ ํ•จ๊ป˜ ์ฒจ๋ถ€ํ•จ.

https://youtu.be/byjYiwad5jA


์ด๋ฒˆ๋‹ฌ ์ดˆ์— ์ธ๊ณต์ง€๋Šฅ ๊ตฌํ˜„์„ ์œ„ํ•ด์„œ ์งˆ๋ฌธ ์˜ฌ๋ ธ์—ˆ๋Š”๋ฐ ๋‹ต๊ธ€ ์ž์„ธํžˆ ๋‹ฌ์•„์ค˜์„œ ๋„ˆ๋ฌด ๋งŽ์€ ๋„์›€ ๋˜์–ด์„œ ๊ฐ์‚ฌ์˜ ๋ง์”€์„ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์•„๋ฌดํŠผ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ๋Š” ์‚ฌ๋žŒ์ด ์ธ์ง€ํ•˜๊ณ  ํŒ๋‹จํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•ด์„œ ๋‚˜๋ˆ ์คฌ์–ด

์ด๊ฑธ ํ•˜๋Š”๋ฐ ์–ธ๋ฆฌ์–ผ์—”์ง„์„ ๋งŽ์ด ์ฐธ๊ณ ํ–ˆ์–ด. ์ด๋Ÿด๊ฑฐ๋ฉด ๊ทธ๋ƒฅ ์–ธ๋ฆฌ์–ผ ์“ฐ๋ฉด ๋  ๊ฒƒ ๊ฐ™์ง€๋งŒ, ๋‚œ ์œ ๋‹ˆํ‹ฐ๊ฐ€ ๋” ์ข‹์€๊ฑธ.....

https://www.youtube.com/watch?v=iY1jnFvHgbE


์•„๋ฌดํŠผ ์ธ๊ณต์ง€๋Šฅ์˜ ๊ตฌ์กฐ๋ฅผ

๋ฌด์˜์‹์ ์ธ ์›€์ง์ž„ / ์ธ์ง€์ฒด๊ณ„ / ํŒ๋‹จ๊ธฐ๊ด€ ์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ์ด๊ฑธ


๋ฌด์˜์‹์ ์ธ ์›€์ง์ž„ - FSM-Locomotor

ํŒ๋‹จ๊ธฐ๊ด€ - BT, EQS

์ธ์ง€์ฒด๊ณ„ - Perception, Sensor


๋กœ ์žก์•˜์–ด.


๋ฌด์˜์‹์ ์ธ ์›€์ง์ž„์„ ๋‹ด๋‹นํ•˜๋Š” Locomotor๋Š” ์บ๋ฆญํ„ฐ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์›€์ง์ž„์„ ์œ„ํ•œ ํ•จ์ˆ˜ ๋ฉ์–ด๋ฆฌ์•ผ.

๊ทธ๋ƒฅ ์ผ๋ฐ˜์ ์ธ Player Controller๊ฐ™์€๊ฑด๋ฐ updateํ•จ์ˆ˜์—์„œ ๋Œ์•„๊ฐ€๋Š” ๊ฑด ์—†๊ณ 

FSM์˜ update์—์„œ Locomotor์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ์–ด.

์ด์ „์— ์ข€๋น„ํ‚ค ํ˜•๋‹˜๊ป˜์„œ ๊ณต๊ฐœํ•ด์ฃผ์‹  ์ฝ”๋“œ์—์„œ ๋งŽ์€ ๋„์›€์„ ๋ฐ›์•˜์–ด. ๋‹ค์‹œํ•œ๋ฒˆ ๊ฐ์‚ฌ์˜ ๋ง์”€์„ ์ „ํ•ฉ๋‹ˆ๋‹ค.


ํŒ๋‹จ๊ธฐ๊ด€์€ BT(ํ–‰๋™ํŠธ๋ฆฌ)์™€ EQS(ํ™˜๊ฒฝ ์ฟผ๋ฆฌ ์‹œ์Šคํ…œ)์ด์•ผ.


BT๋Š” ์œ ํŠœ๋ธŒ ๋ณด๊ณ  ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋‹ค๊ฐ€ ๋Œ€๊ฐ€๋ฆฌ ๊นจ์ง€๊ณ ๋‚˜์„œ PandaBT ๋ผ๋Š”๊ฑธ ๋ฐœ๊ฒฌํ–ˆ๋Š”๋ฐ


http://www.pandabehaviour.com


๋ฌด๋ฃŒ๋ฒ„์ „๋„ ์žˆ๋Š”๋ฐ ๋งค์šฐ ์“ธ๋งŒํ•œ ๊ฒƒ ๊ฐ™์•„. ์˜ˆ์ œ๋„ ํ’๋ถ€ํ•˜๊ณ  ์‚ฌ์šฉ๋ฒ•๋„ ๋„ˆ๋ฌด ๊ฐ„ํŽธํ•˜๋„ค

์ด ์—์…‹์˜ ์žฅ์ ์œผ๋กœ๋Š” ๋‹ค๋ฅธ BT๋Š” ๊ทธ๋ž˜ํ”ฝ ๋…ธ๋“œ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•ด์„œ ์—๋””ํ„ฐ๋„ ๋”ฐ๋กœ ์กด์žฌํ•˜๊ณ  ์ข€ ๋ฌด๊ฑฐ์šด ๋А๋‚Œ์ด ์žˆ๋Š”๋ฐ


PandaBT๋Š” ๊ทธ์ € ์ปดํฌ๋„ŒํŠธ ํ•˜๋‚˜๋ผ์„œ ๊ฐ„ํŽธํ•˜๋„ค.

์ปดํฌ๋„ŒํŠธ์— ์ž์ฒด ์Šคํฌ๋ฆฝํŠธ๋กœ ์ •์˜ํ•ด์ฃผ๋Š” ์‹์ด์•ผ.

๊ทผ๋ฐ ์ด๊ฒŒ ๊ทธ๋ƒฅ txtํŒŒ์ผ์ด๋ผ์„œ ํ”„๋กœ๋ฒ„์ „์— ๊ธฐ๋Šฅ์ธ ์—๋””ํ„ฐ์—์„œ ์Šคํฌ๋ฆฝํŠธ ํŽธ์ง‘๊ธฐ๋Šฅ์ด ์—†์–ด์„œ ์ข€ ๋ถˆํŽธํ•ด์„œ ์ฐพ์•„๋ณด๋‹ˆ๊นŒ

vs code ์• ๋“œ์˜จ์œผ๋กœ syntax highlight ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ทธ๊ฑธ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด.


https://github.com/Aldlevine/panda-language ์—ฌ๊ธฐ์„œ ๋ฆด๋ฆฌ์ฆˆ๋œ vsix๋กœ vscode์— ์ง์ ‘ ์„ค์น˜ํ•ด์„œ ์“ฐ๋ฉด ๋ผ.


vsix ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์€ ์—ฌ๊ธฐ๋กœ https://haenny.tistory.com/329



์œ ๋ฃŒ๋ฒ„์ „์€ ์—ฌ๊ธฐ์—๋‹ค๊ฐ€ ๋””๋ฒ„๊ทธ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ๊ธฐ๋Šฅ (๊ทธ๋ƒฅ ์œ ๋‹ˆํ‹ฐ ์—๋””ํ„ฐ ํฌ์ฆˆ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ํ•จ) ์ถ”๊ฐ€๋œ๊ฑด๋ฐ 45๋‹ฌ๋Ÿฌ๋‚˜ ๋˜๊ณ 

์ง€๊ธˆ์€ ๊ตณ์ด ์—†์–ด๋„ ์“ธ๋งŒํ•ด์„œ ๊ทธ๋ƒฅ ์“ฐ๋Š”์ค‘์ด์•ผ. ๋‚˜์ค‘์— ๋ธ”ํ”„ํ• ์ธ๊ฐ™์€๊ฑฐ ํ•˜๋ฉด ์‚ฌ๋ด์•ผ์ง€


์–ธ๋ฆฌ์–ผ์—”์ง„์„ ๋ฒค์น˜๋งˆํ‚นํ•˜๋ฉด์„œ ์ œ์ผ ์ฃผ๋ชฉํ•œ ๊ฒƒ์€ EQS (environment query system)์•ผ


discreteํ•˜๊ฒŒ ์ฃผ๋ณ€ ์ง€ํ˜•์„ ์ƒ˜ํ”Œ๋งํ•ด์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ ์ˆ˜๋ฅผ ๋งค๊ฒจ, ai๊ฐ€ ๋ชฉํ‘œ์ง€์ ์„ ์„ค์ •ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” ์‹œ์Šคํ…œ์ด์•ผ.

๋‚ด๊ฐ€ ์„ค๋ช…์„ ์ž˜ ๋ชปํ•ด์„œ ํ˜น์‹œ๋‚˜ ๊ถ๊ธˆํ•œ ์‚ฌ๋žŒ๋“ค์€ ์–ธ๋ฆฌ์–ผ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋„๋ก...

https://docs.unrealengine.com/5.0/ko/artificial-intelligence-in-unreal-engine/


์•„๋ฌดํŠผ ์ด๊ฑด ์œ ๋‹ˆํ‹ฐ์— ์—†์œผ๋‹ˆ ๊ตฌํ˜„ํ•ด ๋ณด๊ธฐ ์ „์— ๊นƒํ—ˆ๋ธŒ์— ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ

https://github.com/sotanmochi/EnvironmentQueryForUnity


์ด๋ฏธ ์žˆ๋”๋ผ๊ณ  ๊ทธ๋ž˜์„œ ์ž˜ ๋ฐ๋ ค์™€์„œ ์กฐ๊ธˆ์”ฉ ์ˆ˜์ •ํ•ด ๋ณด๋ฉด์„œ ๋‹ค๋“ฌ๊ณ  ์žˆ์–ด.

๊ธฐ๋ณธ์ ์ธ๊ฒƒ๋งŒ ๊ตฌํ˜„๋˜์–ด์žˆ์ง€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์—” ์•„์ง ์†๋ด์•ผ ํ•  ๊ณณ์ด ๋งŽ์•„.


์œ ๋‹ˆํ‹ฐ์—์„œ ๊ตฌํ˜„์€ navmesh ์œ„์— ์ƒ˜ํ”Œ๋ง ๊ฐ€๋Šฅํ•œ positions์— ์ ์ˆ˜๋ฅผ ๋‚ด๊ณ  ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜์˜ position์„ best position์œผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ์‹œ์Šคํ…œ์ด์•ผ.


์ƒ˜ํ”Œ๋ง ๋œ position๋“ค์— ์ ์ˆ˜๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ์ž‘์—…์„ queryTest๋ผ๊ณ  ํ•˜๋˜๋ฐ

์ฟผ๋ฆฌํ…Œ์ŠคํŠธ๊ฐ€ ๋ณ„๋กœ ๊ตฌํ˜„๋œ ๊ฒŒ ์—†์–ด์„œ ์ข€ ๋” ์—ฐ๊ตฌ๋ฅผ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„.


์ธ์ง€์ฒด๊ณ„๋Š” ๋ญ ๋ณ„๊ฑฐ ์—†๊ณ  ๊ทธ๋ƒฅ ์„ผ์„œ๋“ค์„ ๊ฐ€์ง€๊ณ  ์„ผ์„œ์— ๋“ค์–ด์˜จ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์„œ

BT๊ฐ€ ์ฐธ์กฐ ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ์–ด.

๋‚˜๋Š” ์ด๊ฑธ ๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ์ ‘๊ทผํ•ด์„œ ์‚ฝ์งˆ์„ ๋งŽ์ด ํ–ˆ๋Š”๋ฐ. ๋‹ค๋“ค ๊ทธ๋ƒฅ overlapsphere ์“ฐ๊ณ  ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค๋”๋ผ๊ณ .

๋‚˜๋„ ์ฝ”๋“œ ์„œ๋„ˆ๋ฒˆ ๋’ค์—Ž์œผ๋ฉด์„œ ์ฐธ ์‚ฝ์งˆ ๋งŽ์ด ํ–ˆ๋‹ค ์ƒ๊ฐ์ด ๋“ฌ...


์ด์ œ ์ฒญ๊ฐ์„ผ์„œ ๋งŒ๋“ค์–ด ๋ณด๋ ค๋Š”๋ฐ ์ด๊ฑฐ ํ•˜๋‹ค๊ฐ€ 10์›” ๋  ๊ฒƒ ๊ฐ™์•„... ์–ธ์ œ ์ถœ์‹œํ•œ๋‹ด???

์ฒญ๊ฐ์„ผ์„œ๋Š” ์–ด์บ ์ ‘๊ทผํ•ด์•ผ ํ• ๊นŒ...์‚ฝ์งˆ ์ค„์ด๊ณ  ์‹ถ๋‹ค.


์•”ํŠผ ์ด๋งŒ ์ค„์ด๊ณ  ์ž ์ด๋‚˜ ์ž์•ผ๊ฒƒ๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์Œ ๊ฐœ๋ฐœ์ผ์ง€๋กœ ๋‹ค์‹œ ์ธ์‚ฌํ• ๊ฒŒ ์•ˆ๋…•~~~~