A contemporary victorian vest. The concept design was inspired by the victorian era but with a modern twist and techniques.
When asked about the topic most people would think of good old paper or a canvas. It seems like a unseparrable part of art. Over the time I have used many physical techniques. But covering colored paper by layering impressions of hard pastels still stands up to me.
Another step in the evolution of art started with the digital era. As it brings new possibilities for creation and most importantly delivery. The name itself very often also refers to an input method - a stylus and a tablet. Which is by far the best way to work with digital art.
I use computer graphics and digital drawing mostly for utilitarian purposes. For example creating assets for websites, games, diagrams for explanations and presentations. As my communication style is very visual I find it a very useful tool.
Another huge expansion to capabilities of an artist was the introduction of 3D modeling. Most distinctly it allowed for a new way of creating audiovisual media with much less work needed.
My 3D modelling skills are not extensive at all, but I have made a few functional pieces. For example this low poly model was intended to be unrolled into a papercraft template.
Now, imagine that you are not constructing a single piece of art but a whole space containing many possible images. All part of a single concept - "sample space". While still being able to control how it looks and behaves.
For example here I constructed and trained a neural network that when sampled returns images of imaginary plants.
The process of creating media with the help of scripts and purpose built programs.
First and foremost, it’s most commonly presented just as a form of art. It can be used to create visually appealing images, animations, or even music.
However, generative art can be utilized also for other means. For example to visually represent the significance of data to the viewer. As visual content is processed much faster and easier than text or a spreadsheet full of data it’s advantageous to let a computer generate visual representations for them.
Another related field is simulation and modeling. Its aim is to copy physical properties and visually understand complex systems by building their approximations - models.
The most commonly used media in generative design are without a doubt images and video.
To show this output format I have choosen a very simple animation generated by a computer.
Rendering tools became very powerful over the years. And in combination with generative design they can produce visually appealing and complex scenes.
Here, I made a collection of procedurally generated 3D models. I used a modeling software Blender and a script which builds the scene and then renders it. Each card here represents a topic that people talked about at a given day.
The most well known example of this approach is Minecraft. I can provide you with a procedurally generated world for your game. Or it can be used as a content to fill the background of your scenes. For example an generated cityscape.
The next example is in an old procedurally generated world of mine. It's built using a recursive of galaxies, planets, their terrains, and trees. User interface allows you to view the world on any zoom level and it's infinite in both x and y directions.
I htink that the most important concept of generative design is parameterization. Script can use input parameters (for example width of the image, numbef or fish) and using them calculate location, shape, color, and movement of objects on the screen. You should be then able to tweak parameters to produce many differnet art pieces.
If you watch this example closely you can notice that it's only using a single math function. sin(x). But when it's applied to basic properties of objects like position, rotation, and color it can still produce complex looking results.
I think the second most important concept of procedural design is repeatability. Idea of this content is really straightforward: Given a script (source code) and inputs users can always generate the same artwork. So this means you do not have to store generated media as it can be always reproduced. Or you can still choose to produce new artworks by altering its code or inputs.
I decided to demonstrate this concept on this simple “profile picture generator”. Given a name it will produce an image composed of fern leaves to represent the name.
The most important concept of generative art may be randomness. It can be used to alter input parameters of the generative process to produce a varied collection of artworks or assets.
You can use this concept to produce many unique but visually similar items. For example a lot of different rocks for a game, a collection of card decks where each package is slightly different, or now-so-popular NFT collections.
In this example I am using a stream of random numbers to place new leaves forming tree-like structures in a process.
Another approach to procedural art is not to fully generate the media by yourself but instead take some existing content as an input and only transform it in a way. You can take things like images, videos, text, numbers, datasets and use a deterministic script to produce new content. For example by doing geometric transformations, color modifications, abstraction, or simplification.
To demonstrate this concept I choose a project that turns a series of photos (for example a gallery or video) into an abstract image containing a color palette that best represents the original images. This example uses statistical methods and other math magic to extract the relevant information.
A specific case of transformations are data visualizations. We can treat real world data as an input into a procedural design script. But in this case its purpose isn't an artistic expression, but a representation of information.
For example here I used a heatmap view, and various plots to describe distribution of caches and their visits for a game played in the real world, Geocaching. I am sure you have encountered many visualizations in your life, so I don’t have to explain their capabilities.
And the last concept used in a generative design I can think of is simulation. This can include physics simulation, flow of fluids, or discrete agents interacting with each other.
I have prepared this simulation using very few simple rules which jointly produce a complex behavior. In this case we have three basic rules:
And their interaction forces sheep to create a herd every single time even though it is not directly specified anywhere.
Only once you add all these concepts together you can start to see the full potential of generative design. It can be used to create art, visualize data, simulate complex systems, or even generate new content based on existing one. The most powerful use cases are still in game development. But I can imagine understanding individual concepts can help you create visuals of any kind.
...
Games were always pushing the boundaries of what is possible. All in the persuit of telling a story, or creating an unforgetable experience.
Let's start with one of the simplest games there is. Conway's Game of Life is a famous 0-player game turning few simple rules into a living, breathing world.
Based on The Game of Life, I've created a simple visual-hash function that turns any string or file into it's unique representation. It can either output an image respresenting the data or a compress it into string.
Disclaimer: I don't recommend using it tho, as I haven't validated that it's uniformity or it's fitness for any secure use.
The age old question that seems to be brough out every time a new person enters the game development community.
A low level implementation of a 3D scene using Open GL you can walk around in. It implements baisc model loading, lighting, reflections, and animations.
You may find yourself in a situation where you have to work with limited capabilities. A great example of this is WebGL - a web-based graphics library in your browser.
A simple game that I've created using PixiJS library on top of WebGL, featuring an endless runner where you are in contorl of switching train tracks to avoid obstacles.
One of the best known games that allow you to heavily modify it's content is Minecraft. Which I of course extensively used to create my own mods, plugins, and servers at the time.
On the other end of the spectrum, you have game engines that are purpose built and can significantly speed up your development. Unity is a an example of a game engine that allows you to quickly create 3D and 2D games.
During my freelancing period I've worked on a blockchain based card collecting game. My area of focus was integration of distributed systems, creating WebGl port, websocket based networking, and backend. But I've also fixed several visual issues and replaced card asset loading with a more efficient method.
Hand in hand with game development goes level design. It's what actually makes an experience out of game mechanics. And once again, it's very often been pushed to the limits of what is possible on the given platform.
A very common practice is to pack as much as possible into a limited space, trying to hide it's borders in naturally looking surroundings.
Without any assets to look at, your game world would be a very boring place. But creating them is extremely time consuming process. So there always was this drive to automate it as much as possible.
This tool takes two inputs: a color mask and a height map. Then proceeds to build a 3D model which is used to render a base image. As the next step it uses a machine learning to enhance the texture guessing some additional details.
In games it's not just about sending data in between players, but also about making sure it's done in a timely manner and actions are authorized properly.
However, when it comes to silly little games even a simple client authoritative solution will do. So I tried to do as little as possible to make a working multiplayer real-time browser game. I used a "collaborative JSON editor" library to synchronize game state between players (and server bots).
Another area where game development reached level of complexity preceeding or not at all present in other fields is emulation and platform porting.
I made a web port of this popular puzzle game, making it agian a bit more accessible for the current age. Transpiling it's source code using a tool called Emscripten and fixing issues that arose in the process. Most notably replacing some of libraries with versions that are compatible with running in browser.
No matter whether it comes to packing the most into limited space on cartridge, pioneering new 3D rendering tricks, or virtual reality. Games were always pushing the boundaries of what is possible. Often times long before the advances come to other fields.
I would keep my eyes open for any new developments in gaming as it's often a good indicator of what's to come. Even when it's microtransactions.
See you there.
AKA “a real job”
Working with others may provide it's own challenges, but it's essential to scale the things you can do well beyond what you could do alone.
Websites are the most common way to present information on the internet. And I have experience with building many different kinds of them. Blogs, static, eshops, internal applications, you name it.
Their development is commonly split into two parts, frontend (what users sees in their browser) and backend (what happens on the server). I've worked on both.
Later during my studies at MUNI I've joined InQool in a part time capacity:
It's one thing to work on a closed order like an eshop that is more or less built and delivered once. But it's a whole different story to has a little bit of sway on a constantly evolving product while it's being used by thousands of people.
The quintessential tool for managing data workflows.
As a link between server platform underneat and the data processing scripts on top, it's a great tool for managing data workflows. At this time I've been using it a lot in order to:
Working in a freelance capacity, not being bound by constraints of a single company, I've had the opportunity to work on a variety of projects. But it also means I had to wear many hats each day. I have done everything from gathering requirements, designing, developing, testing, deploying, and maintaining. Doing it it all is not always easy, but it definitely teaches you your limits. ( For me it's
)I started my freelancing by developing small blockchain based products, later getting into bigger game projects.
Afterwards I moved onto more traditional projects. Working on tailored systems for clients, there is one project in particular I would like to highlight.
Na medicínu
One project in particular I would like to highlight is a set of services that I developed for study course Na medicínu.
Study course for students preparing for entrance exams to medical schools. It consists of several parts:
♣️ Public websites
♥️ Internal system for students and lectors
♠️ Admin backend
♦️ Processes automation and email generator
Masaryk University - Bc.
Focuses on measuring of item similarity of questions from an adaptive tutoring systems utilizing correctness of answers from students.
Masaryk University - Mgr.
A newly built system allowin users to process and validate meteorological data while enhancing the analytical capabilities on the resulting dataset.
Coder | Artist | Me
"Top 10 places where to find me"