Flow of Information
Machinations diagrams are dynamic beyond the flow of resources. Resources flow rates can be modified by changes in resource distribution. In addition, nodes can be triggered, activated or deactivated in response to changes in resource distribution. These modifications are indicated by a second class of edges called State Connections. State connections indicate how the current state of a node, the number of resources on it, affects target elements in the diagram. State connections are represented as dotted arrows. Labels and the type of elements they connect specify the type of state connection. There are four types of state connections that are characterized by the type of elements they connect and their labels:
Label Modifiers connect a source node to a target label (L) of a resource connection or a state connection. It indicates how state changes of the source node (dS) modify the value of the target label as indicated by the modifier's label (M). The new value takes effect on the subsequent time step. Thus, the next value of label that is the target of a number (n) of label modifiers is given by the following formula:
L(t+1) = L(t) + Sum(M*dS)
For example, in figure below every resource added to pool A adds 2 to value of the resource flow between pools B and C. Thus the first time B is activated, 1 resource flows to A and 3 resources flow to C, the second time, 1 resource still flows to A, but now 5 resources flow to C. The label of a label modifier always starts with a plus or minus symbol indicating incrementation or decrementation.
Label modifiers are frequently used to model different aspects of game behavior. For example, a pool might be used to represent a player's accumulated property in a game of Monopoly. The more property a player has, the more likely it is that player will collect money from other players. This can be represented by the diagram in figure below. (Note that many details are omitted in this diagram, in particular the diagram does not show how a player might acquire property.)
Node Modifiers connect two nodes. They indicate how state changes of the source node (dS) modify the number of resources on the target node (N) as indicated by the modifier's label (M). The state changes to the target node are further processed during the subsequent time step. Thus, the new number of resources on a node that is the target of a number (n) of node modifiers is given by the following formula:
N(t+1) = N(t) + Sum(M*dS)
Note: A solid arrow indicates the flow of resources from one pool to another. Although the dotted arrow is similar in appearance it does not represent the flow of resources. Resources will essentially be created or removed from the target pool relative to the number of resources in the source. Hence, the reason for the formula above.
The figure below illustrates a node with two modifiers. By using negative node modifiers or redistributing resources from a node that has positive input node modifiers it becomes possible that the number of resources on a node becomes negative. In this case, the negative number of resources indicates a shortage. No resources can be pulled from a node that has a shortage, and resources that flow into a node with a shortage are used to compensate for the shortage first.
Node modifier can have labels that are fractions, for example '+1/3' or '-2/4'. In this case the number of resources of a target node is modified by the value indicated by the fraction's numerator every time there is a change to the number resources on the source divided by the fraction's denominator and rounded down. Thus when a source node changes from 7 to 8, the number of resources on the target is lowered by 2 if the modifier is -2/4, but if the modifier is +1/3 the number of resources on the target node does not change. It is important to note that sum of all the resources present in the three pools, in the middle in triangular pattern, is constant.
A simple, real-life example of the use of node modifiers can be found in Settlers of Catan where players gain 1 point for every village in their possession and 2 points for every city in their possession:
Node modifiers change the number of resources on other nodes. In effect, the use of node modifiers causes production or consumption of resources. These effects can also be achieved with a slightly more elaborate, but also somewhat cumbersome construction (see Node Modifier Equivalent). This construction includes other elements that are introduced later. However, as the use of node modifiers is quite common, they are useful 'syntactic sugar': simpler notations of more elaborate constructions. For this reason node modifiers are here treated as a particular type of state modifiers.
Triggers are state connections that connect two nodes or connects a source node to the label of a resource connection. Triggers fire when all the inputs of its source node become Satisfied: when each input is passed the number of resources required as indicated by its flow rate. A firing trigger will in turn fire its target. When the target is a resource connection, it will pull resources as indicated by its flow rate. A node that has no inputs will fire outgoing triggers whenever it fires (either automatically, or in response to a player action, or to another trigger). Triggers are identified by their label which is a star ('*').
Triggers are commonly used in games to react to redistribution of resources. For example, in Monopoly players might transfer money to the bank in order to 'trigger' the transfer of property from the bank into their possession. This can be represented as the following diagram:
Activators connect two nodes. They activate or inhibit their target node based on the state of their source node and a specific condition. The activator's label specifies this condition. Conditions are written as an arithmetic expression (for example '==0', '<3', '>=4' or '!=2') or a range of values (for example '3-6'). If the state of the source node meets this condition then the target node is activated (it can Fire). When the condition is not met the target node is inhibited (it cannot fire).
Activators are used to model many different game mechanics. For example, in the board game Caylus players place their laborers (a resource) at particular buildings on the board to enable them to execute special actions associated with that building. For example, a player might place a laborer at a goldmine in order to collect gold (see diagram below). However, as indicated by the trigger this diagram, in Caylus every time a player exercise this option, the laborer is returned to the player's laborer pool.