This is an old revision of the document!
The Eyol-Elta Enigma is a kinetic light sculpture that rationalises the chaotic “Gleam” force into a structured, spherical reality.
It is a digital realisation of the Eyol (the multi-eyed avian watcher of the Different World) governed by -elta (the Yivalese concept of unbending rules or fated outcomes).
In this artifact, the light does not flicker by chance; it follows the fated rules of cellular propagation. As the gliders travel across the curved horizon, they embody the “Whale Dues turned as fated” – a result that was meant to be, and then, and now.
Inspired by John Conway's Game of Life and Mango's icosahedron/d20 prompt.
The internal logic treats the sphere as a vertex-connected lattice. In this 20-point dodecahedron net, each node is linked to exactly 3 neighbours.
Seed (Asymmetric Scout):
( o )-( o )
/ \ / \ 'o' = Living Cell (Gleam)
( . )-( o )-( . ) '.' = Dead Cell (Void)
| | |
( . )-( . )-( . ) Fated Rules:
\ / \ / B2 / S2 (Born if 2,
( . )---( . ) Survives if 2)
The above seed produces a spiralling glider (the Fated Pulse)
Tick 0 (Seed) Tick 1 (Shift) Tick 2 (Spiral) ( o )---( o ) ( . )---( o ) ( . )---( . ) / \ / \ / \ / \ / \ / \ ( . )-( o )-( . ) ( . )---( o )---( o ) ( . )---( . )---( o ) | | | | | | | | | ( . )-( . )-( . ) ( . )---( . )---( . ) ( . )---( o )---( o )
The LEDs are mapped to the 20 vertices of a dodecahedron. This allows patterns to orbit the centre core without ever hitting a physical boundary.
.-------. [ 3D TOPOLOGY ]
o / o \ o Each "Eye" is a
o / o o \ o vertex. Patterns
o | o o | o traverse the
o | o o | o lattice edges,
o \ o o / o orbiting the
o \ o / o horizon in fated
'-------' geometric cycles.
The goal is a self-contained, handheld artifact that can be 3D printed and powered by a modest microcontroller.
The orb is designed as a Hemispherical Snap–Fit assembly:
| Component | Quantity | Notes |
|---|---|---|
| PIC18F25K22 (DIP or SOIC) | 1 | The “Seer” / Controller |
| 5mm Diffused LEDs | 20 | “Eyes” of the Eyol |
| 74HC595 Shift Register | 3 | Expands the PIC's reach |
| Resistors (220–330 Ohm) | 20 | Current limiting for LEDs |
| 3D Printing Filament | ~100g | PLA or PETG (Conductive for “Yarn” paths) |
| AAA Inline Battery Holder | 1 | Fits in the centre core |
To honour the Yarn force (the force of bonds and life lines), one may replace traditional copper with conductive filament traces:
Instead of a single simulation, the orb can run three independent Gleam layers (Red, Green, Blue) on the same 20-node lattice.
| Addition | Qty | Notes |
|---|---|---|
| 5mm RGB LEDs (Common Cathode) | 20 | Replaces standard LEDs |
| TLC5940 or additional 595s | 6 | Required to drive 60 channels (20×3) |
Integrating an accelerometer allows the user to influence the “unbending” rules by tilting the orb, simulating a gravity well for the light.
| Addition | Qty | Notes |
|---|---|---|
| MPU-6050 Accelerometer | 1 | Connects via I2C to PIC |
Referencing the “Seeds” lore (22 dots including a lost one), a single 21st LED is hidden deep in the core, flickering asynchronously from the surface -elta.
| Addition | Qty | Notes |
|---|---|---|
| 3mm Warm White LED | 1 | The “Observer” node |
A tiny vibration motor provides a tactile “thrum” to make the payment of the Whale Due physical.
| Addition | Qty | Notes |
|---|---|---|
| Pancake Vibration Motor | 1 | Driven via a simple NPN transistor |
To initiate the simulation, the orb requires an initial “Seed.” While pseudorandom algorithms are predictable, a true artifact of Fate should draw from the noise of the cosmos itself.
| Addition | Qty | Notes |
|---|---|---|
| NPN Transistor (2N3904) | 1 | Reverse-biased for avalanche noise |
| High-Value Resistors (1M+) | 2 | For high-gain noise amplification |
| Capacitive Touch Pad | 1–5 | Integrated into the Yarn traces |
The following snippet represents the core “Fate Engine.” It scans the 20 nodes and calculates the next state based on the Yarn connections (Adjacency Map).
// The Map of Fate: Each node connects to 3 neighbors const int yarn[20][3] = { {1,2,5}, {0,3,6}, ... }; void calculate_fate() { for (int i = 0; i < 20; i++) { int neighbors = 0; // Count neighbors in the current Gleam realm for (int j = 0; j < 3; j++) { neighbors += current_state[yarn[i][j]]; } // Apply B2/S2 Rules (The unbending -elta) if (current_state[i] == 1) { next_state[i] = (neighbors == 2); // Survival } else { next_state[i] = (neighbors == 2); // Birth } } // Snap-fit next_state to current_state and update Shift Registers }