エンティティのオーナーシップ
エンティティのオーナーシップ(Bolt Entityコンポーネントが付与されたゲームオブジェクト)は、2つの個別カテゴリー、OwnerとControllerに分けられます。
これは完全に排他的ではありません。以下のいずれでもあり得ます。
- オーナー
- コントローラー
- オーナーおよびコントローラー
- どちらでもない
オーナー
オーナー であることは、BoltNetwork.Instantiate
コールが発行されるピアに割り当てられている、変更不可能なプロパティです。
このピアは、BoltEntity.isOwnerがtrue
を返す唯一のピアです。エンティティのオーナーシップは他者に譲渡できません。
エンティティのオーナーシップは、全て(状態、変換など)に対して絶対的な管理権を持ちます。
コントローラー
エンティティの コントローラー であることは、付与、剥奪、他者への譲渡が可能です。
オーナー だけがエンティティの権利を割り当てたり剥奪したりすることができます。
オーナー は、BoltEntity.AssignControl(otherConnection);を呼び出し、他のピアへの接続に因数を渡すことで、エンティティの管理を他のピアに割り当てることができます。管理権の剥奪は、BoltEntity.RevokeControl()
を呼び出すことで行えます。
このピアは、このエンティティの コントローラー とされます。
オーナー はエンティティの管理を自分に割り当てることもできます。この場合、オーナー かつ コントローラー であるとされます。
オーナー であるエンティティの管理の取得は、BoltEntity.TakeControl
の呼び出しにより行うことができます。管理を手放す場合は、BoltEntity.ReleaseControl
により行うことができます。
コントローラー は、BoltEntity.hasControl
プロパティがtrueを返す唯一のプロパティです。
どちらでもない
エンティティの オーナー でも コントローラー でもない場合、BoltEntity.isOwner
およびBoltEntity.hasControl
はどちらもfalseを返すこととなります。
一般に、この状態だとエンティティについてできることは多くありません。ゲーム内で管理権限を持たないということになります(他のプレイヤーのアバターなど)。