상세 해설 - Bolt 내의 신뢰성

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

State

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

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

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

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

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

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

Back To Top

이벤트

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

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

Back To Top

커맨드

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

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

Back To Top

프로토콜 토큰

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

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

기술문서 TOP으로 돌아가기