Any questions, comments, or suggestions can be sent to nkrim62@gmail.com
Click and drag to draw wires between grid cells, drag modules from the toolbar onto the board, and right-click a cell to gain access to extra options like signal colors, diode output directions, and to add toggle and rotator augmentations. You can press BACKSPACE or DELETE when hovering over a cell to clear it, or press the reset button at the top to clear the whole grid.
This game involves connecting modules to mediate the flow of power through wires to create a mechanism to satisfy the goal of the given levels. You can use singals to dynamically control aspects of the mechanism, such as sending a burst of power or activating a Rotator Augmentation to rotate a cell 90deg. In the current build, all levels are Pattern Levels. In pattern levels you have to use Emittor Modules to send signals to differently colored channels in a specific sequence, and even simoultaneously. (I plan on making more types of levels that allow the use of all channels freely).
The simulation works on a tick-based system, where on every tick multiple actions are taken across the board given how the power is flowing and which signals have been fired. There are two types of ticks, Power ticks and Signal ticks.
The simulation will always start with a Power tick, which causes all Power Modules to send power out of all connected wires in the cell (with 4 total directions, 1 for each cardinal direction).
Signal ticks occur after a Reciever Module recieves a signal from any emittor set to the same channel color. The reciever will send power in the same way as a power module, but a power module will never activate during a signal tick. Once there are no more signals left to be recieved (hence no longer needing to perform a signal tick), the next tick will be a power tick, and the process will repeat.
Emittor Modules each have a channel that they are connected to which is denoted by the color in the center (can be changed from the right-click menu). During each tick, after all the power has fully flowed, each emittor will check if it is recieving power from any of its connected wires. The emittor will send 1 tick for ever powered wire connected to it,
The Signal Manager works behind the scenes and has a tally of all the signals it needs to relay to recieving components for each channel, and unless it has no signals left to process it will cause the next tick to be a signal tick. During a signal tick, the signal manager simoultaenously sends power to all channels that have any signals which have yet to be sent out. However, for example, if 2 green signals were sent to the signal manager via emittors, then it needs 2 power ticks until it has no more green signals to process; this is true for every channel. If there was also 1 blue signal that was sent along with the green ones, then the first signal tick will activate the augmentations and recievers that are set to both the green and blue channels, and the following signal tick will just activate on the green channel since there was 1 more left in the queue. Of course, any signals that are emitted during the signal ticks will accumlate during this process, so there will be cases where a mechanism will only have the first initial power tick, and will end up only using signal ticks after that, forever.
On every signal tick, Augmentations of active channels activate first, so Toggle Augmentations will toggle their cell once between its on and off states, and Rotator Augmentations will rotate their cell once 90 degrees clockwise. After that, Reciever Moduels of active channels will activate and send power out to connected wires and flow throughout the system, potntially activating more emittors whose signals are then added on for the next signal tick to process.
For Pattern Levels, every signal emitted during a single tick (if any) is matched against the next combination in the given sequence. So if 2 green signals is shown in the first line of the sequence, then the first tick should be connected to two inputs on an emittor set to the green channel. Two green signal ticks will follow, but the 2 green signals required by the pattern are evaluated together instantly, so the second tick of the program will be a signal tick that either has to power zero emittors OR it has to follow the next line in the pattern.
Base module, will freely allow flow of power through all connected wires.
Will send power to all connected wires once per power tick.
When power is sent to any non-output side of the module, power is the sent to all output wires (output wires determined from right-click menu).
When power is sent to all non-output sides of the module that have incoming wires, power is the sent to all output wires (output wires determined from right-click menu).
Will send 1 signal on the modules channel color (changeable from the right-click menu) for each connected wire that is powered.
When a signal of the same channel color (changeable from the right-click menu) is sent from the signal manager's queue, this module will emit power in the same as a power module but instead during a signal tick.
Acts like a wire module, but each of its two axes are separated from eachother (so if all four wires are connected, and power comes in from the left, then power will only be sent to the right, and vice versa and equivalently for the up and down directions).
Note: All augmentation actions are evaluated before reciever actions
When a signal is sent of the same channel color as this augmentation, it will toggle the entire cell between an on and off state. When the cell is off, no power will be sent to and from wires in the cell, but augmentations will still evaluate.
When a signal is sent of the same channel color as this augmentation, it will rotate the entire cell (wires and modules) 90deg clockwise.
Pattern levels require a repeated sequence of signal emission combinations to be matched with a given sequence. For each line in the sequence, the same combination of channel signals must be sent in that tick (ticks with no signal emissions at all are ignored). Any extraneous signal emissions (of either the same channel or other unique channels) will break the pattern. The ordering of the colors in a pattern line are arbitrary for solving the level.
For pattern levels, the main tip I have is to either implement the entire level using power modules and augmentatoins (so that power is only sent on power ticks), OR to have 1 power module that is hooked up to the initial emittors for the first line of a pattern, and then resolve all further lines of the pattern using an infinite loop of reciever modules, so the entire run will have 1 power tick at the start and infinite signal signal ticks following that. Power modules will never fire on the same tick as reciever modules, so while you can coordinate intermittently with signal ticks, then have the signal manager flush itself so that another power tick can occur, this will not work out easily for many of the levels included (though it will work out for some).