๐ง Unreal์ Replication ๊ฐ๋ ์ ์์๋ณด๊ณ ๋ฉํฐํ๋ ์ด๋ฅผ ๋ง๋ค์ด๋ณด์.
์๋ง์ ๊ฒ์ ์ฅ๋ฅด๊ฐ ์์ง๋ง ๊ทธ ์ค์์๋ ํผ์์๋ ํ๋ ์ดํ ์ ์๊ฑฐ๋, ์ฌ๋ฟ์ด์ ํ๋ฉด ๋ ์ฌ๋ฏธ์๋ ์ฅ๋ฅด๊ฐ ์๋ค.
์ด๋, ์ฌ๋ฌ ์ฌ๋์ด ๋ชจ์ฌ ํจ๊ป ํ๋ ์ดํ๋ ๊ฒ์ ๋ฉํฐํ๋ ์ด๋ผ๊ณ ํ๋ค.
์ด๋ฒ ์๋ฆฌ์ฆ์์๋ ์ค์ํ ๊ฐ๋
์ธ Replication์ ๋ํด์ ์์๋ณด๊ณ
๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธ๋ฆฌ์ผ ์์ง์์ ๋ฉํฐํ๋ ์ด ๊ฒ์ ์์ ๋ฅผ ๊ฐ๋จํ๊ฒ ์ ์ํด๋ณด์.
Replication ๊ฐ๋
Replication ์๋ฆฌ์ฆ
Replication ๊ฐ๋จ ์์
Session ๊ธฐ๋ฐ ๋ฉํฐํ๋ ์ด ์์
์ด๋ฒ ํฌ์คํ
์์๋ Widget
์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
๊ณต์ ๋์ด์ผ ํ๋ Widget
, ๊ฐ Client
์๊ฒ๋ง ๋ณด์ฌ์ผ ํ๋ Widget
์ ๋ํด์ ๋ชจ๋ ํด๋ณด๊ฒ ์ต๋๋ค.
๊ฐ๋จํ๊ฒ This is test widget
ํ
์คํธ๋ฅผ ๊ฐ์ง ์์ ฏ์ ๋ง๋ค์์ต๋๋ค.
์ด์ ํ๋ ์ด์ด๊ฐ E
ํค๋ฅผ ๋๋ฅด๋ฉด ์์ ฏ์ ์ถ๊ฐํด๋ณด๊ฒ ์ต๋๋ค.
Create Widget
์ผ๋ก WB_Test๋ฅผ ์ถ๊ฐํ๋ ์ด๋ฒคํธ๋ฅผ ๋ง๋ค์๊ณ ,
์
๋ ฅ ์ ์คํํด์ฃผ๊ฒ ์ต๋๋ค.
ํ๋ ์ดํด๋ณด๋ฉด ์
๋ ฅ๋ง๋ค ๊ฐ๊ฐ์ Client
์๊ฒ ์์ฑ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ฒ์ Run On Server
์ด๋ฒคํธ์ ์ฐ๊ฒฐ ํ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
ํ๋ ์ดํด๋ณด๋ฉด?
์๋ฌด์ผ๋ ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ข
๋ฃํ๋ฉด "์์ฑ๋ ์์ ฏ์ด Validํ์ง ์์ ์ฝ์ ์ ์๋ค" ๊ทธ๋ฐ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
Test Widget
๋ณ์๋ฅผ Replicate
ํด์ฃผ์ด๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค.
์์ ฏ์ ๋ํ ๋ด์ฉ์ ๋ง์ ์๊ฒฌ๋ค์ด ์๋๋ฐ ์๋ ํฌ๋ผ์์ ํ์ธํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด์ฉ์ ์ ๋ฆฌํ์๋ฉด
2๋ฒ์ ์ข ๋ ์์ธํ ์ค๋ช
ํ๋ฉด ์์ ฏ์ ํด๋ผ์ด์ธํธ์์๋ง ์๋ํ๋ฏ๋ก ์๋ฒ์์ ์คํํ ๊ฒฝ์ฐ ์คํจํ๋ค.
๋ผ๊ณ ํฉ๋๋ค.
๊ทธ๋์ ์์ ฏ ๋ณ์๋ฅผ Replicate
ํด์ฃผ์ด๋ ๋์ผํ๊ฒ ์คํจํ ๊ฒ์ด์ฃ .
๊ทธ๋ ๋ค๋ฉด Multicast
๋ฅผ ํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์??
ํ๋ ์ดํด๋ณด๋ฉด 1๋ฒ์์ ์คํํ์ฌ๋ ๋ชจ๋ Client
์๊ฒ ์์ ฏ์ด ์์ฑ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ข
๋ฃํ๋ฉด ์ญ์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ฃ .
์ด๋ฒ์ Run On Owning Client
๋ก ์คํํด๋ณด๊ฒ ์ต๋๋ค.
Multicast
์ ์์น์ ๋ณ๊ฒฝํด์ฃผ์ธ์.
์คํํ๋ฉด ๊ฐ Client
์๊ฒ ์์ ฏ์ด ์์ฑ๋๋ฉฐ ์ค๋ฅ๋ํ ๋ฐ์ํ์ง ์์ต๋๋ค.
๋ฉํฐํ๋ ์ด์์ ์ถฉ๋์ ์๋ฒ๊ฐ ๊ด์ฅํ๋ค๊ณ ํ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ถฉ๋ ์ ํ๋ ์ด์ด์ Interaction
์ธํฐํ์ด์ค๋ฅผ ์คํํด์ ์์ ฏ์ ์ถ๊ฐํด๋ณด๊ฒ ์ต๋๋ค.
์๋ก์ด ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ๋ง๋ค์ด์ Overlap์์ Interaction
์ธํฐํ์ด์ค๋ฅผ ํธ์ถํด์ฃผ์์ต๋๋ค.
์ธํฐํ์ด์ค๊ฐ ํธ์ถ๋ ๋ Run On Owning Client
๋ฅผ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
๋ชจ๋ Client
์๊ฒ ์คํ์ด ๋์ฃ .
์ด๋ ์ถฉ๋ ์ด๋ฒคํธ ์ ์์ ๊ถ์ ๋ํ ๋ฌธ์ ๋ก ๋ฐ์ํด ๋ชจ๋ Client
์๊ฒ์ ํธ์ถ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ๋์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์์ ๊ถ์ ์ง์ ํด์ฃผ๋ ๊ฒ์ ๋๋ค.
Run On Server
๋ฅผ ๊ฑฐ์ณ์ ์คํํ๊ฑฐ๋,
์ถฉ๋ ์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ฅผ ์๋ฒ์์๋ง ์คํํ๊ณ ์กํฐ์ ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋ฉ๋๋ค.
Switch Has Authority
๋ฅผ ์ฌ์ฉํ์ผ๋ ํ๋ ์ด์ด๋ Run On Server
๋ฅผ ๊ฑฐ์น ํ์๊ฐ ์์ต๋๋ค.
๋ ๋ฐฉ์ ๋ชจ๋๋ค ๊ฐ Client
๋ง๋ค ๋ฐ๋ก ์คํ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ถ๊ฐ์ ์ผ๋ก Begin Play
์ Create Widget
์ ๋ํ ์๊ฒฌ์ด ์์ด์ ๊ฐ์ ธ ์์ต๋๋ค.
Do not use begin play for widget construction unless you are making a single player game.
It runs begin play on client and server (separately)
- On start:
- Client โ begin play โ create widget from class = success
- Server โ begin play โ create widget from class = always fail resulting in null return
Widgets will only work on clients so it will fail when running on rhe server.
์ฑ๊ธ ํ๋ ์ด์ด ๊ฒ์์ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด Begin Play
์์ ์์ ฏ์ ์์ฑํ์ง ๋ง๋ผ๊ณ ํฉ๋๋ค.
์์ ฏ์ ํด๋ผ์ด์ธํธ์์๋ง ์๋ํ๋ฏ๋ก ์๋ฒ์์ ์คํํ ๊ฒฝ์ฐ ์คํจํ๋ ์๊น์ 2๋ฒ ์ด์ ๋ก ์ธํ ๊ฒ ๊ฐ์ต๋๋ค.