Ownership of entities (game objects with a Bolt Entity component attached) is broken down into two separate categories: Owner and Controller. They are not mutually exclusive, you can be any of the following:
- Owner and Controller
Being an Owner is a non-changeable property that is assigned to the peer which the
BoltNetwork.Instantiate call is issued on. This peer is the only one where
BoltEntity.isOwner will return true. Ownership of an entity can not be transferred to anyone else. The owner of an entity has absolute control over everything (state, transform, etc.).
Being a Controller of an entity is something which can be assigned, taken away and transferred to other peers. Only the Owner can assign and take away the control of an entity.
The Owner can assign control of an entity to another peer by calling
BoltEntity.AssignControl(otherConnection); and passing in the connection to the other peer. Control can also be removed by calling
BoltEntity.RevokeControl(). This peer will now be considered the Controller of this entity.
The Owner can also take control of an entity himself, he will then be considered both the Owner and Controller. Taking control of an entity you are the Owner of is done by calling
BoltEntity.TakeControl and releasing control is done with
The Controller is the only one that the
BoltEntity.hasControl property will return true on.
If you are neither the Owner or Controller of an entity, both
BoltEntity.hasControl will return false. In general you can't do very much with the entity in question and it's usually something you don't have any control of in the game (like another players avatar for example).