#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 | ⭕ | ⭕ | 게임 시작/종료, 점수, 인벤토리 |
'개발 > 고도 엔진.Godot engine' 카테고리의 다른 글
| 고도엔진 Godot 4.5 / multiplayer.is_server(), is_multiplayer_authority() 비교 (0) | 2025.09.24 |
|---|---|
| 고도엔진 Godot 4.5 / 멀티플레이 튜토리얼 메모 (0) | 2025.09.24 |
| 고도엔진 Godot 4.5 / call_deferred() (0) | 2025.09.19 |
| 고도엔진 Godot 4.5 / get_tree() (0) | 2025.09.19 |
| 고도엔진 Godot 4.5 / 일반 어플리케이션 개발 관련. _physics_process _process 시그널 (0) | 2025.09.19 |