Skip to main content
Version: bleeding-edge 🩸

Behördenkonzepte

Alles was Sie über die Konzepte der Behörde & Network Authority wissen müssen.

Behörde

Einige Klassen können nur auf dem Server erzeugt werden, andere können nur im Client erzeugt werden, und es gibt einige, die sowohl auf Server als auch auf Client erzeugt werden können. Die Seite, auf der die Klasse entsteht, nennt sich Authority.

Methods and Events Availability

Einige Methoden und Ereignisse in der API sind nur auf einer bestimmten Seite verfügbar (Client oder Server), andere sind nur auf der Seite verfügbar, die ihr Autorität):

Serverseite

Methode oder Ereignisse, die nur auf der Server Seite aufgerufen werden können.

Client-Seite

Methoden oder Ereignisse, die nur auf der Client Seite aufgerufen werden können.

Behördenseite

Methoden oder Ereignisse, die nur auf der Seite aufgerufen werden können, die sie hervorgerufen hat.

Network Authority Side

Methods or Events which can be called in the Server and also in the Client if the Local Player is the Network Authority of that entity.

Both Sides

Methods or Events which can only be called in any side.

tip

All entities spawned in the Server will be automatically synced in the Client. I.e. you can access it's methods and get all data from it without needing to manually sync it.

In the same way, entities spawned in the Client will only exist for that Client, trying to send those entities to the server will cause errors.

Netzwerk-Behörde

Another important concept in nanos world is the Network Authority. We have a "distributed network authority" concept, which means the work of calculating physics and AI (for example) are automatically assigned and distributed to the clients. In general, if a Base Actor is near an in-game Character, it's physics will be calculated by that player's device. The Player that is responsible for calculating and sharing the results is called Network Authority.

The Player assigned is automatically calculated by the server and takes some things into consideration, this calculation is only made if the Player is possessing a Character:

  • Die Distanz vom Charakter zum Objekt
  • If the Character is grabbing a Prop
  • If the Character is handling a Base Pickable
  • Wenn der Charakter ein Fahrzeug fährt
  • Wenn der Charakter nur erschossen etwas

In all this cases, the Player will be automatically assigned to be the Network Authority of that Object.

Die aktuelle Netzwerkbehörde überschreiben

It is possible to override the current Network Authority of a specific entity by using the method :SetNetworkAuthority().

tip

Under certain circumstances, actors may not be in Distributed Network Authority mode. This means they cannot have their current network authority changed. Example: if a player is driving a Vehicle or using a Weapon, mandatorily he is the the Vehicle and Weapons's Network Authority, and this cannot be overwritten through scripting. To validate if an Actor can have it overridden, you can use the method :IsNetworkDistributed().

You can also prevent it from being automatically distributed to other Players by calling :SetNetworkAuthorityAutoDistributed(false).

caution

Always remember to restore the automatic Network Authority Distribution by calling :SetNetworkAuthorityAutoDistributed(true). Otherwise that entity may behave completely weird.

Examples of actions that are only executed by the Network Authority of that Actor

  • Objects Physics Sync (einschließlich beim Aufruf von :SetForce()).
  • NPCs walking with :MoveTo() or :Follow().

Debugging Network & Network Authority

We've added a new option in the settings to Draw Network Debug information in the World, you can toggle it in the settings (Settings -> Debug -> Draw Network Debug), it will draw squares on each entity and traces representing their networked movement.

Entity Square Colors Meaning

The Square in the entities represent the state in the Network Authority and it's health.

ColorMeaning
BLUEYou are the current Network Authority of that entity.
You are sharing sync data to the other players.
WHITEYou are not the Network Authority and the entity is sleeping.
The current Network Authority is not sending sync data because the entity is sleeping.
BLACKYou are the Authority of that entity.
The entity was spawned on client side then you are not sending sync data.
GREENYou are not the Network Authority and the entity is being synced in a good cadence (no lag).
ORANGEYou are not the Network Authority and the entity is being synced in an ok cadence (small lag - < 100ms).
REDYou are not the Network Authority and the entity is being synced in an bad cadence (big lag - > 100ms, maybe even with packet loss).

Entity Arrow Traces Colors Meaning

The Arrow Traces in the entities represent the network data received from the server. If you are the network authority you won't see the arrow traces. The arrow points from where the entity is currently in your machine and where it should be accordingly to the network authority.

ColorMeaning
GREENThe entity is being synced in a good cadence (no lag).
ORANGEThe entity is being synced in an ok cadence (small lag - < 100ms).
REDThe entity is being synced in an bad cadence (big lag - > 100ms, maybe even with packet loss).