์ด์ ๋จ๊ณ์์๋
Selection โ CommandContext โ UI ํ์
๊น์ง๋ ์ ์์ ์ผ๋ก ๋์ํ๋ ์ํ์๋ค.
ํ์ง๋ง ์ค์ ๊ฒ์ ๋ก์ง๊น์ง ์ฐ๊ฒฐํ๋ ค๋ ์๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
UI์์ ๋ฐ์ํ ๋ช
๋ น์ด ์ค์ ์ ๋ ๋์์ผ๋ก ์ด์ด์ง์ง ์์
๋ํ์ ์ผ๋ก ๋๋ฌ๋ ์ฆ์:
์ฐํด๋ฆญ ์ ์ ๋์ด ํ์ ๋ง ํ๊ณ ์ด๋ํ์ง ์์
์ฆ ๋ฌธ์ ๋ ๋จ์ UI๊ฐ ์๋๋ผ
UI โ PlayerController โ Mass โ StateTree โ Movement
์ด ์ ์ฒด ํ๋ฆ ์ด๋๊ฐ์์ ๋๊ธฐ๊ณ ์์๋ค.
| ๊ตฌ๋ถ | ๋ฌธ์ |
|---|---|
| ๋ช ๋ น ์ ๋ฌ | ์ ๋ฌ์ ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์ค์ ๋์์ผ๋ก ์ด์ด์ง์ง ์์ |
| StateTree | ์ํ๊ฐ ์ ์ง๋์ง ์๊ณ ๊ณ์ ์ฌ์ง์ |
| Movement | PathFollow๊ฐ ์ฆ์ ์ข ๋ฃ๋จ |
| Command ๊ตฌ์กฐ | ์ํ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์ด ์ฌ์ง์ ๋ฃจํ ๋ฐ์ |
| Subsystem | UI์ ์ง์ ์ฐ๊ฒฐ๋์ด ์์๋ ๊ตฌ์กฐ |
| UI ๋ฐ์ดํฐ | ํด๋ผ์ด์ธํธ์์ ์ ๋ขฐํ ์ ์๋ ๊ฒฝ๋ก๋ก ์ ๊ทผ |
๋ฌธ์ ๋ฐ์ ๋น์ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์๋ค.
์ฐํด๋ฆญ
โ PlayerController
โ Command Fragment ์ค์
โ StateTree ์ง์
โ MoveToLocation
โ NavMesh PathFollow
๊ฒ๋ณด๊ธฐ์๋ ์ ์ ๊ตฌ์กฐ์ง๋ง ์ค์ ๋์์
Enter โ Tick โ Exit โ Enter ๋ฐ๋ณต
์ฆ
์ํ ์ ์ง ์คํจ + ์ด๋ ์ฆ์ ์ข
๋ฃ
์๋ค.
ํต์ฌ์ ๋ ๊ฐ์ง์๋ค.
1. ๋ช
๋ น ์ ๋ฌ์ ์ ์
2. ์ํ ์ ์ง์ ์ด๋ ์คํ์ด ๋ฌธ์
๋ก๊ทธ ๊ธฐ์ค์ผ๋ก ํ์ธ๋ ์ฌ์ค:
TargetLocation ์ ์ ์ ๋ฌ
์ฆ
PlayerController โ StateTree ์ง์
๊น์ง๋ ์ ์
๋ฌธ์ ๋ ์ดํ์๋ค.
ํ์ฌ ์กฐ๊ฑด:
CurrentCommand == MoveToLocation
์ด ๊ตฌ์กฐ์ ๋ฌธ์ :
๊ฐ์ด ์ ์ง๋๋ ๋์ ์กฐ๊ฑด์ด ๊ณ์ true
โ ์ํ ๊ณ์ ์ฌ์ง์
๊ฒฐ๊ณผ:
Move ์ํ๊ฐ ๋งค ํ๋ ์ ์ด๊ธฐํ๋จ
๊ธฐ์กด:
CommandType = Move
๋ฌธ์ :
์ํ๊ฐ์ด๋ผ์ ๊ณ์ ์ ์ง๋จ
โ ์ด๋ฒคํธ๊ฐ ์๋๋ผ "์ง์ ์กฐ๊ฑด"์ด ๋จ
ํ์ธ๋ ๊ฐ๋ฅ์ฑ:
EndDistanceThreshold๊ฐ ํผ
โ ๋ชฉํ ๋๋ฌ๋ก ์ฆ์ ํ์
์ฆ
์ด๋ ์์ โ ๋ฐ๋ก ์๋ฃ โ ์ํ ์ข
๋ฃ โ ์ฌ์ง์
์ค๋ ์ ๋ฆฌ๋ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋ :
Command๋ ์ํ๊ฐ ์๋๋ผ ์ด๋ฒคํธ๋ค
์ฆ ๊ตฌ์กฐ๋ ์ด๋ ๊ฒ ๋ฐ๋์ด์ผ ํ๋ค.
CommandType (๋ฌด์์ ํ ์ง)
+
CommandIssued (์ด๋ฒ ํ๋ ์์ ๋ฐ์ํ๋์ง)
๊ทธ๋ฆฌ๊ณ
EnterState ์์ ์ Command ์๋น
๊ธฐ์กด:
๋ช
๋ น ํด์ + ์คํ๊น์ง ๋ด๋น
๋ณ๊ฒฝ:
๋ช
๋ น "๋ผ์ฐํ
" ์ญํ ๋ง ๋ด๋น
์
๋ ฅ
โ PlayerController
โ CommandId ์ ๋ฌ
โ ์ค์ ์ฒ๋ฆฌ ๋์(์ ๋/๊ฑด๋ฌผ)๋ก ์ ๋ฌ
์ฆ Controller๋
"์๋ฏธ๋ฅผ ์๋ ์ฃผ์ฒด" โ "์ ๋ฌ์"
๋ก ์ญํ ์ด ์ถ์๋๋ค.
๊ธฐ์กด ๊ตฌ์กฐ:
UI โ UnitSubsystem ์ง์ ์ ๊ทผ
๋ฌธ์ :
Subsystem์ replication ์๋จ
โ ํด๋ผ์ด์ธํธ UI์์ ์ ๋ขฐ ๋ถ๊ฐ
ํต์ฌ ์ ํ:
UI๋ PlayerState๋ง ๋ณธ๋ค
์ ์ฒด ํ๋ฆ:
[Server]
UnitSubsystem
โ ์ ๋ ์ํ ๊ด๋ฆฌ
โ ์ง๊ณ๊ฐ ๊ณ์ฐ
โ PlayerState ์
๋ฐ์ดํธ
-------------------------
[Replication]
PlayerState โ ํด๋ผ์ด์ธํธ ์ ๋ฌ
-------------------------
[Client]
PlayerState OnRep
โ Delegate
UIBridge
โ ViewModel ๊ฐฑ์
HUDCoordinator
โ UI ๋ฐ์
โ ์ ์ฒด ์ ๋ ๋ฆฌ์คํธ replication
โ ์ง๊ณ๊ฐ๋ง replication
๋ฐ์ดํฐ ์ ์ฅ + replication + ์ด๋ฒคํธ ๋ฐ์
์:
OnRep_CurrentPopulation()
โ Delegate Broadcast
UI๋ฅผ ๋ชจ๋ฆ
โ PlayerState๋ง ๊ฐฑ์
UI๋ ํํ๋ง ๋ด๋น
๋ฐ์ดํฐ๋ PlayerState์์ ์ ๊ณต
์
๋ ฅ ๋ฐ์
โ PlayerController (๋ผ์ฐํ
)
โ Command Fragment ์ค์
StateTree
โ Move ์ํ ์ง์
โ ์ด๋ ์ํ
(๋ฌธ์ )
โ PathFollow ์ฆ์ ์ข
๋ฃ
โ ์ํ Exit
โ ์กฐ๊ฑด์ผ๋ก ์ฌ์ง์
(ํด๊ฒฐ ๋ฐฉํฅ)
โ Command ์ด๋ฒคํธํ
โ ์ํ ์๋น ๊ตฌ์กฐ
์ ๋ ์ํ ๋ณํ
โ UnitSubsystem
โ PlayerState ์ง๊ณ๊ฐ ๊ฐฑ์
โ Replication
โ Client PlayerState OnRep
โ UIBridge
โ HUDCoordinator
โ UI ๋ฐ์
| ํญ๋ชฉ | ์ด์ | ์ดํ |
|---|---|---|
| Command ๊ตฌ์กฐ | ์ํ ๊ธฐ๋ฐ | ์ด๋ฒคํธ ๊ธฐ๋ฐ |
| StateTree | ๋ฐ๋ณต ์ง์ | ๋จ๋ฐ ์๋น ๊ตฌ์กฐ |
| PlayerController | ํด์ + ์คํ | ๋ผ์ฐํฐ |
| UI ๋ฐ์ดํฐ | Subsystem ์ง์ ์ ๊ทผ | PlayerState ๊ธฐ๋ฐ |
| ๋คํธ์ํฌ ์์ ์ฑ | ๋ฎ์ | ์์ |
| ๋๋ฒ๊น | ๋ถ๋ช ํ | ๋จ๊ณ๋ณ ๋ถ๋ฆฌ |
- UI ์ฐ๊ฒฐ ์ดํ ๋ฌธ์ ๋ โ๋ช ๋ น ์ ๋ฌโ์ด ์๋๋ผ โ์คํ ๊ตฌ์กฐโ์๋ค
- StateTree๋ ์กฐ๊ฑด ๊ธฐ๋ฐ ์ค๊ณ ์ ์ฝ๊ฒ ๋ฌดํ ์ฌ์ง์ ์ด ๋ฐ์ํ๋ค
- Command๋ ๋ฐ๋์ ์ด๋ฒคํธ๋ก ์๋น๋์ด์ผ ํ๋ค
- Subsystem์ ์๋ฒ ์ ์ฉ, UI๋ PlayerState ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ฆฌํด์ผ ํ๋ค