๊ธฐ์กด ์ฑํ ๊ธฐ๋ฐ ์ซ์์ผ๊ตฌ ๊ฒ์์ UI๋ฅผ ๋์ ํ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
| ๋ฌธ์ ์์ญ | ๋ด์ฉ |
|---|---|
| ์ ๋ ฅ ๊ตฌ์กฐ | ์ฑํ ์ ๋ ฅ๊ณผ UI ์ ๋ ฅ์ด ๋ถ๋ฆฌ๋์ง ์์ ๋ผ์ฐํ ํผ์ฌ |
| ์ํ ๋๊ธฐํ | ๋ก๊ทธ์ธ / ํด / ๊ฒ์ ์ํ๊ฐ UI์ ์ฆ์ ๋ฐ์๋์ง ์์ |
| ํด ํ์ | ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ๊ธฐ์ค ๋ฐฐ์ด์ด ๋ฌ๋ผ ๋ค๋ฅธ ํ๋ ์ด์ด ํ์ |
| ํ์ UI | Strike / Ball / Out ๊ฒฐ๊ณผ๊ฐ UI์ ์ฐ๊ฒฐ๋์ง ์์ |
| UI ๊ฐฑ์ | GameState ๊ฐ์ ๋ฐ๋์ง๋ง UI๊ฐ ๊ฐฑ์ ๋์ง ์์ |
์๋ฒ ๋ฐ์ดํฐ โ ํด๋ผ์ด์ธํธ UI๊น์ง ํ๋ฆ ๋จ์
| Before | After |
|---|---|
| ์ฑํ ๋ฌธ์์ด ํ๋๋ก ๋ชจ๋ ์ฒ๋ฆฌ | ๊ธฐ๋ฅ๋ณ RPC ๋ถ๋ฆฌ |
Server: AllPlayerControllers ๊ธฐ์ค
Client: GameState.PlayerArray ๊ธฐ์ค
๋์ผ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ธฐ์ค ๋ฐฐ์ด์ด ๋ฌ๋ผ ์๋ก ๋ค๋ฅธ ํ๋ ์ด์ด๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
| ์ํ ์์น | ๊ฒฐ๊ณผ |
|---|---|
| PlayerState | UI ๊ฐฑ์ ๋จ |
| GameState | UI ๊ฐฑ์ ์๋จ |
ํด ์ํ๋ GameState์ ์์ง๋ง UI ๊ฐฑ์ ํธ๋ฆฌ๊ฑฐ๊ฐ ์์ด ๋ฐ์๋์ง ์์๋ค.
GameMode โ (์ค๊ฐ ์ ๋ฌ ์์) โ UI
์๋ฒ์์ ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๊ฐ UI๊น์ง ์ ๋ฌ๋์ง ์์๋ค.
ChatPanel / GamePanel ์ญํ ๋ถ๋ช
ํ
UI๊ฐ ๋จ์ ์ถ๋ ฅ ๊ตฌ์กฐ๋ก ๋์ด ์์ด ์ํ ๊ธฐ๋ฐ ํํ์ด ์ด๋ ค์ ๋ค.
[Client Input]
โ
PlayerController
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ /register โ ServerRPCRegister โ
โ /login โ ServerRPCLogin โ
โ ์ซ์ ์
๋ ฅ โ SubmitGuess โ
โ ๊ธฐํ ์ฑํ
โ SubmitChat โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
์ ๋ ฅ์ ํ๋์ ์ฑ๋์ ์ฌ์ฉํ์ง๋ง ๋ด๋ถ ๋ก์ง์ ์์ ํ ๋ถ๋ฆฌํ์๋ค.
๋ฐฐ์ด ์ธ๋ฑ์ค ๊ธฐ๋ฐ ์ถ๋ก
GameState์ ๋ช
์์ ๊ฐ ์ ์ฅ
| ๋ณ์ | ์ญํ |
|---|---|
| CurrentTurnPlayerName | ํ์ฌ ํด ํ๋ ์ด์ด |
| CurrentTurnPlayerIndex | ํด ์ธ๋ฑ์ค |
| TurnEndServerTime | ํด ์ข ๋ฃ ์๊ฐ |
| bTurnInProgress | ํด ์งํ ์ฌ๋ถ |
UI๋ ๋ ์ด์ ๊ณ์ฐํ์ง ์๊ณ ์๋ฒ์์ ํ์ ๋ ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋๋ก ๋ณ๊ฒฝํ์๋ค.
[Server]
GameMode
โ
GameState ๊ฐ ๋ณ๊ฒฝ
[Client]
GameState (OnRep)
โ
PlayerController
โ
MainHUD
โ
GamePanel / ๊ธฐํ Panel
OnRep_CurrentTurnPlayerName
โ NotifyTurnStateUpdated
โ PlayerController.HandleTurnStateReplicated
โ MainHUD.RefreshGamePanel
OnRep ๊ธฐ๋ฐ์ผ๋ก UI๊ฐ ์๋ ๊ฐฑ์ ๋๋๋ก ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ์๋ค.
[Server]
GameMode (Judge ๊ณ์ฐ)
โ
Client RPC
โ
[Client]
PlayerController
โ
MainHUD
โ
GamePanel
โ
SetJudgeResult
SetJudgeResult
โ ResetJudgeBoard
โ Strike ๊ฐ์ ON
โ Ball ๊ฐ์ ON
โ Out ๊ฐ์ ON
| ์ํ | ์์ |
|---|---|
| OFF | (0.12, 0.12, 0.12) |
| Strike | Red |
| Ball | Yellow |
| Out | Blue |
์ํ๋ฅผ ์์ผ๋ก ์ง๊ด์ ์ผ๋ก ํํํ๋๋ก ๊ตฌ์ฑํ์๋ค.
๋จ์ ์ฑํ
์ถ๋ ฅ UI
MainHUD
โโโ LoginPanel (๋ก๊ทธ์ธ ์ํ)
โโโ GamePanel (ํด / ์
๋ ฅ / ์ ๊ดํ)
โโโ ChatPanel (์ฑํ
๋ก๊ทธ)
โโโ StatusPanel (์ ์ )
UI๋ฅผ ์ํ ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ฆฌํ์๋ค.
| ๊ณ์ธต | ์ญํ |
|---|---|
| GameMode | ๊ฒ์ ๋ก์ง (Server Only) |
| GameState | ์ํ ๋ณต์ |
| PlayerController | UI ํธ๋ฆฌ๊ฑฐ |
| MainHUD | UI ๊ด๋ฆฌ |
| Panel | ์ค์ UI ๋ ๋๋ง |
๊ฐ ๊ณ์ธต์ ์ญํ ์ ๋ช ํํ ๋ถ๋ฆฌํ์๋ค.
[Server]
GameMode
โ
GameState
[Client]
GameState (OnRep)
โ
PlayerController
โ
MainHUD
โ
Panels
[Panels]
- GamePanel (ํด / ์๊ฐ / ์ ๊ดํ)
- ChatPanel (์ฑํ
)
- LoginPanel (๋ก๊ทธ์ธ)
- StatusPanel (์ ์ )
- ์ฑํ ๊ธฐ๋ฐ ์ ๋ ฅ ๊ตฌ์กฐ๋ฅผ UI ์ค์ฌ ๊ตฌ์กฐ๋ก ํ์ฅํ๋ฉด์, GameState(OnRep)์ RPC ํ๋ฆ์ ํตํด ์๋ฒ ์ํ๋ฅผ ํด๋ผ์ด์ธํธ UI๊น์ง ์์ ์ ์ผ๋ก ์ฐ๊ฒฐํ๋ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ค.