상세 해설 - SetScope, Freeze, Idle

Bolt에는 특정 엔티티에 대한 상태 업데이트가 원격으로 전송될지 여부를 제어해주는 3개의 메소드가 있습니다.

SetScope(BoltConnection 연결, Bool 범위)

이 메소드를 호출 할 때 connection과, boolean 형 true/false 를 전달합니다. 이 엔티티에 true 를 전달하면, 연결은 다른 끝에서 생성될 것이고 상태 업데이트를 수신할 것 입니다. 엔티티가 원격에 이미 존재하고 있다면 아무것도 일어나지 않습니다. false 를 전달하면 엔티티는 연결의 다른 끝에서 완전하게 파괴될 것입니다. false 전달할 때 다른 끝에서 엔티티가 존재하지 않는다면 아무것도 일어나지 않습니다.

false 를 전달하여 원격 연결되어 있는 엔티티를 제거하면, 다음번에는 true 를 전달하여 네트워크를 통해 이 엔티티가 가지고 있는 모든 데이터를 재전송하여 생성할 수 있습니다. SetScope 를 사용할 수 있게 하려면 Bolt Settings' 윈도우에서 'Scoping Mode' 를 'Automatic' 에서 'Manual' 으로 변경해 주어야 합니다.

Back To Top

SetScope 를 사용하기 위한 시나리오 예제는 무엇인가요?

플레이어 캐릭터가 세계의 다른 부분으로 이동하는것은 씬 로딩이 필요하고 entity.SetScope(playerConnection, false) 는 플레이어가 떠난 세계의 이전 장소에 존재했던 모든 엔티티들을 파괴하는데 사용될 수 (사용해야만) 있습니다.

Back To Top

Idle(BoltConnection Connection, Bool Idle)

이 메소드는 SetScope 와 동일한 특징을 가지고 있습니다. connection과 boolean true/false 값을 전달합니다. true 를 전달하면 이 엔티티를 전달한 connection에서 'idle' 로 설정하는 것으로 상태 갱신 전송을 중지한다는 의미입니다. false 를 전달하면 'idle' 상태를 제거하고 상태 갱신이 다시 흐르게 될 것 입니다. 이 것은 연결 마다 수행되어야 하며 글로벌 'idle' 상태로 설정할 수 있는 것은 없습니다.

Idle 을 사용하기 위한 시나리오 예제는 무엇인가요?

특정 영역의 관심 지역 기능을 구현하고 특정 플레이어가 세계의 엔티티에 관심 지역을 떠나는 경우 엔티티에 대한 entity.Idle(playerConnection, true) 을 설정하면 상태 업데이트가 플레이어로 전송되지 않습니다.

Back To Top

Freeze(bool Frozen)

Freeze 는 네트워크 대역폭과 CPU 부하를 줄여주는 가장 최신의 메소드 입니다. Freeze 는 전역 설정으로 엔티티의 소요자에 대해서만 활성/비활성 할 수 있습니다. entity.Freeze(true) 를 호출할 때 다음사항들이 발생됩니다.

  1. 모든 Bolt의 Simulate* 메소드는 더이상 호출되지 않습니다.
  2. 속성 콜백들이 호출되지 않습니다.
  3. 더이상 네트워크상으로 상태 변화가 전송되지 않을 것 입니다.

이에 대한 프록시를 수신한 모든 사람에게 엔티티는 여전히 존재할 것이고, 이벤트 발생 또는 다른 상태의 파라미터등과 같은 다른 Bolt 기능과 같이 사용할 수 있을 것 입니다.

entity.Freeze(false) 를 호출했을 때는 다음사항들이 발생됩니다.

  1. Bolt는 다시 Simulate* 호출을 시작할 것 입니다.
  2. 모든 대기중 속성 콜백들이 호출됩니다.
  3. 변경된 상태가 모든 리모트로 네트워크를 통하여 복제되기 시작합니다.

Back To Top

프리즈 사용을 위한 시나리오 예제는 무엇인가요?

큰 세계에서 관심 지역 솔루션을 구축하고 있으면, 각 특정 플레이어 연결서 Idle 을 호출하는 것이 맞고, 세계에서 엔티티 근처에 플레이어가 아무도 없을 때 entity.Freeze(true) 를 호출 하기를 원할 수 도 있습니다.

기술문서 TOP으로 돌아가기