RPC

RPC 주의점

1. 플레이어 간에 게임 플레이 상호작용이 아닌 바로 없어져 버리는 것들의 전송 - RPC 사용O

2. 시기가 중요하지 않은 상점 내 구매(호출한 플레이어에게만 중요한 구매 - 자금감소, 인벤토리 추가) - RPC 사용 X

3. 이름, 색상, 스킨과 같은 초기 설정 - RPC 사용O

4. 게임 모드, 준비상태 - RPC 사용O

 

RPC 호출해보기

RPC는 틱 정렬이 되지 않으므로 FixedUpdateNetwork() 등 Fusion 입력 처리를 사용할 필요가 없다.

void Update()
{
    // Object.HasInputAuthority는 NetworkObject.Spawn()에서 생성할 때 파라미터로 Runner를 정해주는데 결국 생성이 되었냐에 대한 것이다.
    if (Object.HasInputAuthority && Input.GetKeyDown(KeyCode.R))
    {
        RPC_SendMessage("Hey Mate!");
    }
}

RPC 속성 사용

- string을 받아와서 rpc의 info가 로컬이면 You said~ 아니면 Some other said ~ 로 텍스트를 출력한다.(누가 호출했는지)

// RpcSources : 전송할 수 있는 피어
// RpcTargets : 피어가 실행되는 피어
// 1. All : 모두에게 전송 / 세션 내의 모든 피어에 의해서 실행됨(서버 포함)
// 2. Proxies : 나 말고 전송 / 객체에 대하여 입력 권한 또는 상태 권한을 갖고 있지 않는 피어에 의해 실행됨
// 3. InputAuthority : 입력 권한 있는 피어만 전송 / 객체에 대한 입력 권한이 있는 피어에 의해 실행됨
// 4. StateAuthority : 상태 권한 있는 피어만 전송 / 객체에 대한 상태 권한이 있는 피어에 의해 실행됨
// RpcInfo
// - Tick : 어떤 곳에서 틱이 전송되었는지
// - Source : 어떤 플레이어(PlayerRef)가 보냈는지
// - Channel : Unrealiable 또는 Reliable RPC로 보냈는지 여부
// - IsInvokeLocal : 이 RPC를 원래 호출한 로컬 플레이어인지의 여부
// * 공식 문서엔 HostMode를 설정하지 않았지만 이걸 쓰지 않으면 계속 원격 플레이어가 된다. (기본이 서버 모드여서 그런 듯)
[Rpc(RpcSources.All, RpcTargets.InputAuthority, HostMode = RpcHostMode.SourceIsHostPlayer)]
public void RPC_SendMessage(string message, RpcInfo info = default)
{
    if (!_messages)
    {
        _messages = FindObjectOfType<Text>();
    }
    
    Debug.Log(info.Channel);
    Debug.Log(info.Source.RawEncoded);
    Debug.Log(info.Source.PlayerId);
    Debug.Log(Runner.Simulation.LocalPlayer.PlayerId); 
    if (info.Source == Runner.Simulation.LocalPlayer)
    {
        message = $"You said: {message}\n";
    }
    else
    {
        message = $"Some other player said: {message}\n";
    }

    _messages.text += message;
}

추가 RPC 속성

https://doc.photonengine.com/ko-KR/fusion/current/manual/rpc

 

Remote Procedure Calls | Photon Engine

 

doc.photonengine.com

 

 

'공부 모음 > 포톤 퓨전 시작해보기' 카테고리의 다른 글

포톤 퓨전 속성 변경  (0) 2022.12.09
포톤 퓨전 물리  (2) 2022.12.08
포톤 퓨전 Prediction  (0) 2022.12.08
포톤 퓨전 시작하기, 씬 설정하기  (0) 2022.12.07

+ Recent posts