Logic Puzzles
These puzzles provide conditional expressions to perform different computations or actions depending on whether a condition is met.

"if / else"
With these puzzles, you can implement branching (control flow) in your puzzles.

Suppose, you got a cube and a sphere in your scene. When the user clicks on the sphere, you want to hide it, but only if the user has clicked on the cube before. Such a scenario can easily be implemented with a variable for remembering if the cube has ever been clicked:

Sometimes you need to compare a variable with multiple values, and thus need more branches. In this case, you can expand the *if* puzzle by clicking on the gear icon and dragging out more slots: *elseif* or *else*.

As a result, you'll be able to fill up the newly created slots with any actions you want to happen in your scenario:

"comparison"
This puzzle compares two values and outputs a logical value as the result of comparison.

Instead of explicitely using the true / false values as in the example above, you can leverage any other puzzles such as *text* to set a value for a variable. In this case, however, you will additionally need the comparison puzzle to be able to check textual values. The result of comparison (*true* or *false*) is then supplied to the if / else puzzle:

Here is a more advanced example: hide the sphere only if the user clicked on the cube 3 times:

"logical operators AND / OR"
You can further detail your comparisons by using the logical *AND / OR* operators.

Example:

"logical operator NOT"
You can negate the result of a logical expression (convert *true* to *false* and back) by using the logical operator *NOT*.

Example:

"true / false"
The logic puzzles operate with only two values, *true* and *false*, also known as Boolean values.

These values are returned as output by the comparison puzzle, as well as by the logical operators AND / OR and NOT, and supplied as inputs to the branching puzzles if / else and test.
"null"
The *null* value, strictly speaking, is not related to logical algebra. If a variable is set to *null*, it means it is not set to *true* or *false*, but rather left "undecided".

You can use *null* to explicitely initialize a newly created variable.

"test"
Sometimes you can make your puzzles a bit more compact or more convient to use by leveraging the *test* puzzle which returns value right away.

Example:
