The creature is drawn from its own body address and nothing else. The address is hashed with keccak256, the first sixteen hex characters are split into two words, and the two words are combined with exclusive or. That single number seeds every choice below, so the same address always draws the same creature and a different address never can.
hash = keccak256(lowercase address) a = int(hash[2:10], 16) b = int(hash[10:18], 16) seed = a xor b
| parameter | value | range | meaning |
|---|---|---|---|
| rx | 12 to 15 | half width of the body | |
| ry | 5 to 7 | half height of the body | |
| n | 2.0 to 3.0 | roundness of the superellipse | |
| legs | 3 to 4 | legs on each side | |
| antennae | 0 or 1 | drawn when the draw is under 0.7 | |
| bubbles | 5 to 7 | bubbles rising through the water | |
| marked leg | 0 to legs | the leg drawn one character longer |
The body is a superellipse. For every cell in the grid the site measures how far that cell sits from the centre in each direction, raises both distances to the power n, and adds them. A cell is inside the body when the sum is at most one, and it is the faint outline when the sum is at most 1.18.
u = |x - 36| / rx v = |y - 10| / ry s = u^n + v^n s <= 1.00 inside the body s <= 1.18 outline otherwise water
| row | cells inside | cells drawn | darkest character |
|---|---|---|---|
Mass is not decoration. The number of attached parts sets how dark the body is drawn. With no parts the body sits at three tenths of the ramp, and with all eight it reaches the full ramp. The five figures below hold the same seed and differ only in attached parts, so the creature gets visibly heavier from left to right.
m = 0.3 + 0.7 * attached / 8 idx = floor((1 - s) * m * 9)
Runtime sets the frame period, so the same creature moves at three speeds without changing shape. Nothing about motion is random at render time; each frame is a function of the frame counter and the seed.
| runtime | frame period | mouth | reading |
|---|---|---|---|
| sleeping | 260 ms | - | slow legs, bubbles drift |
| awake | 110 ms | _ | fast legs, quick bubbles |
| conserving | 180 ms | - | half speed, fewer changes |
| unknown | 320 ms | - | no runtime read from the chain |
Paste any address. The same arithmetic runs in the browser and nothing is sent anywhere.