Nintendo Labo has a feature called Toy-Con Garage that allows you to program your own games and Toy-Con creations. Using functions from other kits with a node-based system, you can create unique programs with conditional (if-then) statements to control your creations.

In a presentation in New York City, Nintendo showed off how just how one Labo project could be morphed into another. The Toy-Con Motorcycle from the Variety Kit was reprogrammed so that it could control the RC Car instead of a virtual motorcycle in a racing game. There are no photos of Toy-Con Garage yet, but the image below is a (silly) example of what this could look like.

Nintendo also showed off a DIY guitar with Toy-Con Garage that used generic cardboard instead of Nintendo's thin, Labo-specific cardboard. The Switch tablet acted as guitar strings.

Nintendo said that everything on the Joy-Con is re-programmable.

Nintendo Labo Hands-on Event 43 IMAGES

See all of IGN's images from the Nintendo Labo hands-on event above.

How to Play

Access the Toy-Con Garage by clicking on the man-hole cover at the bottom of the "Discover" page in the LABO main menu. The first time you enter the LABO instructors will give you some basic tips, which I will try to expand on here.

advertisement

Above is a close up image of a basic node. By clicking on a node its outline will change from white to yellow, and a few options will appear. The top right option lets you spin a node around. The bottom right option lets you change a node's size and shape. The bottom left options opens that node's settings menu, which we will get to later. Finally, any node can be clicked and dragged to move it around the node board. The blue arrow on the middle right is the node's output point, which we will discuss next.

Press and hold the left node's output point to connect to another node. In the above image you see the connection hanging in empty space. The red circle at the end shows you that it needs to connect to a red input point, like the one on the vibrate node on the right (if we had pulled from the red input point, the circle would be blue showing you it needs to connect to an output).

This image shows the completed connection. From looking at labels on the nodes you can tell that pressing A, B, X, or Y will cause player 1's right Joy-Con to vibrate. These connections are the basis for all Toy-Con Garage creations, but there's much more to these nodes than that.

Here we see that same node connection zoomed way out, You can zoom in and out by pinching/pulling the Switch touch screen. From this zoomed out view we can see the whole node board. Plenty of space for more nodes, and more complex creations.

Once you complete a creation (or want to take a break from working on one) tap the menu button in the top left corner to save it. You can save up to eight Garage creations. This menu also lets you swap between files, delete files, undo/redo an action, and view the in-game tutorials. In the top right corner is the exit button, which will take you back to the LABO's main menu, and in the middle is the Play button, which lets you hide the board and only show certain nodes, such as touch nodes and light up nodes (which we will get to later). The bottom row of buttons are the Input, Output, and Middle node menus, which we will discuss next.

Understanding Analog, Digital, and Range

Analog and Digital: Analog and Digital are two Output settings you will see on many of the nodes in the Toy-Con Garage, and understanding them is important to making your program run properly. When set to Digital your node can only give off two signals, either 0 (OFF) or 1 (ON). Think of it like turning on a flashlight. It's either giving off light, or it's not. An example of how this might be used in a program is when pushing a button on the Joy-Con. The Joy-Con's face buttons can't tell how hard you are pressing them, only whether or not they are being pressed. WHen you press the button you change its signal from 0 to 1 and when you release the button, back to 0.

When set to Analog your node can give off a wide range of signals, from 0.00 (minimum) all the way to 1.00 (maximum). As opposed to the flashlight, Analog is like a phone's brightness slider. The more you move it up, the brighter your screen gets. An example of how this might be used in a program would be shaking a Joy-COn. A small shake of the Joy-Con would produce a weak signal (maybe 0.10), whereas swinging it around would produce a strong one (maybe 0.80).

Range: Range is another setting you will see on many of the nodes. Range determines the minimum/maximum output a node is possible of, and also how intense an input must be to produce an output. That sounds pretty complicated, so let me try and explain. When you look at the range bar you will see a a slider on the left, a slider on the right, and a slowly rising white triangle between them. The slider goes from 0.00 to 1.00. The white triangle represents the intensity of the node's output, slowly rising as it gets closer to 1.00. If you move the left slider up, that white triangle becomes more hunched meaning a stronger input is needed to reach that minimum intensity.

Example: If you set the left slider to 0.01 and the right slider to 1.00 it will only take a very weak input to activate that node, such as a slight shake of the Joy-Con. Now, if you set that left slider to 0.50 that slight shake will no longer activate the node. You will need a strong enough shake to reach an input of 0.50 to create a minimum output, while the maximum output remains the same. Next imagine if you moved the left slider to 0.01 and the right slider to 0.50. Now the maximum input is much lower, capping out at 0.50 rather than 1.00. This means that shaking the Joy-Con slightly is going to create a much stronger output, because the maximum is so much lower.

Of course, these varying output numbers only have meaning when the node is set to Analog. When set to Digital you will notice the triangle gradient is gone, replaced by a solid white space. This is because, as discussed above, Digital outputs can only be 0 or 1. This means that any input which reaches the minimum (left slider) will automatically send out a 1.00 signal. In this case the right slider now becomes the input ceiling, of sorts. If you input passes the ceiling set by the right slider, the output will be switched back to 0. This allows you to select a specific range that your input must be to send a successful signal.

Example: Imagine the same Shake the Joy-Con input from before. If we set the left slider to 0.50 and the right slider to 1.00, any shaking that passes the 0.50 input will automatically send out a maximum (1.00) output! If you were to then set the right slider to 0.70, any Joy-Con shaking that surpasses 0.70 will produce a 0.00 output because it passed the ceiling. This means only very specific shakes (between 0.50 and 0.70) will produce the 1.00 signal, while all others are 0.00!

Programming Basics

As you start sifting through the menus you will quickly realize there is A LOT to take in. To help you break it all down, here are some basic explanations of what each node can do:

Input



Inputs are the starting point for any Toy-Con Garage creation. They accept a variety of inputs (like shaking the console, pressing a button, or touching the screen) and in turn activate a Middle or Output node. Check out a quick explanation of each input below:

Toy-Con: If you've used the other LABO Toy-Cons these will be easy to understand. Choose from Fishing, House, Motorbike, and Piano, then select an action like reeling in, popping a wheelie, or pressing a piano key. These actions will act as the activation of your node, and let you use the Toy-Cons in ways not originally intended.

If an IR Marker is Seen: This node uses the Right Joy-con's infrared camera to detect objects in its path, then, based on what it detects, will result in an activation from the node. This node's output can be either Analog or Digital, and you can fine tune its range as well. The grey box on the right side shows what the Joy-con's camera is seeing, helping you understand how it interprets inputs. Below is screenshot of the camera looking at my hand (the five squares are my fingertips).

Above the camera are the distance options. Use them to change the range that the camera surveys when looking for targets. The arrow button to the right of the camera allows you to mirror the camera's view, flipping the image it takes in. To sum it up, this node activates whenever the infrared camera sees an object pass in front of it, assuming that object meets the input conditions.

Console> If Shaken

: This node, as you may have guessed, activates when you shake your Switch. As the hint says, this node uses the console's built in accelerometer. The output can be both Digital and Analog, and you tweak the range to customize how much shaking is needed to activate the node.

Console> If Face-Up: This node activates when your Switch moves out of its default position, using the built in gyroscope. As you can see in the image above, you can choose between six different default positions depending on how you want the Switch to sit in your program. In the image the default position is "Front", meaning that the node is activated (1.00) when the screen is face up, and deactivated (0.00) when the screen is face down. Like previous nodes, you can set the Output to Digital or Analog, and tweak the Range to determine how much of a tilt is needed to activate the node.

If the Joy-Con (L or R) Is Face-Up: This node activates when your selected Joy-Con moves out of its default position, using the built in gyroscope. As you can see in the image above, you can choose between six different default positions depending on how you want the Joy-Con to sit in your program. In the image the default position is "Front", meaning that the node is activated (1.00) when the controller is face up, and deactivated (0.00) when the controller is face down. Like previous nodes, you can set the Output to Digital or Analog, and tweak the Range to determine how much of a tilt is needed to activate the node. You can also toggle between your Left and Right Joy-Con, and pick which controller number the program reads from.

If a Control Stick Is Moved: This node activates when a control stick on the selected Joy-Con is moved. As you can see in the image above, you can choose for the node to activate upon the control stick moving a specific direction, or activate upon any movement at all. The input can be either Digital or Analog, and the range can be tweaked to determine how much the stick needs to be moved to register an input. You can also quickly toggle between the left and right Joy-Cons, and choose which controller number to acccept inputs from.

If a Button Is Pressed: This node activates when a specific button is pressed on one of the Joy-Cons. You can choose to use many buttons or a single one, simply select/deselect the desired buttons by tapping them in the node's settings menu. You can choose from buttons on both Joy-Cons, and choose which controller number to take input from.

If Shaken: This node activates when you shake the selected Joy-Con. As the hint says, this node uses the Joy-Con's built in accelerometer. The output can be both Digital and Analog, and you tweak the range to customize how much shaking is needed to activate the node. You can also select between the right and left Joy-Con, and choose which controller number to accept inputs from.

If Touched: This node activates when you touch the space it occupies on the Switch's touch screen. It can only read the input one way, so there are no customization options.

Middle

Middles are nodes that act in unique ways. They can be inputs, outputs, both, or neither. They can help add some complexity to your creations, so here is some help in understanding them:

Comments: The comment node contains no input or output. It simply lets you add a text box to the node board. You can use them to describe part of your program, or make a reminder for yourself, or just toss in some fun text. Open the settings menu to change the display text.

Bullseye: Bullseye is a unique node that has specific spatial properties. Take a look at the node in the image above. The circular space in the center of the node acts as its input point. Rather than simply connecting an output to the Bullseye, this node only activates when the white square of another node hits the bullseye (as explained in the settings image below).

As explained in the hints, this can be done with either an IR Marker Node or a Light Up Screen Node. The Bullseye's Output can be either Digital or Analog, and you can tweak the range to change how much of the Bullseye must be covered to activate it. Below is an example of a simple Bullseye program.

In this image you can see I have placed an IR Marker node overtop of the Bullseye. The IR camera currently sees nothing, so it isn't lighting up the Bullseye's core.

Next I placed the IR camera directly in front of an object, which completely lit up the IR Marker node and in turn the Bullseye. This means the Bullseye node is active, and so is the Vibrate node on the right. You can achieve this same effect more simply with a Light Up Screen node, which we will discuss later.

Counter: The Counter is a node that will keep track of inputs that come into it, then send an output when it reaches a certain condition. The node has three input points: + (adds to the counter), - (subtracts from the counter), and 0 (resets the counter to zero). You can set this node to either Trigger (+/- one point per input), or Hold (+/- points for as long as the input is received). You can also set its output to Digital or Analog, and change the range to decide at what count the output should activate. By keeping the range analog you can set a minimum count for the output which will then ramp up in intensity as the count goes higher.

Timer: The Timer is a node that accepts an input and holds it for a set period of time before letting it move on to the next node. The output delay can be anywhere from 0.00 to 10.00 seconds.

NOT: The NOT node is a simple node that flips any input direction it receives. If you place it between a Button is Pressed and Vibrate Joycon connection, it will cause the vibration to begin whenever a button is NOT being pressed. For any Analog input it receives it will subtract the input value from 1.00 and send along that new number (if the input is 0.4, it sends out an output of 0.6).

AND: The AND node is a simple node that requries two inputs rather than one to send an output. If only one of its input points is activated nothing will happen. If two Analog inputs are received, the AND node will send out the smaller of the two inputs.

Output



Outputs are the final destination of every Toy-Con Garage program. Upon receiving an input these nodes create some tangible effect, like lighting up the screen or making a sound. Learn more about the output options below:

Emit IR Light: This node, upon receiving an input, causes the Joy-Con's IR light to activate. In the settings you can change how long the light remains on, and which controller's light will activate.

Light Up Screen: This node causes the space it occupies (and sometimes the space around it) to be lit up in various ways. This means that the shape and size of the node make a big difference, as that determines what area of the screen will be illuminated. As you can see there are five settings to this node. On normal Light setting, the node will light up whenever it is receiving an input. Extend causes the node to light up gradually, depending on the number value of the input (0.5 input, 50% of the node lights up). Rotate causes the node to be constantly illuminated, and when it receives a variable input (like Control Stick being moved in different directions) the node's light moves around the area surrounding its input point. On Move, the node will always be illuminated partly on one side, then moves the illumination to the opposite side when it receives an input. Pulse causes the light to switch on and off for as long as it is receiving an input.

Make Sound: This node makes a set sound upon receiving an input. As you can see in the settings you have access to a wide variety of notes, instruments, and SFX. You can even change the duration, volume, frequency, and octave of the sound.