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 OnPressed ► OUTPUT: Door Toggle
- Pressing the button will open and close the door.
INPUT: Door OnDoorOpened ► OUTPUT: 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).
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.
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.
MODULE | DESCRIPTION | EXAMPLE |
---|---|---|
Relay | An 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 All | Reduces 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 |
Random | Selects a random output from a customizable number of output events (up to 32 outputs). Can select purely at random or random with no repeats. | |
Toggle | Has 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. | |
Counter | Counts 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. | |
Timer | A 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
MODULE | DESCRIPTION |
---|---|
AND Gate | Outputs a TRUE or FALSE state. Fires OnTrue if ALL inputs are TRUE. |
OR Gate | Outputs a TRUE or FALSE state. Fires OnTrue if at least one state is TRUE. |
XOR Gate | Outputs a TRUE or FALSE state. Fires OnTrue if only one state input is TRUE. |
NOT Gate | Inverts the state of a logic state and outputs it (TRUE becomes FALSE, FALSE becomes TRUE). |
Boolean Switch | Fires an output when the an item's logic state changes. |
Compare | Compares 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.
Volume | Description |
---|---|
Trigger Volume | Activates an output when players or physics pass through it. |
Damage/Heal Volume | Damages or heals players that walk into it. Can be set to damage over time or just once. |
Blocking Volume | An invisible wall that blocks players/physics from walking into it. |
Teleport Volume | Teleports 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 Volume | A placeable water volume that players can swim inside of. |
Sound Volume | Handles playback of sound emitters that are within this volume. Can also mute all sound emitters outside of the volume. |
Camera Volume | Sets player's camera view to a connected camera. Works with Camera IO. |
Post Process Volume | Customize visual effects such as saturation, contrast, chromatic, vignette, grain, bloom, tint, pixelate, etc. within a volume or globally. |
Sky Volume | Customize the sky, including fog, sun, sun tint, horizon/zenith colors, star colors, and time of day settings within this volume or globally. |
Location Volume | Labels 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 Volume | Adjusts speed of players, or disables jumping or crouching. |
Push Volume | Pushes players or physics in a direction when entered. |
Size Volume | Adjusts the size of players. Basically, apply size potions to players. |
Gravity Volume | Adjusts player gravity. Does not affect physics items. |
Ladder Volume | Allow players to climb within the volume. |
Spawn Point Tag Volume | Sets 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 Volume | Outputs when it receives damage from players/weapons. Has customizable health and death events. |
Dialogue Volume | A placeable dialogue button with camera offset feature. |
Comment Volume | Displays text on players HUD when players are near it. |
Hidden Button | A placeable button that is invisible. Useful to add button functionality to custom set pieces. |
Player Input Volume | A hidden button that locks a player, then outputs based on player key inputs when used by a player. |
Weapon Strip Volume | Strips all weapons from a player while the player is inside it. |
Hidden Player Launcher Volume | Launches players at an arch. |
Input Items
Items players can interact with to have things happen.
Item | Description |
---|---|
Button | A simple button available in a variety of basic shapes. This can be used for Condo I/O interactions. |
Canvas Button | A simple button with a canvas face. This can be used for Condo I/O interactions. |
Keypad | A keypad that activates when a set code is typed in (0-9). |
Basic Lever | A basic lever with a variety of handles. This can be used for Condo I/O interactions. |
Light Switch | A basic light switch. This can be used for Condo I/O interactions. |
Physics Object Slot | Slots 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.
Item | Description |
---|---|
Game World Events | Listens and outputs various Game World events such as round start and end. |
Player Events | Listens and outputs various player events such as when a player joins or when a player dies. |
Clock | Listens 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.
Item | Description |
---|---|
Custom Spawn Point | Used to set the spawn point of players. Can also be used as checkpoints. |
Sound Emitter | Emit built-in sounds to fill your Condo with atmosphere. Can be played once or on a loop. |
Workshop Sound Emitter | Emit Workshop sounds to fill your Condo with atmosphere. Can be played once or on a loop. |
Camera IO | Camera 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 Message | Display messages in chat or HUD, both globally or to the activating player. |
Weapon Pickup | A pedestal that allows players to pick up a selected weapon. |
Game World Music Manager | Handles overriding Game World music with custom music. |
Puzzle/Store Items
These items are designed for IO use but some must be unlocked at stores.
Item | Description | Store |
---|---|---|
Laser Beam | A 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 Receiver | A module that will only activate if a Laser Beam is pointed into it. | I/O - Free! |
Keycard | A pickable keycard that can be placed into a receptacle | Central Circuit |
Keycard Receptacle | Checks for a keycard then outputs when successfully placed into it. | Central Circuit |
Physics Battery | A pickable battery that can be placed into a battery receptacle | Central Circuit |
Battery Receptacle | Checks for a battery then outputs when successfully placed into it. | Central Circuit |
Particle FX | Placeable particle FX with hundreds of particles. | D.I.Y. |
Door Key | A pickable door key that can unlock a locked door that matches its name | Coming Soon |
Movers
Movers are IO items that move items from one place to another.
Item | Description |
---|---|
Mover Simple | Moves items from one place to another. |
Mover Path | Moves items across a path. |
Mover Train | Moves items across like a train with station support. |
Mover Player Slide | Slide players down a path, slide optional. |
Mover Controllable | A 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
Input | Actions |
---|---|
Door OnOpened | Door ► Relay1 Fire |
Door OnClosed | Door ► Relay2 Fire |
Relay 1 Connections
Input | Actions |
---|---|
Relay1 OnFired | Light1 ► TurnOn |
Relay1 OnFired | Light2 ► TurnOn |
Relay1 OnFired | Light3 ► TurnOn |
Relay1 OnFired | Light4 ► TurnOn |
Relay 2 Connections
Input | Actions |
---|---|
Relay2 OnFired | Light1 ► TurnOff |
Relay2 OnFired | Light2 ► TurnOff |
Relay2 OnFired | Light3 ► TurnOff |
Relay2 OnFired | Light4 ► 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.
Special Keywords
Some items such as the Global Message, Dialogue, and Floating Text support custom keywords for their messages.
Keyword | Description |
---|---|
%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.