Alrium/README.md
2015-09-29 21:01:09 +02:00

69 lines
2.3 KiB
Markdown

# AIrium 2
## Creature Structure
Each creature is represented as a matrix of blocks in a 2D grid world
There are three kinds of blocks:
- neuron blocks
- action blocks
- sensor blocks
TODO: energy system
### Connection
Each block is connected to every other adiacent block
`source block output ->>>- * weight ->>>- destination block`
- A connection has a weight, which is a floating point number.
- The connection outputs its source block's current stored signal multiplied by the weight.
- If the weight is `0`, then there's no connection
### Signals
A signal is a floating point value. Each block stores a signal (initialized at 0 which is a null signal).
### Neuron (Processing) Blocks
Their output is the sum of all their input connections' current output.
### Action (Input) blocks
They take an input signal and act by doing something, for example:
- they move the body in space
- they eject something
- they change color
- they interact with other structures
- they "eat" a block
- nothing (can be useful to stop signals from passing through)
### Sensor (Input) blocks
They give adiacent blocks a signal, for example:
- they communicate how far is the first block in a straight line
- they communicate the amount of blocks in relation to blank spaces in an area
- they communicate the color/type/activity of the first block in a straight line
- they communicate information about the presence of a particular kind of block in a direction
- they communicate information about the creature itself, like integrity of adiacent blocks
### Traversing the brain graph
for each iteration, the `stored signal` of each block is calculated using its input connection.
This `new stored signal` is stored in a special variable without overwriting the `current stored signal`
so that the process can be easily accomplished in multithreading execution environments.
After all the `new stored signals` have been calculated, their value is applied to the `current stored signal`
and the calculation process is repeated. This way, signals can propragate around
## World Structure
A creature is a matrix of blocks, each adiacent block is connected. The blocks make up both the body and the mind.
The world is a matrix where each cell is either empty or occupied by something. Every structure occupies only one cell.