This article will talked about “Creatures”, that I released on fxhash and I invite you to discover here: https://www.fxhash.xyz/generative/slug/creatures
If you are not familiar with the platform, it allows artists to publish generative art series that will be stored on the Tezos blockchain. Every time a piece will be minted (bought, and created on chain), it will create a unique iteration based on the algorithm.
There is a big part of randomness, that can be more or less controlled by the artist when thinking his serie.
Origins: An iterative process
At the start of January, I participated to Genuary for few days, and got inspired by the “Dithering” prompt.
It reminded me of the PoissonDisc distribution, so I created some compositions based on this idea, and using multiple strokes. They had one rule: they can’t collide with some areas, allowing them to be revealed.
For this first approach I used the Canvas API of Javascript. While it’s convenient, it took a while to generate the artwork. The more the strokes or the bigger the artwork, the longer it takes.
In order to solve this problem, I decided to re-code it using WebGL, and to heavily rely on shaders. This decision allowed me to have more detailed visuals thanks to millions of lines on the scene.
I got very happy with the results, but started to be scared for people having “Trypophobia” (I let you google it… :D). Therefore, I decided to explore other patterns than circles, starting with rectangles.

This direction pleased me (it will become its own serie), but I wanted to keep exploring and push the algorithm further, experimenting with some new ideas that would come on the way, and create more variations.
A serie that revealed itself
As the code evolves, the possibilities too. Most of the time when I work on a creative algorithm I have some “exploration phase”, where I spend some time implementing controls (in the shapes of buttons, sliders; as you will see later in this article) and spend few minutes (or hours) a day playing with them.
This way, new unexpected variations become visible and new ideas strike.
And that’s how, during the iteration process, “Creatures” revealed itself. At one point I started to see some animals pattern, that reminded me a cat, a tiger or magical creatures.
As I had multiple series starting to take shape, I felt it was time to choose one to push it forward, and I focused on this one.
Behind the scenes
As I explained before, I implemented controls to be able to explore the possibilities more easily.
I also discovered that there is such a sign as “too much controls”.
When trying to decide which parameter to randomize, and what versions I like and want to select; I realized I was overwhelmed because there was just too much of them.
If some parameters are going too wild, the visual was too far away from the thematic of “Creatures”.
On top of that, I had some very precise parameters that I liked together but were not a match in other cases.
In my previous projects on FXHash, MOYO and éclats, I pre-selected the palettes and some compositions, and the randomness was easier to add on top of it.
To solve my issue with Creatures, I decided to enlarge the concept of “Palettes” to more parameters: noise movement range, stroke length and width, colors, colors variations… And created a way to save/load those “cherry-picked” informations.
With this approach, the Creature type 4 will have a totally different expression than the creature type 77. It is an assumed decision, that goes well with my thematic (a bird will always be different than a fox).
Randomness is gonna happen after, on top of it, allowing surprises and unexpected variations to happen.
Algorithm
The artwork is composed of 5 layers.
In some cases 1 layer will be bypassed, but most of the time they are all visible.
The first a layer is considered as “background”.
Each of the other layer is built based on a pattern info. This pattern is evolving at each step:
In most of the cases, some displacement is applied on top of each layer (and so on top of the previous pattern + displacement):
Each layer has:
- A number of strokes between 100 and 800000.
- A color, but each strokes can have some variations in termes of Hue/Saturation/Luminosity. This allow more details and surprises in the final output.
Same about alpha.
- A stroke size, that can vary more or less.
- A collision rule. The strokes won’t be able to enter the black area you see above.
Which means the last layer have less surface to express itself.
This creates an accumulation effect, that also helps me to reproduce animals patterns or feelings.
I added a parameter that can allow the stroke to go in, in certains conditions. It allow the visual to be more surprising, and the patterns to be more hard to identify.
- A flow field, giving the strokes a certain direction/orientation. This parameter can be globalized (mostly the cased, to reproduce a fur/feathery effect), and varying a bit for each layer; or it can be unique to the layer. In this case, the composition is becoming more messy.
(As a note, the more “messy” the movement is, the more “Dangerous” the token feature becomes).
- A light system. The color are gonna changes on the overall layer based on it. It is subtle, but add a deep/realistic touch on the artwork.
It gives a final image, that will be tweaked with some postprocessing shaders, allowing some contrast/saturation/colors/bloom/noise/shadows/highlights to be removed or added.
Results
In the end, there is more than 120 types of Creatures created. The serie allow 512 ones to be minted, which means that there is a low probability that all of them will be revealed.
In terms of colors, I’ve been inspired by classical animals (tigers, bears, cats, exotic birds, fishes, or sea animals…) but I also wanted to open a door for fantastic ones (some that could be come from movies or video games).
I invite you to google “exotic birds” or “galapagos animals” if you never did it, you will see beautiful colors in the wild.
To describe the token, decided to stay very vague in terms of features. My goal here was to let the imagination of the viewer/collector to take over and decide what Creature he was looking at.
Here are some that have been generated. They are selected to show some of the possible variations, in terms of colors, patterns, movements of strokes.
You can save your Creature to a png of the size of 4096x4096, allowing you to print it up to 34.7x34.7cm.
Note about printing
Ultimately when creating an artwork, I’m thinking about printing, because I feel that seeing it on paper give it a new dimension (even if I love digital).
At the beginning of this serie I spent some time working on the overall texture feeling. When receiving the first test prints, I realised that it looked like the visual was printed at the wrong dimensions (as if it has been enlarged, and became blurry).
In the end, I adjusted some post processed parameter (blur/sharpness/noise), to have a better balance between digital x print.
If you own a Creature and are interested about printing, I found that Bright White Hahnemühle gave the best results. If you prefer some “shininess” of the paper, you can go with a Baryta Hahnemühle.
Future
When I minted the project on fxhash, I didn’t know the platform was going to leave the “beta” by the 1st of april (congratulations!). It means the remaining unminted iterations of Creatures will be burned.
If too much of them remains unrevealed, I might decide to do something with the styles that have not been discovered. Let’s see!
With this serie, I prepared a new set of tools, mainly based of strokes, that I will reuse for future artworks.
—
I hope you find those informations about “Creatures” interesting, or that you discovered the project under a new lense.
You can follow me on:
twitter: @florianzumbrunn
instagram: @florianzumbrunn
And if you want to mint some Creatures, or just look at them, here you go: https://www.fxhash.xyz/generative/slug/creatures
Thanks for reading!
—
And I leave you on this artwork, that uses the same code framework as Creatures.
You can also collect it, and 100% of proceeds go directly to a smart contract which will distribute the funds to non-military non-profit organisations helping citizens of Ukraine.