상세 해설 - 엔티티 소유권
엔티티(Bolt 엔티티 컴포넌트가 붙여진 게임 오브젝트)들의 소유권은 두 개의 분리된 카테고리로 나눌 수 있습니다:소유자와 컨트롤러 입니다. 상호 배타적인 것은 아니며 다음의 하나가 될 수 있습니다:
- 소유자
- 컨트롤러
- 소유자와 컨트롤러
- 아무것도 아님
소유자
소유자가 되는 것은 변경할 수 없는 속성으로 BoltNetwork.Instantiate
호출을 발행한 피어에게 지정됩니다.
이 피어가 BoltEntity.isOwner
를 true로 리턴해주는 유일한 것 입니다. 엔티티의 소유권은 아무에게도 양도될 수 없습니다. 엔티티의 소유자가 절대적으로 모든 것을 제어합니다(상태, 트랜스폼등).
컨트롤러
엔티티의 컨트롤러가 되는 것은 지정, 역할을 없애고 다른 피어들에게 양도할 수 있습니다. 소유자만이 엔티티의 제어권을 지정할 수 있고 없앨 수 있습니다.
소유자 BoltEntity.AssignControl(otherConnection);
를 호출하여 다른 피어에게 엔티티의 제어를 지정할 수 있고 다른 피어에게 연결해서 전달할 수 있습니다. 제어권은 BoltEntity.RevokeControl()
를 호출하여 없앨 수 있습니다. 이 피어는 엔티티의 컨트롤러 로 고려될 수 있습니다.
소유자는 엔티티 자체를 제어할 수도 있습니다. 그러면 소유자와 컨트롤러 모두로 간주될 것 입니다.
소유자로 제어권을 받는 것은 BoltEntity.TakeControl
를 호출하여 수행하며, 제어권을 없애는 것은 BoltEntity.ReleaseControl
으로 수행합니다.
컨트롤러 만이 BoltEntity.hasControl
속성을 true로 리턴해주게 됩니다.
아무것도 아님
엔티티의 소유자 또는 컨트롤러가 아니면 BoltEntity.isOwner
와 BoltEntity.hasControl
모두 false를 리턴할 것 입니다. 일반적으로 엔티티에 대해서 아무런 것도 하지 못하며 게임 내에서 아무런 제어를 할 수가 없습니다(예를 들면 다른 플레이어의 아바타와 같이).