Network Binding Properties
Open 3D Engine (O3DE), the successor to Lumberyard, is now available in Developer Preview. Download O3DE |
For network binding features to function, you must have a Creating a NetBindable Component.
Properties
You can configure networking binding for properties by adding the
netSynched
table to the description of the variable inside of the
Properties
table.
local ExampleScript = { Properties = { Speed = { default = 0, -- Supports numbers, strings, booleans, and nils for net bindings. min = 0, max = 100, step = 1, description = "Speed in m/s for the ...", -- If this table is missing, it is assumed the value is not networked. netSynched = { -- Optional fields OnNewValue = <function> -- OnNewValue is called whenever the property has a -- new value. OnNewValue accepts one parameter,which -- is the entity table for the instance that changed. -- The following flags are mainly here for debugging and profiling convenience. Enabled = true -- Controls whether the field is network enabled. If -- missing, assumes true. ForceIndex = [1..32] -- Profiling helper tool to force a property to use a -- specific DataSet to make understanding what data is -- being used where easier. }`` } } } return ExampleScript
After you add networking to a property, any changes to the property are reflected across the network.
RPCs
Exposing RPCs to scripts involves creating a new table inside of the component table, but outside of the properties table, as shown in the following example.
local ExampleScript = { Properties = { -- ... }, -- Table of remote procedure calls (RPCs) that the script wants to implement. NetRPCs = { RPCNoParam = { OnMaster = <function> -- The function to be called on the Primary Script. -- The function should return a bool value that -- indicates whether or not proxy components can -- execute the RPC on themselves. Required. OnProxy = <function> -- The function to be called on the Proxy Script. -- This function is optional and can be excluded if -- the master never allows proxies to execute the function call. } } } return ExampleScript
You can invoke the RPC just like any other function. There is no need to specify the
OnMaster/OnProxy
from the calling script. For example, you can call
RPCs as in the following example.
self.NetRPCs.RPCNoParam() self.NetRPCs.RPCParam(1.0)