In Depth - Entity Ownership

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
  • Controller
  • Owner and Controller
  • Neither

Owner

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.).

Controller

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 BoltEntity.ReleaseControl.

The Controller is the only one that the BoltEntity.hasControl property will return true on.

Neither

If you are neither the Owner or Controller of an entity, both BoltEntity.isOwner and 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).

 To Document Top