#RPC
#@rpc(mode: String = "authority", sync: String = "call_remote", transfer_mode: String = "unreliable", transfer_channel: int = 0)
# "authority" / "any_peer"  
# "call_local" 호스트 서버 캐릭터도 실행 / "call_remote" 클라이언트 캐릭터만 실행
# "unreliable" 보증안함. 빠름. 위치정보 같은 것/ "unreliable_ordered" 순서는 보증. 채팅메시지/ "reliable" 보증. 인벤토리 등 중요한 정보.

 

 

제미니 답변 : 

 

고도 엔진의 멀티플레이에서 transfer_mode는 데이터 패킷을 네트워크를 통해 전송하는 방식을 결정합니다. 세 가지 주요 모드인 unreliable, unreliable_ordered, 그리고 reliable의 차이점은 다음과 같습니다.

unreliable

  • 특징: 이 모드는 데이터 전송의 성공을 보장하지 않습니다. 패킷이 손실되거나 순서가 뒤바뀌어 도착할 수 있습니다.
  • 사용 예시: 실시간으로 자주 업데이트되는 정보, 예를 들어 캐릭터의 위치, 총알의 궤적, 또는 파티클 효과 등에 적합합니다. 이런 데이터는 최신 정보가 중요하며, 약간의 손실이나 지연은 크게 문제가 되지 않습니다.
  • 장점: 전송 속도가 빠르며 오버헤드가 적습니다.
  • 단점: 패킷 손실이 발생할 수 있습니다.

unreliable_ordered

  • 특징: 이 모드는 unreliable 모드와 마찬가지로 데이터 전송의 성공을 보장하지 않습니다. 하지만 패킷의 순서는 보장합니다. 패킷이 손실될 수는 있지만, 도착하는 패킷들은 보낸 순서대로 도착합니다.
  • 사용 예시: 채팅 메시지처럼 순서가 중요하지만, 몇몇 메시지가 손실되어도 게임 플레이에 큰 지장이 없는 경우에 사용됩니다.
  • 장점: 순서가 보장되어 데이터의 일관성을 유지할 수 있으며, reliable 모드보다 오버헤드가 적습니다.
  • 단점: 패킷 손실은 여전히 발생할 수 있습니다.

reliable

  • 특징: 이 모드는 데이터 전송의 성공을 보장합니다. 패킷이 손실되거나 순서가 뒤바뀌면, 고도 엔진은 이를 재전송하여 모든 패킷이 정확히 한 번, 그리고 보낸 순서대로 도착하도록 보장합니다.
  • 사용 예시: 게임의 시작, 게임 종료, 점수 업데이트, 플레이어 인벤토리 변경 등 절대 놓쳐서는 안 되는 중요한 정보에 사용됩니다.
  • 장점: 데이터의 손실이 없고 순서가 완벽하게 보장됩니다.
  • 단점: 재전송 메커니즘으로 인해 오버헤드가 가장 크고, 지연(latency)이 발생할 수 있습니다.

요약

모드 전송 보장 순서 보장 적합한 용도
unreliable 실시간 위치, 총알, 파티클
unreliable_ordered 채팅 메시지, 이벤트 로그
reliable 게임 시작/종료, 점수, 인벤토리

 

+ Recent posts