Utomata is a programming framework for web-based cellular automata experiments. It is designed for exploration and study of cellular automata in computational art and procedural content generation. It features a custom functional syntax to express a wide range of algorithms. It is lightweight, dependency-free and open-source.
Overview
Cellular automata (CA) are computational models featuring grids of interacting cells. Each cell changes its state according to a set of rules based on the states of neighboring cells. CAs are used in various fields such as mathematics, physics, biology, and computer science to model complex systems and emergent behaviors.
Utomata is a web-based framework for real-time coding and interaction with CA algorithms.
Utomata is a lightweight, dependency-free, hardware-accelerated JavaScript library for cellular automata experiments. It is easily embeddable in any web page, enabling rich interactive experiences and robust CA experiments. Designed for creative media, education, and procedural content generation, Utomata is ideal for cross-disciplinary research in computational arts and artificial life. The framework features unique variables and operators for CA, a custom programming syntax for CA configuration and transition functions, and supports various CA types, including outer totalistic and 4D continuous state cellular automata. Utomata bridges the gap between artistic exploration and computational modeling, making CA exploration more accessible to creative practitioners.
Versatile
Utomata supports a wide range of CA algorithms, accommodating various neighborhoods and state types.
Interactive
Designed for open-ended exploration, Utomata encourages playful, expressive, and improvisational programming. It supports large canvas sizes and running multiple algorithms concurrently, allowing exploration through visual, interactive, or automated experiments.
Consistent
The framework features a custom programming syntax, allowing live-coding, comparison, combination, analysis and archival of CA.
Flexible
Open-source, lightweight, and highly extensible, Utomata programs can be freely exported, embedded and shared online, as well as ported into other programming environments.
Cross-Disciplinary
Utomata can be used in a wide range of disciplines. It provides tools for both intuitive, improvisation-based studies and precise, repeatable experiments.
Getting Started
To get started with Utomata, the easiest approach is to use the online IDE.
Utomata is a shader program, meaning it leverages the power of the graphics card (GPU) to perform calculations. This allows Utomata to handle large cellular automata (CA) grids at high frame rates and enables real-time coding of algorithms. In practice, each Utomata program runs in parallel across all pixels (or cells) on the canvas.
Each cell in the grid is represented as a 4D vector [r, g, b, a], where each component is a value between 0.0 and 1.0. Every Utomata program consists of two main components: setup, which initializes all cells when the program loads, and update, which recalculates cell states at regular intervals. These components are essentially vectors that guide cells in determining their next state. Below is an implementation of Conway's Game of Life.
// configure to random binary: 10% white
setup = vec(stp(0.9, rand()));
// run Conway's game of life
update = add(eql(3, V9), eql(3, V8));
Utomata features a comprehensive set of built-in neighborhood variables that support both totalistic and outer-totalistic CA. The V variables represent totalistic neighborhoods, where each cell interacts with its surrounding cells by using a total sum of their states. U variables represent outer-totalistic neighborhoods, allowing specific neighbors to be sampled.
Further documentation is available at utomata.net/doc
Utomata is freely available on Github
Examples
Click the examples below to load into the editor
Online IDE
utomata.net/ide
Utomata/IDE is an online development environment for Utomata. It allows real time coding of algorithms and essential analytics tools. The IDE features import and export capabilites, as well as custom permalinks to projects.
utomata.net/gl
Utomata/GL is an experimental programming environment for Utomata. It features a visual programming interface and supports multiple concurrent canvases within the same project. This project is in early stages of development.
Utomata Lab
utomata.net/lab
Utomata/LAB is a robust tool for CA exploration. It allows browsing through all possible variations of any given Utomata algorithm. The lab featues custom analysis tools, as well as exporting capabilites.
Utomata Library
utomata.net/lib
A curated collection of cellular automata algorithms, implemented in Utomata.
Resources
Vital Signs -
Red Nose Hexagliders
The first installment of Vital Signs, a documentary series exploring emergent virtual structures. Red Nose Hexagilders are a newly discovered species of continuous state cellular automata.
Laboratory of Babel -
ISVIS 2023
The first installment of Vital Signs, a documentary series exploring emergent virtual structures. Red Nose Hexagilders are a newly discovered species of continuous state cellular automata.
Exploring Emergent Structures with Cellular Automata
Opening lecture at the "Emergent Behavior" symposium. Tel Aviv 2020.
About
Utomata was developed by Lior Ben Gai as part of his PhD research in Computational Arts at Goldsmiths University of London.