Guide:Teleporter network

A pair of Teleporters are handy and simple to use. A small network with a few locations is also not a problem. But when the number of locations reaches 20-30, it usually becomes difficult to build, modify, and use. Here is a possible solution and its explanation.

WARNING: this tutorial is focused on people who like engineering.

Overview


This system has the following usage.

The player gets into a large room with one teleporter inside and a set of switches on the wall. Each switch represents a teleporter cabin on the map. The player turns on one of them and steps on the teleporter. 1-2 seconds later, they arrive in the chosen cabin.

To return, the player can use the Magic Mirror or something similar.

So we have the following requirements:
 * One root room (relatively complex) and a network of dumb remote cabins.
 * Cabins are connected to each other, so there is no need to drag each wire to the root.
 * Cabins are stateless, so we can fix any logical problems in the root.
 * Adding a new cabin must not cause a complex renovation in the root room.
 * Wiring a new cabin is as simple as dragging a bundle of wires with The Grand Design.
 * Sudden server reboot must not mess up the logical state of the network.
 * Player can use colored background walls to draw a map in the root, where switches are placed.

Topology
The network topology is almost a binary tree, except root and one of its subs can have up to 4 connections.



Each cabin has an address in the network, like bottom-right green dot has the address "yellow-green-yellow-green". To get the player there, root performs serial activations of all links of some color. The link is a wire, connecting 2 teleporters in different cabins. We can connect up to 8 different wires to a teleporter. Here we use up to 4.

All links are bundles of 3 (4 in one case) wires of different colors. One wire is for teleporting, 2 others are activation signal bypasses to subs. Of course, end-points can be connected with only one wire.

Cabin scheme
Let's start with a simple one. Each cabin must have a teleporter and a set of diodes.

A diode is needed to activate a set of links without wiring them together with a single wire. It is made of an "AND" gate, one unwired activated lamp (just to split incoming and outgoing wires), and a wired lamp on top. The signal comes to the top lamp, the outgoing wire is connected to the "AND" gate at the bottom.



Root scheme
As for the teleport and switches, root must have an address commutation scheme, pulse generator, and a timed state machine. Here is the picture of root, allowing up to 4 jumps over links.

Address commutation
The largest block is a commutation array. It consists of similar elements, 4 rows of them (maximum number of jumps), and 5 columns (each column serves up to 4 switches, since there are 4 different colors of wire). Each element is made of 2 diodes (same as used in the cabins) and a junction box, to split wires from the switches and the output from diodes. For detailed view, see the image below.

Here is an example of the wiring address "green-yellow-red" for the switch on the yellow wire:



The array element can be wired with a switch in 4 ways: State machine activates those codes from top to bottom, so the address of the cabin is written this way.
 * To the left lamp (jump green link)
 * To the right lamp (jump red link)
 * To both of lamps (jump yellow link)
 * To none of them (blue link or no more jumps)

Turning on the switch flips a corresponding set of lamps in the pulse generator. If several switches are turned on, the destination address may be unexpected. Equip switches with torches on the same wire, to see which of them are activated.

Pulse generator
It takes address information in one side, and a step sequence in another, making a sequence of pulses of right colors into a 4-wire bundle ("Activation wire" on root block scheme).



Finally, AND gates are used to "AND" logic from 3 inputs. These inputs are pulses from state machine, left and right diodes from address commutation row. But some inputs are inverted. Inversion is made by an initial "off" state of logic gate lamp. The state of the lamps on the picture above is initial (e.g. all switches on the wall are turned off). We also need an unwired isolating lamp under one of the gates, to separate the jump pulse wire from the output wire of same color.

The way AND gate works, only one gate in this module will change its state during jump pulse from state machine. Which one, depends on the states of the lamps under the green and red wires. This gate will trigger a pulse into an output wire of corresponding color.

The first jump (from root) can be made in 4 directions. That's why we have 4 possible outputs for them. For other jumps, we need so-called "no more jumps" option. Otherwise, all teleporting travels will be 4 jumps long. In this scheme it replaced "jump blue link" option. So, we can remove a blue wire and its logic gate from second and further jumps.

Output from the pulse generator must be wired to root's teleporter (since all 4 colors are downlink for them) and conducted away to sub-cabins.

State machine
Maybe I could invent something exciting using logic gates, but I used an old trusty method. Button on the top of root teleporter triggers creation of a bunny. This guy runs through the row of buttons, triggering the sequence of jumps, then ends up as a Terminator 2. It's quite simple, but let me introduce some fool-protection for this system. To prevent making few bunnies at a time, launch button is disabled immediately after push and enabled back after bunny finishes his trip. It is implemented on "AND" gates... again.



First, we need to imitate double-click of launch button to keep "off" state of the top lamp on the left gate. It is made of AND gate (OR is also suitable) with a single lamp on the trigger wire. Please don't ask me why the game do it in this way, but it works.

When the top lamp blinks, the gate activates and turns off the second lamp via blue wire. So, all following blinks of top lamp will not affect anything until second lamp is turned on again. Other job of that blue wire is creating a bunny. At the end of bunny's way there is a reactivation button, which turns on second lamp again (via red wire).

If bunny, for some reason, failed to push reactivation button, player can trigger a switch with the same function. Or use it to disable launch button manually. It is also good to install some sort of indicator to tell the user if the system is ready to use. It must be connected to the same wires as the bottom lamp of AND gate.

Conclusion
Given system meets initial requirements. But it obviously have some problems. Here is what I found:
 * Teleporting starts not immediately after button push. So player can trigger teleporting and run away before first jump.
 * A bundle of wires to the cabins can cross other wiring. Use junction box in this case.
 * During Blood Moon, bunny transforms and can refuse to walk his way. Minions also attack him.