RTS ๋ฉํฐํ๋ ์ด ํ๋ก์ ํธ์์ UI๋ฅผ ์ ๋ดํ๊ฒ ๋๋ฉด์ ๋จ์ํ ํ๋ฉด์ ๋ง๋๋ ์์
์ด ์๋๋ผ
๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ์ ์ธ ๊ณ ๋ฏผ์ด ํ์ํ๋ค.
ํนํ RTS๋
์ ํ โ ๋ช
๋ น โ ์ํ ๋ณํ โ UI ๊ฐฑ์
์ด ํ๋ฆ์ด ๋ฐ๋ณต๋๊ธฐ ๋๋ฌธ์, ๊ตฌ์กฐ๋ฅผ ์๋ชป ์ก์ผ๋ฉด ์ ์ง๋ณด์๊ฐ ๋งค์ฐ ์ด๋ ค์์ง๋ค.
์ด๋ฒ ์ ๋ฆฌ์์ ๊ฐ์ฅ ์ค์ํ๊ฒ ๋๋ ์ ์
UI๋ฅผ ๋จ์ํ โํํ ๊ณ์ธตโ์ด ์๋๋ผ ์ํ ํํ ์์คํ
์ผ๋ก ๋ด์ผ ํ๋ค๋ ์ ์ด์๋ค.
UI๋ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ์ํํ๋ค.
| ๊ตฌ๋ถ | ์ญํ |
|---|---|
| ์ ๋ ฅ | ์ฌ์ฉ์ ์ ๋ ฅ์ ์ ๋ฌ |
| ํ์ | ์ํ๋ฅผ ํ๋ฉด์ ํํ |
| ๋ฐ์ | ์ํ ๋ณํ์ ๋ฐ๋ผ ๊ฐฑ์ |
๋ฐ๋๋ก UI๊ฐ ํ๋ฉด ์ ๋๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
| ๊ธ์ง ์ญํ | ์ด์ |
|---|---|
| ์๋ฒ ๋ฐ์ดํฐ ์์ | ๊ถํ ๋ฌธ์ (Server Authority) |
| ๊ฒ์ ๋ก์ง ์คํ | ์ฑ ์ ๋ถ๋ฆฌ ์๋ฐ |
| ์ํ ์๋ณธ ์ ์ฅ | ๋๊ธฐํ ๊นจ์ง |
์ ๋ฆฌํ๋ฉด
UI๋ ์ํ๋ฅผ ๋ฐ๊พธ์ง ์๋๋ค.
UI๋ ์ํ๋ฅผ ๋ณด์ฌ์ค๋ค.
๋ฉํฐํ๋ ์ด ํ๊ฒฝ์์ UI๋ ํญ์ ๊ฐ์ ์ ์ผ๋ก ๋์ํด์ผ ํ๋ค.
[UI]
โ PlayerController
โ Server RPC
โ GameState / PlayerState
โ Replication
โ UI ๊ฐฑ์
์ด ๊ตฌ์กฐ์์ ์ค์ํ ํฌ์ธํธ๋ ๋ค์๊ณผ ๊ฐ๋ค.
RTS UI๋ ๋ฐ๋์ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณํด์ผ ํ๋ค.
๊ตฌ์กฐ๋ ์๋์ฒ๋ผ 3๊ณ์ธต์ผ๋ก ๋๋๋ ๊ฒ์ด ๊ฐ์ฅ ์์ ์ ์ด๋ค.
Gameplay Data โ UI Meta Data โ ViewModel โ UI
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| UnitId | ์ ๋ ์๋ณ |
| CommandId | ๋ช ๋ น ์๋ณ |
| Cost | ์ค์ ๋น์ฉ |
| Cooldown | ์ค์ ์ฟจ๋ค์ด |
| Condition | ์คํ ์กฐ๊ฑด |
โ ๊ฒ์์ ์ค์ ๊ท์น์ด ๋ด๊ธด ๋ฐ์ดํฐ
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| Icon | ์์ด์ฝ |
| DisplayName | ํ์ ์ด๋ฆ |
| Tooltip | ์ค๋ช |
| SlotIndex | ์ฌ๋กฏ ์์น |
| HotkeyLabel | ๋จ์ถํค ํ์ |
โ UI ํํ์ ์ํ ๋ฐ์ดํฐ
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| SlotIndex | ์ฌ๋กฏ ์์น |
| Icon | ํ์ ์์ด์ฝ |
| bEnabled | ํ์ฑ ์ฌ๋ถ |
| CooldownRatio | ์ฟจ๋ค์ด ์ํ |
| bPending | ์์ธก ์ํ |
โ UI์ ์ค์ ๋ก ์ ๋ฌ๋๋ ์ต์ข ๋ฐ์ดํฐ
RTS UI์ ํต์ฌ์ CommandId ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ค.
์
๋ ฅ(๋ฒํผ/ํค)
โ CommandId ์์ฑ
โ ์๋ฒ ์์ฒญ
โ ์ํ ๋ณ๊ฒฝ
โ UI ๊ฐฑ์
๋จ์ถํค๋ UI๊ฐ ์๋๋ผ ์ ๋ ฅ ์์คํ ์ด ๋ด๋นํ๋ค.
Input System โ CommandId โ Server โ UI ํ์
| ์์ญ | ์ญํ |
|---|---|
| Input | ํค ์ ๋ ฅ ๊ฐ์ง |
| Command System | ์คํ ์ฒ๋ฆฌ |
| UI | ๋จ์ถํค ํ์ |
UI๋ ๋จ์ํ
๋ง ์ํํ๋ค.
๋ฉํฐํ๋ ์ด์์๋ ์
๋ ฅ๊ณผ ๊ฒฐ๊ณผ ์ฌ์ด์ ์ง์ฐ์ด ๋ฐ์ํ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด UI๋ โ์์ธก ์ํโ๋ฅผ ๋จผ์ ๋ณด์ฌ์ค๋ค.
Predicted โ Confirmed โ Rejected
| ๋จ๊ณ | UI ์ํ |
|---|---|
| ํด๋ฆญ | ์์ ํ ์ถ๊ฐ |
| ๋๊ธฐ | Pending ์ํ |
| ์น์ธ | ํ์ ์ํ |
| ์คํจ | ๋กค๋ฐฑ + ์๋ฆผ |
| ์ํ | ์๋ฏธ | UI ํํ |
|---|---|---|
| Predicted | ์ ๋ ฅ ์งํ | ์ฆ์ ๋ฐ์ |
| Pending | ์๋ฒ ๋๊ธฐ | ๋ฐํฌ๋ช /๋๊ธฐ ํ์ |
| Confirmed | ์น์ธ | ์ ์ ์ํ |
| Rejected | ์คํจ | ๋กค๋ฐฑ + ๊ฒฝ๊ณ |
ํต์ฌ์
โ์ง์ฐ์ ์์ ๋ ๊ฒ์ด ์๋๋ผ ์ง์ฐ์ ๋๋ผ์ง ์๊ฒ ๋ง๋๋ ๊ฒโ์ด๋ค.
UI๋ ๋งค ํ๋ ์ ๊ฐฑ์ ์ด ์๋๋ผ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐฑ์ ํด์ผ ํ๋ค.
OnResourceChanged
OnSelectionChanged
OnCommandChanged
OnNotification
| ๋ฐฉ์ | ํน์ง |
|---|---|
| Tick ๊ธฐ๋ฐ | ๋นํจ์จ, ์ํ ๊ผฌ์ |
| ์ด๋ฒคํธ ๊ธฐ๋ฐ | ์ ํ, ์ฑ๋ฅ ์์ |
RTS UI๋ ์ ๋๋ณ UI๊ฐ ์๋๋ผ ๊ณต์ฉ ํจ๋ ๊ตฌ์กฐ๋ค.
TopBar
SelectionPanel
CommandPanel
NotificationPanel
MinimapPanel
์ด๋ฒ ์์ ์์ ์ค์ํ ์ ๊ทผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์์
์์ด ๊ตฌ์กฐ ๊ตฌํ
2. Mock ๋ฐ์ดํฐ๋ก ํ
์คํธ
3. ๋ฐ์ดํฐ ํ๋ฆ ๊ฒ์ฆ
4. ๋ฉ์ธ ํ๋ก์ ํธ ์ด์
UI๋ ๋ฐ๋์ ๊ตฌ์กฐ์ ์คํ์ผ์ ๋ถ๋ฆฌํด์ผ ํ๋ค.
UI Widget
โ ApplyStyle()
โ Style Data ์ฃผ์
๋ฏธ๋๋งต์ UI๊ฐ ์ง์ ๊ทธ๋ฆฌ์ง ์๋๋ค.
RenderTarget / Texture
โ UMG Image
โ Overlay (์์ด์ฝ, ์นด๋ฉ๋ผ)
| ๋ด๋น | ์ญํ |
|---|---|
| ๋ฏธ๋๋งต ์์คํ | ์ง๋ ์์ฑ |
| UI | ํ์ + ์ ๋ ฅ |
์ค์ ๊ฐ๋ฐ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
๊ธฐํ โ ๊ธฐ๋ฅ ์ ์
UI/ํด๋ผ โ ๊ตฌ์กฐ ์ค๊ณ
UI ๊ฐ๋ฐ โ ์์คํ
๊ตฌํ
๋์์ธ โ ๋น์ฃผ์ผ ์ ์ฉ
| ์ญํ | ์ฑ ์ |
|---|---|
| ๊ธฐํ | ๊ธฐ๋ฅ ์ ์ |
| UI ๊ฐ๋ฐ | ๊ตฌ์กฐ ์ค๊ณ + ๊ตฌํ |
| ํด๋ผ | ๋ฐ์ดํฐ ์ ๊ณต |
| UI ๋์์ด๋ | ์๊ฐ ๋์์ธ |
UI ๊ฐ๋ฐ์๋ ๋จ์ ๊ตฌํ์๊ฐ ์๋๋ผ
๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ ์ญํ ์ ๊ฐ๊น๋ค.
RTS UI๋ ๋ฐ์ดํฐ ํ๋ฆ, ์ํ ํํ, ์ ๋ ฅ ์ฐ๊ฒฐ์ ๋ด๋นํ๋ ์์คํ ์ด๋ค.
UI๋ ์๋ฒ ๋ก์ง์ ๊ฑด๋๋ฆฌ์ง ์๊ณ
UI ๋ฉํ ID ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฅ์ ์ ๋ฌํ๋ฉฐ,
ViewModel์ ํตํด ์ํ๋ฅผ ํํํ๊ณ ,
Client Prediction์ผ๋ก ์ ๋ ฅ ์ง์ฐ์ ์ํํ๋ ๊ตฌ์กฐ๋ก ์ค๊ณํ ํ์๊ฐ ์๋ค.