PUN Classic (v1), PUN 2 and Bolt are in maintenance mode. PUN 2 will support Unity 2019 to 2022, but no new features will be added. Of course all your PUN & Bolt projects will continue to work and run with the known performance in the future. For any upcoming or new projects: please switch to Photon Fusion or Quantum.

상세 해설 - Bolt 내의 신뢰성

Bolt의 모든 다양한 전송 메커니즘의 신뢰성은 파악하기에 약간 벅차보일 수 있습니다. 여기에서는 Bolt에서 전송 할 수 있는 다양한 데이터 타입에 대해서 어떻게 동작하는지에 대해서 살펴보도록 하겠습니다.

State

가장 복잡한 것 부터 시작하겠습니다: 상태에 대한 속성들. 예를 들어 state.health = 50; 과 같이 상태의 속성 값을 변경할 때, Bolt는 이 변경사항을 감지하여 복제를 위한 속성으로 표시합니다(즉, 게임에 연결되어 있는 모든 사람에게 전송).

속성의 변화를 담고 있는 패킷이 없어진다면 Bolt는 이것을 감지하여 값이 재전송되어야 한다고 표시합니다. Bolt N 프레임마다 전송하고 있기 때문에, 연속해서 빠르게 두개의 값을 변경한 경우에는 가장 마지막 값만이 원격( 게임에 연결되어 있는 다른 플레이어들 )에서 보여지게 될 것 입니다

Bolt는 속성을 전송할 때 순서에 대해서는 보장해주지 않으며, 이 뜻은 아래처럼 두 개의 속성을 하나 변경후에 바로 변경했으면:

state.health = 50;
state.ammo = 10;

...healthammo 보다 먼저 도착한다는 보장은 없습니다. 심지어 동일한 패킷으로 도착하지 않을 수도 있습니다.

상태 속성에 대하여 유일하게 Bolt가 보장하는 것은: 속성의 가장 최신 값이 계속적으로 모든 연결된 원격에 도착한다는 것 입니다.

이벤트

Bolt 내의 이벤트는 두 가지 다른 방식으로 전송될 수 있습니다:비신뢰순서대로 신뢰. 비신뢰로 전송되는 이벤트는 도착한다는 것을 전혀 보장하고 있지 않지만, 도착한 것들은 전송한 순서와 동일할 것 입니다. 순서대로 신뢰로 전송된 이벤트들은 도착하는 것을 보장하며 언제나 동일한 순서입니다.

글로벌 이벤트들은 비신뢰순서대로 신뢰 모두 전송할 수 있습니다. 엔티티 이벤트들은 비신뢰로만 전송됩니다.

커맨드

커맨드는 최고의-효과 방식으로 전송됩니다. 커맨드는 완전 비신뢰이지만 일부 중복되어서 전송되는데, 이 뜻은 각 커맨드가 여러개의 패킷으로 전송되어 도착할 확률을 높여주게 됩니다. 커맨드 순서는 신뢰입니다: 명령이 누락될 수는 있으나 도착한 명령어들은 QueueInput() 호출로 큐에 입력된 순서대로 항상 전달될 것 입니다.

엔티티의 소유자가 컨트롤러로부터 커맨드를 받지 못했다면, MissingCommand() 콜백을 사용하여 누락된 것을 감지하고 기본 행동을 생성할 수도 있습니다.

프로토콜 토큰

IProtocolToken으로부터 상속된 클래스들은 Bolt에서 BoltNetwork.Instantiate, BoltNetwork.Connect, BoltEntity.AssignControl와 같이 여러가지 메소드에 전달될 수 있습니다. 이것과 같은 프로토콜 토큰들은 전달된 행동이 원격(다른 연결된 플레이어들)에서 항상 수신된다는 것을 보장할 수 있습니다.

State 에서 ProtocolToken 속성을 생성했다면 다른 속성 유형과 같이 동일한 조건의 대상이 될 것 입니다.


기술문서 TOP으로 돌아가기