Nodon

**Nodon** are the colorful creatures with distinct personality that are used as code in *Game Builder Garage*. They are the building blocks of programs made using the game, each one representing a form of input, game output or game logic, and which can be connected to tie the Nodon to each other (such as a Stick Nodon to a Person Nodon to tie the person's movement to the stick). There is a limit of 512 overall Nodon available for use in each program. Certain Nodon have special limits and usage restrictions, however.

## Limits & Restrictions

### Nodon

As already mentioned, there is a limit of 512 overall Nodon useable per program. This section gives details on more specific Nodon limits.

Object-generating Nodon have an overall cost limit of up to 512. Most Object Nodon cost 1 towards this limit, but Launch-Object Nodon instead cost 2 plus the amount of objects generated by them can exist at once. World, Camera-Position, Camera-Target, Camera-Direction, and Camera-Angle Nodon are not considered object-generating Nodon and therefore, ignore this limit and don't cost towards it.

Comment Nodon have a call limit of 24. Background-Music Nodon have a limit of 4. The Person, Car, and UFO Nodon each have a limit of 8. Text-Object Nodon also have a limit of 8. Texture Nodon have a limit of 128. String-Connector Nodon have a limit of 8. The World Nodon has a limit of 1. The Game-Screen, Camera, and four Advanced Camera Nodon all each have a limit of 1. The Head Nodon also has a limit of 1, and Hand Nodon have a limit of 8.

Swap-Game Nodon have a limit of 8, but each must have an identical Game ID set in their settings. As Teleport-Object-Exit Nodon each must have a unique Teleport ID, and only 8 are available, one may not be called if there are already 8 in use. The Game-Screen and Camera Nodon may not be called simultaneously with each other or an Advanced Camera Nodon.

### Connection Limits

Aside from Nodon, there is also an overall limit of 1024 connections per program. Individual input and output ports can each take up to 16 connections at once, upper connection ports can generally take up to 8, while lower connection ports tend to only take 1 connection. Up to 32 Nodon can be physically linked in a connection group through connection ports, but only 17 can be linked in a row.

The upper connection ports of the String-Connector, Head, and Hand Nodon can only accept one connection, and the lower connection port of the Texture Nodon can have 8 connections. The Texture Nodon is also not included in the connection group limit.

## List of Nodon

There are four categories of Nodon: Input, Middle, Output, and Objects.

### Input

* Constant - Continually outputs a single set value for the duration of the game.
* Button - Determines if at least one of the specified buttons is pressed.
* Stick - Outputs a value based on the position of a control stick.
* If Touched - Determines if the screen as whole or a specific portion of the screen is touched.
* Touch Position - Outputs the position that the screen was last touched.
* Shake - Outputs a value based on how strongly a control is being shook.
* Tilt - Outputs a value based on how a controller is tilted.
* If Face Up - Outputs how close a side of a controller is to facing upwards.
* Rotation Speed - Outputs how fast a controller is being rotated around each axis.
* IR Motion Camera - Displays a marker based on the image captured by the IR Motion Camera of a Joy-Con (R).
* Object Break - Activates when one of the specified object types is destroyed.
* On Start - Activates at the moment the game begins, and does nothing afterwards.

### Middle

* Calculator - Performs one of four basic calculations on two numbers.
* Map - Scales the received number in a way that would map the Input Range to the Output Range.
* Digitize - Takes a number and returns it with its fractional part rounded to discrete stages between 0.00 and 1.00.
* Square Root - Calculates the square-root of a number.
* Absolute Value - Calculates the absolute value of a number.
* + - Inversion - Reverses the sign of a number.
* Trigger from 0 - Activates on the moment that the received number changes from 0.00.
* Position → Angle - Outputs the angle that the received position is located from the origin.
* Angle → Position - Outputs the position 1 unit away from the origin in the direction of the received angle.
* Angle Difference - Calculates the distance between two angles around a revolution.
* Comparison - Determines if the received numbers satisfy the set comparison.
* AND - Activates only when it receives a value through both of its input ports.
* NOT - Only activates when it doesn't receive a signal.
* Flag - Can be activated and deactivated on input.
* Counter - Stores a number that can be increased and decreased on input.
* Random - Generates a pseudo-random whole number between 1 and a set value when input is received.
* Timer - Waits the specified amount of time upon activation, before outputting for the specified amount of time.
* Bull's-Eye - Outputs based on how markers overlap with it.
* Wormhole Entrance - Sends the received value along through the specified Wormhole ID.
* Wormhole Exit - Outputs the sum of values sent through the specified Wormhole ID.
* Comment - Displays a customizable string of text as its name on the program screen Canvas.

### Output

* Play Sound - Plays a set sound effect or musical note when activated, at the received pitch and volume.
* Background Music - Plays a set music track with customizable elements while activated, at the received speed and volume.
* Vibration - Activates the rumble feature of a controller.
* Reduce Gravity - Alters the effect of gravity on objects in the game world based on input.
* Slow Time - Slows the speed of time for objects in the game world based on input.
* Retry - Restarts the game when activated.
* End Game - Closes the game upon activation.
* Swap Game - Switches to a specified game upon activation, sending the received value to be output.
* Marker Display - Displays one of many settable options for one-dimensional markers, positioned based on input.
* 2D Marker Display - Displays a circular maker of set size at the received position within the Nodon.
* Continuous Marker Display - Constantly displays a marker in itself.
* IR Light - Causes the IR Motion Camera of a Joy-Con (R) to start emitting infrared light.
* Puzzle Clear (Inaccessible in Free Programming) - Only used by Checkpoint puzzles, completing the current puzzle upon activation.

### Objects

* Person - Creates a person in the game world that can freely move horizontally, jump, and perform animations, all on input.
* Car - Creates a vehicle in the game world that can move forward and backward, turn horizontally, and jump, all on input.
* UFO - Creates a UFO in the game world unaffected by gravity, and can move freely along any axis on input.
* Object - Creates a basic object of the specified shape.
* Fancy Object - Creates a special object with a specific set appearance.
* Moving Object - Creates an object of the specified shape that can move freely along any axis on input.
* Rotating Object - Creates an object of the specified shape that can rotate freely along any axis on input.
* Extending Object - Creates a limited object of the specified shape that may extend and contract on input.
* Effect - When activated, either causes a effect on the screen, or creates an effect in the game world, set in the settings.
* Text Object - Creates a basic box object that displays 1-2 lines of freely settable text on one side.
* Number Object - Creates a basic box object that displays a set number of digits of the received number on one side.
* Texture - Displays a texture in the game world, or applies a texture to the sides or inner layers of various objects.
* Touch Sensor - Determines how many of the specified object types overlap with the sensor.
* Destroying Sensor - Activates when the object it is directly connected to destroys another object.
* Destroyed Sensor - Becomes activated once the object it is directly connected is destroyed.
* Grabbed Sensor - Determines if the connection group it is part of is currently held by a Hand.
* Location Sensor - Outputs the exact position of itself, from the specified Frame of Reference.
* Speed Sensor - Outputs how fast its center-point is moving along each axis, from the specified Frame of Reference.
* Acceleration Sensor - Outputs how its speed along each axis is changing, from the specified Frame of Reference.
* Angle Sensor - Outputs the exact angle it is rotated, from the specified Frame of Reference.
* Rotation-Speed Sensor - Outputs how quickly its angles of rotation along each axis is changing, from the specified Frame of Reference.
* Slide Connector - Intercepts physical links to allow the connected object to slide along one axis within a specified range, either freely or based on input.
* Free Slide Connector - Intercepts physical links to allow the connected object to freely slide along some axes while forced to specific points along others based on input.
* Hinge Connector - Intercepts physical links to allow the connected object to rotate along one axis within a specified range, either freely or based on input.
* String Connector - Intercepts physical links to separate two objects by a physical string of fixed length.
* Launch Object - Generates and launches up to a set number of simple objects either constantly or based on input.
* Destroy Object - Destroys the specified object types when overlapping with this, either constantly or based on input.
* Teleport Object Entrance - Causes the specified object types to instantly teleport to another point through the Teleport ID, or be deleted if no corresponding exit exists.
* Teleport Object Exit - Marks a point that objects can be teleported to, and can launch objects that teleport to it.
* Attract Object - Objects in this area may be attracted to or repelled from a set location, with the type and strength based on input.
* World - Sets the settings of the game world itself.
* Game Screen - Creates a camera in such a way that the area the Nodon encompasses on the program screen is displayed.
* Camera - Creates a camera at an exact position and rotation.
* Camera Position - Determines the position that the Advanced Camera will be located at.
* Camera Target - Determines the location that the Advanced Camera will look at by default.
* Camera Direction - Changes the direction that the Advanced Camera faces, offset from the target.
* Camera Angle - Sets the field of view of the Advanced Camera.
* Head - Creates an invisible non-solid object that follows the camera position, and may have another object attached to it.
* Hand - Creates a ray extending from the camera that can hold certain objects and, using motion controls, freely move them around the game world.