Power is spreading like a fluid through the world and is used for digital signal processing
The Inverter
The inverter is the fundamental circuit where all other circuits are built upon and the key component which makes the system turing complete
The inverter circuit outputs power to the voxel above, unless power is coming from the other sides:
The inverter at the top disables itself, since the voxel below is powered:
This basic principle is enough to express the universal binary state of 1 and 0
Input/Ouput Pins
VoxelChain uses a turing complete system to visually program the behaviour of voxels
The system is built upon the simple idea of IO Pins to exchange information:
- Input Pins (Blue) read information from a neighbor voxel and convert the information into power
- Output Pins (Green) write information into a neighbor voxel if they receive power
The position of each IO pin determines the position of the neighbor that is processed
As an example, the IO pins at the top center are responsible for the voxel directly above
By default, all IO pins are disabled which is indicated by the grey tint
When enabled, the IO pin color gets saturated
Clicking on an IO pin opens a menu to choose the type of the pin
World Compilation
Compiling a world converts the world into a very compact binary representation. The compile button can be found in the F2 menu
After compiling a world, the world can then be connected and chained together with other worlds
With this idea, you can create incredibly complex logic and infinitely nest gates within each other, which takes away a lot of complexity
To connect this world to another world, switch to the other world, open a material and create a connection with the world containing your circuit
You can also connect a world to itself (a circular reference). This allows you to use and test the circuit directly in the world itself
After a connection through a material is made, every further recompilation must be manually refreshed in the given material
State IO Pins
State pins are a special kind of IO pin, that allow to read/write data within a voxel
Each voxel has 8-bits of state data available, and there are 8 state pins to modify this data
Detecting User Interaction
When a user clicks on a voxel with CTRL + Left Mouse, the 8th state bit in the clicked voxel gets flipped
This allows you to detect user interaction. Here's a button, which when being pressed, switches it's model and also powers the voxel below it: