What is Condo I/O?

Condo I/O (or Condo IO) stands for Condo Input and Output. It's a powerful set of tools and integration with items that allow items to connect with each other and perform actions based on gameplay events.

EXAMPLE: Press Button ► Open Door

How Do You Use It?

Condo I/O is automatically embedded into items for you.

You can connect items in two ways:

The Connection Tool

Part of the Tower Glove, this tool will allow you to click on two items and form a connection. By default, the Connection Tool will pick the most common input/output events for you.

Connection Editor

You can also edit item connections by editing an item (right click on the item) and selecting Connections. You can also access this in the item properties menu on the Connections tab.

Item Properties ► Connections

  • There are options to create new connections in this editor, as well as updating existing connections.
  • On the left you will see the Events that the item has and on the right are the Outputs that will occur when the Event happens.

I/O Overview

Condo I/O is is a feature that does not require any programming knowledge. With it, you can create various creations such as puzzle maps, adventure stories, organization tools (such as turning off all lights in a room), and, eventually, custom games, all within your Condo or Condo Workshop maps.


The Basics

Inputs and Outputs

Connectable items will have inputs and outputs. An Input is the action used to cause the output. An Output is what occurs once the input has occurred.

For example:

INPUT: Button OnPressedOUTPUT: Door Toggle

  • Pressing the button will open and close the door.

INPUT: Door OnDoorOpenedOUTPUT: Light TurnOn

  • Opening the door will turn the light on.

Many items have unique Inputs and Outputs, such as the Canvas 'SetCanvasURL' input, 'OnTriggered' for Trigger Volumes, 'SetColor' for colorable items input, and more.

When using the connection tool, you can scroll through both the output and input options before making the connection. You can also adjust these inputs and outputs using the connection editor.

Delayed Events

You can delay output events so that they do not occur immediately. This can be done with multiple connected items and outputs.

Example:

Button OnPressed ► Door Open (0 seconds), Light TurnOn (2 seconds)

  • When the button is pressed the door will open immediately and the light will turn on after 2 seconds.

Persistent Connections

Certain items can connect regardless of events. These types of connections are referred to as Persistent Connections.

Basically, the input and output are just the items themselves.

Items such as Game Consoles (Libretro) or Security Cameras can connect to Media Players regardless of events, such as:

Security Camera ~ TV (Media Player)

  • Camera Feed Displays on the TV Screen.

Game Console ~ TV (Media Player)

  • Gameplay Displays on the TV Screen.

TV (Media Player) ~ TV (Media Player)

  • Display of first TV is now duplicated to the other TV.

Camera IO ~ Camera Volume

  • Camera Volume activates camera while players are inside it.

You will only need to make a connection with the connection tool and the system will handle the rest.

Persistent outputs are denoted by an @ symbol (ex. @Camera, @Video, @Logic).

Tip: You can connect multiple TVs to one TV and it will duplicate the display of main TV to the other TV automatically.
Tip: Media Players can have multiple sources connected to them at once. You can connect a Game Console, another TV, and a Security Camera. When this occurs, channels are created and can be changed using the Remote Controller item (found in Central Circuit) or by using I/O inputs.
Some items can only connect to 1 item at a time.

Removing Persistent Connections

If you need to remove a persistent connection, you will need to open the connection menu (Right Click > Connections) then find the persistent connection event (they are colored green) and remove the connected item from the list.

Connection Editor

You can edit connections directly within the item property menu (Right Click > Connections)

This will open the Connection Editor, where you can make adjustments to the inputs and outputs that occur between connected items.

Connection Editor Key



  • EVENTS: The input. What interaction with the selected item causes the output on its connected item? (EX: Pressing the button.)
  • OUTPUTS: What item is reacting? Is it delayed? What is the reaction?
    • DELAY: How long does it take for the connected item to react to the input event?
    • ACTION: In what way does the connected item react to the input event?
    • '⋮' Button: Drag and reorder your outputs and connections
  • NEW CONNECTION: Add another output for the selected event.

Core Inputs

Core Inputs are inputs that ALL items have, regardless if they have any editable properties to begin with.

Core Inputs available: Hide, Unhide

Example:

Button OnPressed ► Canvas Hide

  • Pressing the button hides the canvas.

Button OnPressed ► Canvas Unhide

  • Pressing the button unhides the canvas.
Note: Hiding an item will disable both visuals and collisions.

There are also core color inputs on all colorable items that are automatically created for each colorable piece of an item.

Logic Modules

There are many logic modules that can be used to organize or handle the events in unique ways.

MODULEDESCRIPTIONEXAMPLE
RelayAn organization tool. Will call multiple different I/O inputs with one single activation. See note about using Relays below.Button OnPressed ► Relay ► Door Close, Light TurnOn.
Relay To AllReduces duplicated events. Passes an input to all items persistently connected to it all at once. Must be activated by another item.Button OnPressed ► Relay To All ► All Connected Lights TurnOn. It will then turn on all lights connected to it. Video Example
RandomSelects a random output from a customizable number of output events (up to 32 outputs). Can select purely at random or random with no repeats.
ToggleHas two separate outputs that get selected every other time it is activated. Useful for turning things on/off with a single input. Will fire the 'Off' output on load.
CounterCounts a number then activates when its min or max is reached. Can be reset to restart the count. The counter can optionally save its value persistently. You can also Add, Subtract, Multiply, and Divide the counter's value with an input.
TimerA timer that keeps track of time passed. Can be adjusted to loop, select random times between min/max time, and pause/unpause.

Relays

Relays are a handy module that can contain multiple I/O events. You can use Relays to keep your logic structured.

For example, if you have a door that when opened, it also turns on a light and plays a sound, then create a Relay. Put all of these events into the Relay. Then, you can call the Relay from any input source (a button, or a Trigger Volume). You can rename Relays to know which event is which.

Example:

Relay (named "Open Emergency Door"):

  • Door Open
  • Light TurnOn
  • Sound Emitter Play

Button OnPressed

  • Relay OnFired
  • When pressing a button, the Relay will open the door, turn on the light, and play a sound emitter.

Logic Gates

Logic gates are modules that read an item's logic state. For example, a door can be closed or open. This is the item's logic state. Other items such as switches, lights, physics slots have a state for if they are turned on or turned off.

All logic gates have states as well, so they can be connected with other logic gates and will fire outputs.

If an item has a logic state, they will have an output named @Logic.

Example:

  • Door being open means TRUE state
  • Door being closed means FALSE state
MODULEDESCRIPTION
AND GateOutputs a TRUE or FALSE state. Fires OnTrue if ALL inputs are TRUE.
OR GateOutputs a TRUE or FALSE state. Fires OnTrue if at least one state is TRUE.
XOR GateOutputs a TRUE or FALSE state. Fires OnTrue if only one state input is TRUE.
NOT GateInverts the state of a logic state and outputs it (TRUE becomes FALSE, FALSE becomes TRUE).
Boolean SwitchFires an output when the an item's logic state changes.
CompareCompares a persistently connected Counter and fires OnTrue if the Counter is Equal To, Not Equal To, Greater Than, Less Than, Equal To or Greater Than, Equal To or Less Than to a customizable number.

Volumes

Along with modules, there are various placeable Volumes available to help drive gameplay events or adjust players. These Volumes are generally visually hidden to players.

VolumeDescription
Trigger VolumeActivates an output when players or physics pass through it.
Damage/Heal VolumeDamages or heals players that walk into it. Can be set to damage over time or just once.
Blocking VolumeAn invisible wall that blocks players/physics from walking into it.
Teleport VolumeTeleports players to a different location. This works just like the other Teleport items in the game, but it's a hidden one. You can also set it to teleport when a player presses 'Use' on it.
Water VolumeA placeable water volume that players can swim inside of.
Sound VolumeHandles playback of sound emitters that are within this volume. Can also mute all sound emitters outside of the volume.
Camera VolumeSets player's camera view to a connected camera. Works with Camera IO.
Post Process VolumeCustomize visual effects such as saturation, contrast, chromatic, vignette, grain, bloom, tint, pixelate, etc. within a volume or globally.
Sky VolumeCustomize the sky, including fog, sun, sun tint, horizon/zenith colors, star colors, and time of day settings within this volume or globally.
Location VolumeLabels an area of the map that is shown on the HUD and scoreboard. Also comes with various permission settings such as voice chat permissions and more.
Player Movement VolumeAdjusts speed of players, or disables jumping or crouching.
Push VolumePushes players or physics in a direction when entered.
Size VolumeAdjusts the size of players. Basically, apply size potions to players.
Gravity VolumeAdjusts player gravity. Does not affect physics items.
Ladder VolumeAllow players to climb within the volume.
Spawn Point Tag VolumeSets a spawn point tag on a player which makes them only spawn at spawn points with the same tag. Works with Custom Spawn Point item
Hit Target VolumeOutputs when it receives damage from players/weapons. Has customizable health and death events.
Dialogue VolumeA placeable dialogue button with camera offset feature.
Comment VolumeDisplays text on players HUD when players are near it.
Hidden ButtonA placeable button that is invisible. Useful to add button functionality to custom set pieces.
Player Input VolumeA hidden button that locks a player, then outputs based on player key inputs when used by a player.
Weapon Strip VolumeStrips all weapons from a player while the player is inside it.
Hidden Player Launcher VolumeLaunches players at an arch.

Input Items

Items players can interact with to have things happen.

ItemDescription
ButtonA simple button available in a variety of basic shapes. This can be used for Condo I/O interactions.
Canvas ButtonA simple button with a canvas face. This can be used for Condo I/O interactions.
KeypadA keypad that activates when a set code is typed in (0-9).
Basic LeverA basic lever with a variety of handles. This can be used for Condo I/O interactions.
Light SwitchA basic light switch. This can be used for Condo I/O interactions.
Physics Object SlotSlots in a physics object thrown into it, then fires an output. You can have it only allow physics objects that have a name that matches the filter name.

Built-In Item Events

Many items that have interactions, such as Doors, come with events you can hook into, such as Door OnOpened

Examples:

  • Doors: OnOpened, OnClosed, Open, Close, Lock, Unlock
  • Buttons: OnPressed
  • Lights: TurnOn, TurnOff, OnTurnedOn, OnTurnedOff, SetIntensity, SetColor
  • Fireworks: OnIgnite, OnLaunch
  • Food: OnBite, OnConsumed
  • Media Player: OnMediaStarted, OnMediaEnded
  • Physics: OnPickedUp, OnDropped, OnDamaged
  • Damagable items such as Balloons, Bell, etc.
  • Special: Spin To Win, Dice, Beds

Variables

Items also have variables you can change with inputs.

Examples:

Button ► Canvas SetURL

  • When the button is pressed, the URL of the canvas will update to a new one.

Button ► Light SetColor

  • When the button is pressed, the color of the light will change.

Button ► Timer SetTime

  • When the button is pressed, the timer will set its time to a new time.

Output Items

Items that output when an event happens.

ItemDescription
Game World EventsListens and outputs various Game World events such as round start and end.
Player EventsListens and outputs various player events such as when a player joins or when a player dies.
ClockListens and outputs clock events such as when a millisecond, second, minute, or hour passes.

Other IO Items

Various I/O centric items that can be used to enhance your creations.

ItemDescription
Custom Spawn PointUsed to set the spawn point of players. Can also be used as checkpoints.
Sound EmitterEmit built-in sounds to fill your Condo with atmosphere. Can be played once or on a loop.
Workshop Sound EmitterEmit Workshop sounds to fill your Condo with atmosphere. Can be played once or on a loop.
Camera IOCamera that overrides the player's view. Supports overriding the camera for a singleplayer or for all players in the server. (See guide on Cameras)
Global MessageDisplay messages in chat or HUD, both globally or to the activating player.
Weapon PickupA pedestal that allows players to pick up a selected weapon.
Game World Music ManagerHandles overriding Game World music with custom music.

Puzzle/Store Items

These items are designed for IO use but some must be unlocked at stores.

ItemDescriptionStore
Laser BeamA laser beam that can be set to be blocked, or deal damage. Can be fed into a Laser Beam Receiver for gameplay logic.I/O - Free!
Laser Beam ReceiverA module that will only activate if a Laser Beam is pointed into it.I/O - Free!
KeycardA pickable keycard that can be placed into a receptacleCentral Circuit
Keycard ReceptacleChecks for a keycard then outputs when successfully placed into it.Central Circuit
Physics BatteryA pickable battery that can be placed into a battery receptacleCentral Circuit
Battery ReceptacleChecks for a battery then outputs when successfully placed into it.Central Circuit
Particle FXPlaceable particle FX with hundreds of particles.D.I.Y.
Door KeyA pickable door key that can unlock a locked door that matches its nameComing Soon

Movers

Movers are IO items that move items from one place to another.

ItemDescription
Mover SimpleMoves items from one place to another.
Mover PathMoves items across a path.
Mover TrainMoves items across like a train with station support.
Mover Player SlideSlide players down a path, slide optional.
Mover ControllableA mover that can only be controlled and moved by IO inputs.

See more about Movers on the Movers Guide.

Extras

I/O items are infinite

  • I/O items have no Unit cost, you will not have to go to the stores to place down Volumes or Buttons or Logic

Organization Tools

  • You can rename items to a custom name to help with I/O.
  • You can also color I/O modules (such as Relays).

I/O works for Game World maps as well!

Examples

Automatic Lights

For automatic lights, we suggest using Relays. Relays allow you to combine many actions into one spot for quicker editing in the future.

Door Connections

InputActions
Door OnOpenedDoor ► Relay1 Fire
Door OnClosedDoor ► Relay2 Fire

Relay 1 Connections

InputActions
Relay1 OnFiredLight1 ► TurnOn
Relay1 OnFiredLight2 ► TurnOn
Relay1 OnFiredLight3 ► TurnOn
Relay1 OnFiredLight4 ► TurnOn

Relay 2 Connections

InputActions
Relay2 OnFiredLight1 ► TurnOff
Relay2 OnFiredLight2 ► TurnOff
Relay2 OnFiredLight3 ► TurnOff
Relay2 OnFiredLight4 ► TurnOff

Locked Door, Key Unlocks

  • Spawn a Door
  • Edit the Door and set Locked to enabled. This will prevent players from opening the door with use.
  • Spawn a Physics Item Slot
  • Connect the Physics Item Slot to the Door (using the Connection Tool) and set the action to Open
  • The Physics Item Slot will now open the door once a physics item is slotted into it.
Note: Physics Item Slot also has a name matching system based on the physics item's name. You can use this to make it so specific physics items only slot into the physics item slot (like a key). You can also hide the Physics Item Slot from being visible in its settings.

Special Keywords

Some items such as the Global Message, Dialogue, and Floating Text support custom keywords for their messages.

KeywordDescription
%name%Displays the player's name. For events such as buttons or triggers, it'll show the name of the player who interacted with those items.
%time%Displays the current time (based on host's time).
%date%Displays the current date (based on host).
%health%Displays the player's current health.
%host%Displays the host's name.
%location%Displays the player's current location.
%c0%Display's the first connected Counter's value. Only works with Floating Text.
%c1%Display's the second connected Counter's value. Only works with Floating Text.
%c2%Display's the third connected Counter's value. Only works with Floating Text.
%c3%Display's the fourth connected Counter's value. Only works with Floating Text.
%c4%Display's the fifth connected Counter's value. Only works with Floating Text.

Future Updates

We plan to release these Condo I/O features in rolling updates.

  • NPCs Enemy & Friends
  • NPC Waypoints
  • Default Properties: Hidden, Interactive Permissions
  • Custom Condo Currency
    • Can be used for puzzle maps, awarding players for being on your Condo, etc. It is persistently saved to the Condo data itself.
  • Player Stats: Lives / Deaths / Points / Team
  • Map Optimization Volumes, Snapshot Loader, Workshop Map Portal (linking workshop map levels)
  • Layer system: Ability to assign a layer to items with the ability to toggle on/off the entire layer
  • Gameplay Rules
  • Physics toggle for items
    • Physics modifiers
  • Custom Objectives
  • HUD/FX effects
  • Items designed for puzzles
  • And More!

We're excited to continue to add new ways to create interactive experiences within your Condo, and by extension, open up new types of level creation tools using the Condo system within Tower Unite.

TOWER UNITE™ & © 2015-2024 PIXELTAIL GAMES LLC. Tower Unite and PixelTail Games are trademarks and/or registered trademarks of PixelTail Games LLC in the U.S. and/or other countries.