π 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μ λ€νΈμν¬ λκΈ°νλ λ©ν°νλ μ΄μ΄ κ²μμ ν΅μ¬ κΈ°μ μ΄λ€.
-
νλ μ΄μ΄ νλ μ€μκ° λ°μ
-
μλ²μ ν΄λΌμ΄μΈνΈ κ° λ°μ΄ν° μΌκ΄μ± μ μ§
-
μ§μ°κ³Ό λΆν μ΅μν → λΆλλ¬μ΄ λ©ν°νλ μ΄ κ²½ν
π λ€μ κΈμμλ λ€νΈμν¬ κΈ°λ° μ±ν μμ€ν ꡬνμ λ€λ€, λ©ν°νλ μ΄μ΄ κ²μμμ μμ κΈ°λ₯κΉμ§ ꡬννλ λ°©λ²μ μ΄ν΄λ³΄κ² λ€.
λκΈ
λκΈ μ°κΈ°