Skip to main content

Node scripting

Node based scripting allow you to create custom interactions and behaviors for your dversl world.

Dverso node scripting is based on a hybrid control and data flow, that means you can forward execution based on values, mix them, transform values and apply custom states to the world.

Getting started

To start scripting you need to create a new node script, you can do this by clicking on the + button on the scripting panel. After it you can double click and proceed opening the node editor.

Here you can add nodes right clicking and then selecting the node you want to add from it's category.

Sockets, connections and node types

Dverso nodes offers a variety of types, ranging from strings, numbers, booleans, 3d objects and more. The main sockets types tho are Exec, values and handlers.

Exec sockets are meant to trigger the node execution, they are used to start the node execution and can be connected to other exec sockets.

Values sockets are used to pass values between nodes, they can be connected to other Matching values sockets.

Handlers are used to handle events, they can be used to revoke events, an example can be setting up a "On Interaction" node and after some conditions you can remove this interaction by revoking the event handler.

General informations

  • Node scripts always start with a Event->Start Node. (Not necessary for modules).
  • You can multi select nodes by pressing shift while selecting and the duplicate them by pressing ctrl + d or delete them by pressing ctrl + x.
  • Node scripts execution always return to the default map state, so that in editor view it should always be in a graceful starting state.
  • Node scripts execution is always stopped while inside the editor and then resumed when you close it.
  • Node scripts must be saved on each change unlike the normal dverso world behaviour.

Grasping basic concepts of dverso architecture

dverso architecture is based on an Actor->Controller structure. Basically every object in the world is driven by a NetworkController, the player by a LocalMovementController and so on. Nodes can either hijack these defaults controller by injecting a "state", that essentially is a custom controller, or can be used to manipulate the objects in a more direct way by creating a completely custom controller.

Examples