Skip to content

Signal Modes

Krzysiek Justyński edited this page Nov 11, 2022 · 5 revisions

The initial implementation is available since version 1.3.

The Signal Modes concept was born from the need to support patching already released games. Flow Graphs serialize the state of its active nodes to a SaveGame. This works well, but there's one inherent limitation. If a player has SaveGame with a given Flow Node active and serialized to a SaveGame, we cannot remove this node from the graph post-launch. Hence we shouldn't remove any node post-launch to be perfectly (nomen omen) save.

Basics

Yet we need sometimes to change the logic of our game in patches. Signal Modes provide a solution for that. It allows designers to mark nodes as:

  • Enabled - Default state, node is fully executed.
  • Disabled - No logic executed, any Input Pin activation is ignored. Node instantly enters a deactivated state.
  • PassThrough - Internal node logic not executed. All connected outputs are triggered, node finishes its work.

This way we can deactivate nodes without removing them from the graph, so we can properly continue graph execution from a legacy SaveGame. Pin connections aren't serialized to a SaveGame, so we can safely change connections on pass-through nodes any way we need.

image

Allowed Signal Modes

Node author can limit a list of available signal nodes for a given Flow Node class. Some nodes are already acting like pass-through nodes by design, i.e. Reroute or Sequence. It would be redundant or confusing to mark them as PassThrough, so we removed that from the list of available signal modes.

AllowedSignalModes = {EFlowSignalMode::Enabled, EFlowSignalMode::Disabled};