Nini's brief Tower Unite Condo I/O guide

Wanna make some cool interactive stuff in Tower Unite?

These are the fundamental bits of knowledge you need in order to understand how it works. Don't worry if you don't get it immediately. Experimenting with it is a much better way to learn than reading about it.

Events, connections, and actions

Events

Image shows the list of events in a lever item.

Events are what you see when you right click an item and open the Connections view.

Not all items have events, but most interactive ones do. The events an item has depends on what the item can do.

Things like "OnToggled", "OnUsed", "OnTeleport", and so on.

The name tells you when the event will run.

For example, buttons have an "OnPressed" event, which is run whenever a player presses the button. A teleporter's "OnTeleport" will run when a player is teleported by it.

Each item will only run its own events. A button being pressed will not run the "OnPressed" event for all other buttons.

Inside the event, you can set up actions that will happen whenever the event is run.

For example, this would be something like a button's "OnPressed" event running a "Toggle" action on a light somewhere.

Green events with a lightning bolt icon are called Persistent events. These have special behaviors that I won't get into here.

Connections

Image shows two connections in an item, one pointing to a canvas, and the other to no item.

Connections are placed inside events.

They connect that event to a single item in your condo.

They may be connected to the item itself, or another item in the Condo.

You can also connect the same event to the same item multiple times.

Each event can have a practically infinite number of connections.

Actions

Each connection has one Action. They are the instructions you give to the connected item, to tell it what to do.

An example:
(Event) You can have a button with an "OnPressed" event,
(Connection) connected to a light,
(Action) which then toggles the light by running the "Toggle" action on it.

This will cause the light to toggle on and off whenever the button is pressed.

Image shows a lamp and a red button. The connection editor is open, showing that the button is connected to the lamp. A small image to the side that shows a part of the interface where action delays can be set. One of two actions is set to a delay of zero seconds, the other is set to wait 3 seconds before firing.

All connections have a delay value, in seconds, to the left of them in the Connections view. When the event fires, each connected action will be run after their set amount of seconds has passed. In the image to the right, the first action would run immediately, but the second action would run after 3 seconds.

Like events, the actions that are available depends on the item being connected to. A light will have a "Toggle" action, because it makes sense to toggle a light on or off. A Canvas Cube will not.

A view of the area where you can select properties for the action. As it's the property of a SetColor action, a color picker has been opened in the interface.

Actions may also have "properties". These are used to determine what that action should do.

For example, a "SetColor" action will have a color property. When run, it will set the connected item to that color. A "SetText" action will have a text property. When run, it will make the connected item display the given text.

You should try spawning in various items and see what events and actions they have! They might just inspire your next build. Happy exploring!

How to set up connections, with the Tower Glove

The Tower Glove is actually kinda awful in general, but I'll mention it anyway. This is so you know exactly why it sucks.

It will show you all connections between all items if you equip press "R". This can be quite useful for complex connection work. It can also be extremely laggy in complex condos.

When you connect two items together with the Tower Glove, you do it in this order:

The first item you click should be the one whose event you want to hook into.
The second item you click should be the one whose action you want to run.
When looking at an item, use your scroll wheel to scroll through the events and actions.

The Tower Glove has some issues though:
1. You cannot set properties for actions from the Tower Glove.
2. You have to move to and look at the items you want to connect, and hope nothing gets in the way.
3. It's very easy to accidentally connect an item to the wrong thing.

This is why it (generally) sucks compared to the alternative below.

But, any redeeming qualities? Yeah, it's pretty fast for making connections from one item to several others nearby. The ability to press "R" to see connections visually can also be very helpful, if it doesn't melt your PC.

How to set up connections, in the Connections view

Right click an item and open the Connections view.

At the bottom, there's a button that says "New Connection". Press this, and you'll see a new connection linked to "No Item".

If you click "No Item", you'll open an Item Picker. From here, you're able to select nearly any item in your condo, and make a connection from the currently selected item to that item.

For example, if you're currently in the connections tab of a button, you can then connect it to a light thousands of meters away, without needing to fly to it.

Showing where to toggle Show All Items in the Item Picker interface.

(If the item you want doesn't show up, you can enable Show All Items in the Item Picker. Some are hidden otherwise, for some reason.)

You can set the names of items. Right click an item, and enter its Properties or Connections tab. At the very top of this menu, where it says "Editing [Item Name]", click the [Item Name] field. Here, you can set a name for the item. This is especially useful in the Item Picker mentioned before, as you can search for that name.

Example of a custom name being applied. A basic shape button has been renamed to cool lamp button. Example of the cool lamp button showing up in the Item Picker with its custom name.

You can also remotely name other items from the Connections view.
If you have a button connected to a light, you can change the name of the light from inside the button.

Example of the connections view. The name field of the lamp is selected, and it has been renamed to great name for a lamp

Naming an item is very useful for organizing complex connections. You might have a relay module in charge of toggling all the lights in a hallway. You can name the relay "Hallway Light Control" and find it very easily in the Item Picker.

For Physics Slot modules, custom item names can even be used as a filter. Only the item(s) with names matching the filter will be accepted by the Physics Slot. Very handy for door keys, or Capture-the-Flag type maps.

Some final helpful notes

Conflicting actions on the same item can crash the game. For example, a light being turned on at the same time it's turned off. These conflicts sometimes resolve peacefully, sometimes they crash. Be careful in setting up your I/O logic, and try to avoid these conflicts.

Infinite loops are possible, and can also sometimes crash the game, if the game gets confused about what to do.

Many Condo I/O interactions are not super well-tested, and some will just crash the game regardless. Sometimes at random. That's Tower Unite for ya.

In Condos where clients are making I/O connections, crashes are WAY more likely. It's very easy for the game to crash at random when a new connection is created. Especially if clients are doing it quickly with the Tower Glove, and their ping is bad. Presumably this is due to some unrecoverable desync issue. Ideally, the host should do as much of the I/O work as possible, and save often.

Relays are extremely useful for organizing your I/O connections. For things like brief, animated sequences, you can set up a relay to hold everything, then make a button or timer that simply fires the relay. Here's an example image, showing the wiring of an animated sequence of a PC breaking.

A relay module is shown, with a lock icon on it. Next to it is a relay module, which has no lock icon on it.

Another useful part of Relays is that they have a "Fire Once" property. With this enabled, the Relay can only fire once, and must then wait for a Reset action to run on it, before it can fire again. Using the example of an animated sequence, as shown above, this would let me stop people from starting the animation again, before it has had a chance to finish playing. Relays that have been locked by "Fire Once" also have a lock shown on them, as shown to the right.

When an item is copied via Alt-dragging, its events and the events' connections will also be copied.

Many I/O-driven things may not reset properly when reloading the condo. These include things that are meant to be hidden via Hide I/O actions, counters resetting to 0, and probably other things. I recommend creating a non-looping timer set to start on spawn, with a short duration. This will run every time you load your condo for the first time, so you can use it to automatically set everything up how you want it whenever the condo reloads.

Hiding items will usually disable player collisions and interactions with them. Unhiding items will usually enable player collisions and interactions with them. Sometimes, collision stays enabled or disabled on a Condo reload.

Hidden items will not show up when you hold Q, though you can hover over them and still get a hover popup. However, you can always use the Item Finder, or Connections view, to find any hidden item.