Game Painter

An experimental game engine
powered by cellular automata

Paint sprites

Paint levels

Paint rules

Map rules to inputs

Make games respond to input by mapping rules to inputs.

An Experimental Game Engine

Research questions

How can cellular automata be used as a programming tool for designing games and other interactive systems?

What implications does this style of graphical programming have on the programmer's creative process?

Design Pillars

Contextual Programming

Game Painter is an extension of cellular automata. While cellular automata can be encoded and manipulated in code, it is more natural to work with them in their graphical form. This way the programmer can relate to the software directly, much the same way a user would relate to it.

However, to express arbitrary levels of abstraction and to interface with other pieces of software, code can be very useful. For those reasons, while the graphical user interface is the primary focus of the project, a scripting language will also ship with Game Painter.


Game Painter should allow for improvisational creativity, which means the software aims to be accessible, intuitive, and seamless.

Relationship to Automata Painter

Game Painter is related to another project of mine, Automata Painter. Essentially, Game Painter is Automata Painter plus interactivity, but there are some other key differences.

Game Painter and Automata Painter don't have a superset / set relationship like C++ and C. Instead, they share a lot in common and each has features that the other doesn't. They are like two different branches on the same design tree.

In particular, Game Painter adds rule-switching via input presses. Different rulesets apply depending on which inputs are pressed, meaning Game Painter can express fully interactive games whereas Automata Painter can only express autonomous systems.

References and inspirations

PuzzleScript, an HTML environment for scripting puzzle games.

Cellular automata, obviously, and Wolfram's elementary automata in particular, which helped me see how cellular automata can be encoded.