๐ RPC์ ๋คํธ์ํฌ ๊ฒ์ ๊ธฐ์ด – ๋ฉํฐํ๋ ์ด์ด ๋๊ธฐํ ์ดํดํ๊ธฐ
๋ฉํฐํ๋ ์ด์ด ๊ฒ์์ ๋ง๋ค๋ ค๋ฉด, ํ๋ ์ด์ด ๊ฐ ๋ฐ์ดํฐ ๋๊ธฐํ๊ฐ ํ์๋ค.
์๋ฅผ ๋ค์ด, A ํ๋ ์ด์ด๊ฐ ์ด์ ์๋ฉด B ํ๋ ์ด์ด ํ๋ฉด์๋ ๊ฐ์ ์ฅ๋ฉด์ด ๋ณด์ฌ์ผ ํ๋ค.
์ด๋ ์ฌ์ฉํ๋ ํต์ฌ ๊ฐ๋
์ด **RPC(Remote Procedure Call)**์ด๋ค.
1. RPC๋ ๋ฌด์์ธ๊ฐ?
-
์๊ฒฉ ํ๋ก์์ ํธ์ถ(Remote Procedure Call)
-
ํด๋ผ์ด์ธํธ ๋๋ ์๋ฒ์์ ํจ์๋ฅผ ํธ์ถ → ๋ค๋ฅธ ํด๋ผ์ด์ธํธ/์๋ฒ์์ ์คํ
-
์ฆ, ๋คํธ์ํฌ ์์์ ํจ์ ํธ์ถ์ ๋๊ธฐํํ๋ ๋ฐฉ๋ฒ
์์
-
ํ๋ ์ด์ด๊ฐ ์ ํ → Jump() ํจ์ ํธ์ถ
-
RPC๋ฅผ ํตํด ์๋ฒ/๋ค๋ฅธ ํด๋ผ์ด์ธํธ์์๋ Jump() ์คํ
2. Unity์์ RPC ์ฌ์ฉ
Unity์์๋ Mirror, Photon ๊ฐ์ ๋คํธ์ํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ RPC ์ ๊ณต
Photon ์์
-
[PunRPC]: ๋คํธ์ํฌ์์ ํธ์ถ ๊ฐ๋ฅํ ํจ์ ํ์ -
RpcTarget.All: ์์ ๊ณผ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ ๋ชจ๋์์ ์คํ
3. ๋คํธ์ํฌ ๊ฒ์ ๋๊ธฐํ ๊ธฐ๋ณธ
-
Transform ๋๊ธฐํ: ์์น, ํ์ , ์ ๋๋ฉ์ด์
-
์ํ ๋๊ธฐํ: ์ฒด๋ ฅ, ์ ์, ์์ดํ ํ๋
-
์ด๋ฒคํธ ๋๊ธฐํ: ๊ณต๊ฒฉ, ์คํฌ, ์ ํ ๋ฑ
๐ก TIP:
-
์ค์ํ ์ํ → ์๋ฒ ๊ถํ(Server Authority)
-
๋น์ค์ ์ํ → ํด๋ผ์ด์ธํธ ์์ธก(Client Prediction)
4. ์ค์ ํ
-
๋คํธ์ํฌ ์ง์ฐ(Latency) ๊ณ ๋ ค → ๋ณด๊ฐ(Interpolation) ์ฌ์ฉ
-
ํจํท ์ต์ํ → ๋งค ํ๋ ์ ์ ์กX, ์ผ์ ๊ฐ๊ฒฉ ์ ์ก
-
๋ณด์ → ํด๋ผ์ด์ธํธ ๊ถํ์ผ๋ก ์ค์ํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๊ธ์ง
5. ๋ง๋ฌด๋ฆฌ
RPC์ ๋คํธ์ํฌ ๋๊ธฐํ๋ ๋ฉํฐํ๋ ์ด์ด ๊ฒ์์ ํต์ฌ ๊ธฐ์ ์ด๋ค.
-
ํ๋ ์ด์ด ํ๋ ์ค์๊ฐ ๋ฐ์
-
์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ ์ง
-
์ง์ฐ๊ณผ ๋ถํ ์ต์ํ → ๋ถ๋๋ฌ์ด ๋ฉํฐํ๋ ์ด ๊ฒฝํ
๐ ๋ค์ ๊ธ์์๋ ๋คํธ์ํฌ ๊ธฐ๋ฐ ์ฑํ ์์คํ ๊ตฌํ์ ๋ค๋ค, ๋ฉํฐํ๋ ์ด์ด ๊ฒ์์์ ์์ ๊ธฐ๋ฅ๊น์ง ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ๋ค.
๋๊ธ
๋๊ธ ์ฐ๊ธฐ