๐Ÿ“˜TIL - ์–ธ๋ฆฌ์–ผ AI ๊ด€๋ จ ๊ฐœ๋… ์ ์šฉํ•œ ์ˆ ๋ž˜์žก๊ธฐ ๊ฒŒ์ž„ ์„ค๊ณ„

HappyCircleยท2026๋…„ 5์›” 1์ผ

Unreal ๊ฐœ๋ฐœ

๋ชฉ๋ก ๋ณด๊ธฐ
120/163

๐Ÿ“˜TIL - ์–ธ๋ฆฌ์–ผ AI ๊ด€๋ จ ๊ฐœ๋… ์ ์šฉํ•œ ์ˆ ๋ž˜์žก๊ธฐ ๊ฒŒ์ž„ ์„ค๊ณ„
๋ฐฐ๊ฒฝ

AI ๊ฒŒ์ž„ ๋””์ž์ธ ๊ฐ•์˜์™€ Behavior Tree, Blackboard ๋“ฑ ์–ธ๋ฆฌ์–ผ AI ๊ฐœ๋…์„ ํ•™์Šตํ•˜๋ฉด์„œ
์ด๋ก ์„ ์‹ค์ œ ๊ฒŒ์ž„ ์„ค๊ณ„์— ์ ์šฉํ•ด๋ณด๊ณ ์ž ํ–ˆ๋‹ค.

๊ฐ•์˜์˜ AI ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„ ๊ธฐํš ์˜ˆ์‹œ๋ฅผ ์ฐธ๊ณ ํ•ด,
์ƒํƒœ์— ๋”ฐ๋ผ ํ–‰๋™์ด ๋ฐ”๋€Œ๋Š” ๊ตฌ์กฐ๋ฅผ ์ง์ ‘ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ
์ˆ ๋ž˜์žก๊ธฐ ๊ฒŒ์ž„ ๊ธฐํš์„ ์ง„ํ–‰ํ–ˆ๋‹ค.


์ƒ์„ธ ์„ค๊ณ„ ๊ตฌ์กฐ

์ด๋ฒˆ ์ˆ ๋ž˜์žก๊ธฐ ๊ฒŒ์ž„์€ ๋‹จ์ˆœํžˆ โ€œ์žก๊ณ  ๋„๋ง๊ฐ€๋Š” ๊ฒŒ์ž„โ€์ด ์•„๋‹ˆ๋ผ,
์บ๋ฆญํ„ฐ์˜ ์—ญํ•  ์ƒํƒœ์— ๋”ฐ๋ผ ์ž…๋ ฅ, AI, ํ‘œ์‹œ, ํ„ด ์ง„ํ–‰์ด ๋ชจ๋‘ ๋ฐ”๋€Œ๋Š” ๊ตฌ์กฐ๋กœ ์„ค๊ณ„ํ–ˆ๋‹ค.

๊ฐ€์žฅ ์ค‘์‹ฌ์ด ๋˜๋Š” ๊ฐ’์€ bIsTagger์ด๋‹ค.

bIsTagger == true  โ†’ ์ˆ ๋ž˜
bIsTagger == false โ†’ ๋„๋ง์ž

์ด ๊ฐ’์€ CharacterBase์— ๋‘๊ณ , ํ”Œ๋ ˆ์ด์–ด์™€ Enemy AI๊ฐ€ ๋ชจ๋‘ ๊ณต์œ ํ•˜๋„๋ก ํ•œ๋‹ค.


ํด๋ž˜์Šค ๊ตฌ์กฐ

์ „์ฒด ํด๋ž˜์Šค ๊ตฌ์กฐ๋Š” ๋‹ค์Œ์ฒ˜๋Ÿผ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.

TagGameMode
 โ”œโ”€ ํ˜„์žฌ ํ„ด ๊ด€๋ฆฌ
 โ”œโ”€ ์ตœ์ดˆ ์ˆ ๋ž˜ ์ง€์ •
 โ”œโ”€ ์žก๊ธฐ ์„ฑ๊ณต ์ฒ˜๋ฆฌ
 โ””โ”€ ๊ฒŒ์ž„ ์ข…๋ฃŒ ํŒ๋‹จ

TagCharacterBase
 โ”œโ”€ bIsTagger
 โ”œโ”€ TagIndicatorMesh
 โ”œโ”€ SetTaggerState()
 โ”œโ”€ TryCatchTarget()
 โ””โ”€ OnTaggerStateChanged()

PlayerTagCharacter
 โ””โ”€ ํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ ์ฒ˜๋ฆฌ

EnemyTagCharacter
 โ””โ”€ AIController์™€ BehaviorTree ๊ธฐ๋ฐ˜ ํ–‰๋™ ์ฒ˜๋ฆฌ

EnemyTagAIController
 โ”œโ”€ Blackboard ๊ฐ’ ๊ฐฑ์‹ 
 โ””โ”€ BehaviorTree ์‹คํ–‰

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ˆ ๋ž˜ ์—ฌ๋ถ€์™€ ๊ณตํ†ต ์ƒํƒœ ์ฒ˜๋ฆฌ๋Š” CharacterBase๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ ,
ํ”Œ๋ ˆ์ด์–ด ์กฐ์ž‘๊ณผ AI ํŒ๋‹จ์€ ๊ฐ๊ฐ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.


CharacterBase ์—ญํ• 

TagCharacterBase๋Š” ํ”Œ๋ ˆ์ด์–ด์™€ AI๊ฐ€ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ค€ ํด๋ž˜์Šค๋‹ค.

์—ฌ๊ธฐ์—๋Š” ์ˆ ๋ž˜์žก๊ธฐ ๊ฒŒ์ž„์—์„œ ๋ฐ˜๋“œ์‹œ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š” ์ƒํƒœ์™€ ๊ธฐ๋Šฅ์„ ๋„ฃ๋Š”๋‹ค.

TagCharacterBase
 โ”œโ”€ bIsTagger
 โ”œโ”€ CatchRange
 โ”œโ”€ CatchCooldown
 โ”œโ”€ TagIndicatorMesh
 โ”œโ”€ SetTaggerState()
 โ”œโ”€ CanCatch()
 โ”œโ”€ TryCatchTarget()
 โ””โ”€ GetNearestCatchTarget()

bIsTagger๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋จธ๋ฆฌ ์œ„ ํ‘œ์‹œ๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•œ๋‹ค.

SetTaggerState(true)
โ†’ bIsTagger = true
โ†’ TagIndicatorMesh Visible

SetTaggerState(false)
โ†’ bIsTagger = false
โ†’ TagIndicatorMesh Hidden

์ฆ‰, ์ˆ ๋ž˜ ์—ฌ๋ถ€์™€ ์‹œ๊ฐ์  ํ‘œ์‹œ๊ฐ€ ๋”ฐ๋กœ ๋†€์ง€ ์•Š๋„๋ก
์ƒํƒœ ๋ณ€๊ฒฝ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ์ข‹๋‹ค.


์žก๊ธฐ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ

์žก๊ธฐ ๊ธฐ๋Šฅ์€ ์ˆ ๋ž˜์ผ ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.

bIsTagger == true
โ†’ ์žก๊ธฐ ๊ฐ€๋Šฅ

bIsTagger == false
โ†’ ์žก๊ธฐ ๋ถˆ๊ฐ€๋Šฅ

์žก๊ธฐ ํ๋ฆ„์€ ๋‹ค์Œ์ฒ˜๋Ÿผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์žก๊ธฐ ์ž…๋ ฅ ๋˜๋Š” AI ์žก๊ธฐ ์‹œ๋„
โ†’ ํ˜„์žฌ ์บ๋ฆญํ„ฐ๊ฐ€ ์ˆ ๋ž˜์ธ์ง€ ํ™•์ธ
โ†’ ์ฟจํƒ€์ž„ ํ™•์ธ
โ†’ ๋ฒ”์œ„ ๋‚ด ๋Œ€์ƒ ํƒ์ƒ‰
โ†’ ๋Œ€์ƒ์ด ์ˆ ๋ž˜๊ฐ€ ์•„๋‹Œ์ง€ ํ™•์ธ
โ†’ GameMode์— ์žก๊ธฐ ์„ฑ๊ณต ์š”์ฒญ
โ†’ ์—ญํ•  ๊ต์ฒด

์ค‘์š”ํ•œ ์ ์€ CharacterBase๊ฐ€ ์ง์ ‘ ํ„ด์„ ๋ฐ”๊พธ์ง€ ์•Š๊ณ ,
GameMode์— ์š”์ฒญํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.

CharacterBase
โ†’ RequestCatch(Target)
โ†’ TagGameMode
โ†’ ProcessCatch(CurrentTagger, Target)

์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ„ด ์ฆ๊ฐ€, ๊ฒŒ์ž„ ์ข…๋ฃŒ, ์—ญํ•  ๊ต์ฒด ๊ฐ™์€ ๊ทœ์น™์ด ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค.


GameMode ์—ญํ• 

TagGameMode๋Š” ๊ฒŒ์ž„ ๊ทœ์น™์„ ๋‹ด๋‹นํ•œ๋‹ค.

TagGameMode
 โ”œโ”€ CurrentTurn
 โ”œโ”€ MaxTurn = 4
 โ”œโ”€ CurrentTagger
 โ”œโ”€ AllPlayers
 โ”œโ”€ StartGame()
 โ”œโ”€ SelectFirstTagger()
 โ”œโ”€ ProcessCatch()
 โ”œโ”€ AdvanceTurn()
 โ””โ”€ EndGame()

๊ฒŒ์ž„ ์‹œ์ž‘ ์‹œ 4๋ช… ์ค‘ ํ•œ ๋ช…์„ ์ˆ ๋ž˜๋กœ ์ง€์ •ํ•œ๋‹ค.

๊ฒŒ์ž„ ์‹œ์ž‘
โ†’ ๋ชจ๋“  ์บ๋ฆญํ„ฐ ๋“ฑ๋ก
โ†’ ์ตœ์ดˆ ์ˆ ๋ž˜ 1๋ช… ์„ ํƒ
โ†’ ๋‚˜๋จธ์ง€๋Š” ๋„๋ง์ž ์ƒํƒœ
โ†’ 1ํ„ด ์‹œ์ž‘

์žก๊ธฐ ์„ฑ๊ณต ์‹œ์—๋Š” ๋‹ค์Œ ํ๋ฆ„์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์žก๊ธฐ ์„ฑ๊ณต
โ†’ ๊ธฐ์กด ์ˆ ๋ž˜ bIsTagger = false
โ†’ ์žกํžŒ ๋Œ€์ƒ bIsTagger = true
โ†’ CurrentTagger ๊ฐฑ์‹ 
โ†’ CurrentTurn ์ฆ๊ฐ€
โ†’ 4ํ„ด์ด๋ฉด ๊ฒŒ์ž„ ์ข…๋ฃŒ

์ด ๊ตฌ์กฐ๋กœ ํ•˜๋ฉด ๊ทœ์น™์ด ๋ช…ํ™•ํ•ด์ง„๋‹ค.


ํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ ์„ค๊ณ„

ํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ์€ ํ•ญ์ƒ ๊ฐ™์€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋„,
ํ˜„์žฌ ์ƒํƒœ์— ๋”ฐ๋ผ ๋™์ž‘ ์—ฌ๋ถ€๊ฐ€ ๋‹ฌ๋ผ์ง€๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค.

MoveAction
LookAction
CatchAction

CatchAction์€ ์ˆ ๋ž˜์ผ ๋•Œ๋งŒ ์‹ค์ œ๋กœ ๋™์ž‘ํ•œ๋‹ค.

CatchAction ์ž…๋ ฅ
โ†’ bIsTagger ํ™•์ธ
โ†’ true๋ฉด TryCatchTarget()
โ†’ false๋ฉด ๋ฌด์‹œ

์ด ๋ฐฉ์‹์ด ์ข‹์€ ์ด์œ ๋Š” ์ž…๋ ฅ ๋งคํ•‘์„ ๋งค๋ฒˆ ์ถ”๊ฐ€/์‚ญ์ œํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ ,
์ƒํƒœ ๊ฒ€์‚ฌ๋งŒ์œผ๋กœ ๋™์ž‘์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


AI Blackboard ์„ค๊ณ„

AI๋Š” Blackboard ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ BehaviorTree์—์„œ ๋ถ„๊ธฐํ•œ๋‹ค.

Blackboard
 โ”œโ”€ IsTagger
 โ”œโ”€ CurrentTaggerActor
 โ”œโ”€ TargetActor
 โ”œโ”€ EscapeLocation
 โ””โ”€ LastKnownTaggerLocation

๊ฐ ๊ฐ’์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Key์—ญํ• 
IsTaggerํ˜„์žฌ AI๊ฐ€ ์ˆ ๋ž˜์ธ์ง€ ํŒ๋‹จ
CurrentTaggerActorํ˜„์žฌ ์ˆ ๋ž˜ ์•กํ„ฐ
TargetActor์ˆ ๋ž˜์ผ ๋•Œ ์ถ”์ ํ•  ๋Œ€์ƒ
EscapeLocation๋„๋ง์ž์ผ ๋•Œ ์ด๋™ํ•  ์œ„์น˜
LastKnownTaggerLocation๋งˆ์ง€๋ง‰์œผ๋กœ ์ธ์‹ํ•œ ์ˆ ๋ž˜ ์œ„์น˜

BehaviorTree ๊ตฌ์กฐ

BehaviorTree๋Š” ์ตœ์ƒ๋‹จ์—์„œ ์ˆ ๋ž˜ ์—ฌ๋ถ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.

Root
 โ””โ”€ Selector
     โ”œโ”€ Sequence: ์ˆ ๋ž˜ ํ–‰๋™
     โ”‚   โ”œโ”€ Decorator: IsTagger == true
     โ”‚   โ”œโ”€ FindNearestRunner
     โ”‚   โ”œโ”€ MoveTo TargetActor
     โ”‚   โ””โ”€ TryCatch
     โ”‚
     โ””โ”€ Sequence: ๋„๋ง์ž ํ–‰๋™
         โ”œโ”€ Decorator: IsTagger == false
         โ”œโ”€ FindCurrentTagger
         โ”œโ”€ CalculateEscapeLocation
         โ””โ”€ MoveTo EscapeLocation

์ด ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ™์€ Enemy AI๋ผ๋„
์ˆ ๋ž˜์ผ ๋•Œ๋Š” ์ถ”๊ฒฉ์ž, ์•„๋‹ ๋•Œ๋Š” ๋„๋ง์ž๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.


์ˆ ๋ž˜ AI ์„ธ๋ถ€ ํ๋ฆ„

์ˆ ๋ž˜ AI๋Š” โ€œ์žก์„ ๋Œ€์ƒ ์ฐพ๊ธฐ โ†’ ์ถ”๊ฒฉ โ†’ ์žก๊ธฐโ€๊ฐ€ ํ•ต์‹ฌ์ด๋‹ค.

IsTagger == true
โ†’ ์ฃผ๋ณ€ ์บ๋ฆญํ„ฐ ํƒ์ƒ‰
โ†’ bIsTagger == false ์ธ ๋Œ€์ƒ๋งŒ ํ•„ํ„ฐ๋ง
โ†’ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋Œ€์ƒ ์„ ํƒ
โ†’ TargetActor์— ์ €์žฅ
โ†’ MoveTo
โ†’ CatchRange ์•ˆ์— ๋“ค์–ด์˜ค๋ฉด TryCatch

๋Œ€์ƒ ์„ ํƒ ๊ธฐ์ค€์€ ์ฒ˜์Œ์—๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋Œ€์ƒ์œผ๋กœ ์žก๊ณ ,
๋‚˜์ค‘์— ๋‚œ์ด๋„์— ๋”ฐ๋ผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

1์ˆœ์œ„: ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋Œ€์ƒ
2์ˆœ์œ„: ์‹œ์•ผ ์•ˆ์— ์žˆ๋Š” ๋Œ€์ƒ
3์ˆœ์œ„: ํ”Œ๋ ˆ์ด์–ด ์šฐ์„  ์ถ”์ 

๋„๋ง AI ์„ธ๋ถ€ ํ๋ฆ„

๋„๋ง AI๋Š” ํ˜„์žฌ ์ˆ ๋ž˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

IsTagger == false
โ†’ CurrentTaggerActor ํ™•์ธ
โ†’ ์ˆ ๋ž˜ ์œ„์น˜์™€ ๋‚ด ์œ„์น˜ ๋น„๊ต
โ†’ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ ๊ณ„์‚ฐ
โ†’ NavMesh ์œ„ ์œ ํšจ ์œ„์น˜ ํƒ์ƒ‰
โ†’ EscapeLocation์œผ๋กœ ์ด๋™

๋‹จ์ˆœํžˆ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋„๋ง๊ฐ€๋ฉด ๋ฒฝ์— ๋ง‰ํž ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ,
์ตœ์ข… ์œ„์น˜๋Š” NavMesh ๊ธฐ์ค€์œผ๋กœ ๋ณด์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

๋„๋ง ๋ฐฉํ–ฅ = ๋‚ด ์œ„์น˜ - ์ˆ ๋ž˜ ์œ„์น˜
๋ชฉํ‘œ ์œ„์น˜ = ๋‚ด ์œ„์น˜ + ๋„๋ง ๋ฐฉํ–ฅ * ๊ฑฐ๋ฆฌ
NavMesh ProjectPointToNavigation

์ƒํƒœ ๋™๊ธฐํ™” ๊ตฌ์กฐ

์ˆ ๋ž˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์ด ๊ฐ™์ด ๊ฐฑ์‹ ๋˜์–ด์•ผ ํ•œ๋‹ค.

SetTaggerState()
โ†’ TagIndicatorMesh ํ‘œ์‹œ ๊ฐฑ์‹ 
โ†’ AI Blackboard IsTagger ๊ฐฑ์‹ 
โ†’ Player UI ๊ฐฑ์‹ 
โ†’ ์ž…๋ ฅ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ๊ฐฑ์‹ 

๊ทธ๋ž˜์„œ ๋‹จ์ˆœํžˆ bIsTagger ๊ฐ’๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,
์ƒํƒœ ๋ณ€๊ฒฝ์šฉ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


ํ„ด ๊ด€๋ฆฌ ๊ตฌ์กฐ

์ด ๊ฒŒ์ž„์€ ์ด 4ํ„ด์œผ๋กœ ์ง„ํ–‰๋˜๋ฏ€๋กœ,
์žก๊ธฐ ์„ฑ๊ณต์ด ๊ณง ํ„ด ์ง„ํ–‰ ์กฐ๊ฑด์ด ๋œ๋‹ค.

CurrentTurn = 1
MaxTurn = 4

์žก๊ธฐ ์„ฑ๊ณต ์‹œ CurrentTurn++
CurrentTurn > MaxTurn์ด๋ฉด ๊ฒŒ์ž„ ์ข…๋ฃŒ

ํ„ด๋งˆ๋‹ค ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•˜๋ฉด ๋‚˜์ค‘์— ์ŠนํŒจ ์กฐ๊ฑด๋„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

TurnResult
 โ”œโ”€ TurnNumber
 โ”œโ”€ PreviousTagger
 โ”œโ”€ NewTagger
 โ””โ”€ CatchTime

์ตœ์ข… ํ๋ฆ„

์ „์ฒด ํ๋ฆ„์€ ๋‹ค์Œ์ฒ˜๋Ÿผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฒŒ์ž„ ์‹œ์ž‘
โ†’ ์บ๋ฆญํ„ฐ 4๋ช… ๋“ฑ๋ก
โ†’ ์ตœ์ดˆ ์ˆ ๋ž˜ ์ง€์ •
โ†’ bIsTagger ์ƒํƒœ ๋ฐ˜์˜
โ†’ ์ˆ ๋ž˜ ํ‘œ์‹œ ํ™œ์„ฑํ™”
โ†’ AI Blackboard ๊ฐฑ์‹ 
โ†’ ํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ ์ƒํƒœ ๊ฐฑ์‹ 
โ†’ ์ˆ ๋ž˜๋Š” ์ถ”๊ฒฉ
โ†’ ๋„๋ง์ž๋Š” ํšŒํ”ผ
โ†’ ์žก๊ธฐ ์„ฑ๊ณต
โ†’ GameMode์—์„œ ์—ญํ•  ๊ต์ฒด
โ†’ ํ„ด ์ฆ๊ฐ€
โ†’ 4ํ„ด ์ข…๋ฃŒ ์‹œ ๊ฒŒ์ž„ ์ข…๋ฃŒ

์˜ค๋Š˜์˜ ์ •๋ฆฌ

์ด๋ฒˆ ์„ค๊ณ„์˜ ํ•ต์‹ฌ์€ bIsTagger๋ฅผ ๋‹จ์ˆœํ•œ Boolean ๊ฐ’์œผ๋กœ๋งŒ ์“ฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,
๊ฒŒ์ž„ ์ „์ฒด ํ๋ฆ„์„ ๋ฐ”๊พธ๋Š” ์ค‘์‹ฌ ์ƒํƒœ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ด ๊ฐ’ ํ•˜๋‚˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ

  • ํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ
  • AI BehaviorTree
  • ๋จธ๋ฆฌ ์œ„ ์ˆ ๋ž˜ ํ‘œ์‹œ
  • ์žก๊ธฐ ๊ฐ€๋Šฅ ์—ฌ๋ถ€
  • ํ„ด ์ง„ํ–‰
  • ๊ฒŒ์ž„ ์ข…๋ฃŒ ์กฐ๊ฑด
    ์ด ๋ชจ๋‘ ์—ฐ๊ฒฐ๋œ๋‹ค.
profile
๊ฐœ๋ฐœํ•ฉ์‹œ๋‹ค!

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