Archive for December, 2011

Procedural Textures

Generating textures for games and virtual worlds is a time consuming task, to give you an example any big budget film or game may have well over 50% of the development budget assigned to creating 3d models and the images which cover them to make them realistic.

I’ve talked about procedural content generation before, but to give you an idea of it’s capabilities is a picture generated by the Graphic Designer Toolbox.

Looks pretty creepy, but the interesting thing is that it is created by a few blocks of mathematical algorithms rather than designed by hand.  Simply swapping in different algorithms can create entirely different effects, from clouds, to cities, mountains, deserts, and many other instantly recognisable features.  The effort required to generate a tool box of features may be large, but once you have the toolbox and can begin chaining effects, a single skilled designer can outperform a team very quickly. Modern films such as Avatar used this along with other PCG techniques to generate a whole alien worlds fauna and flora – without such methods it simply would not have been possible.

Objective NEAT

I’ve recently put together an implementation of NEAT in Objective C, the preferred language for Apple Mac and iOS devices.  The code is running quite smoothly now, although there are many small improvements and major extensions to be added.

The code can be downloaded from GitHub here, and I’ve put a full documentation up here.

The code is free to use, modify and include within any free or commercial applications, and I hope that it pushes a few more iPhone developers to create some cool applications and games with the technology.  There will be a few more posts on how the algorithms can be used for generating content or working with games in the future.


The current generation of games and virtual world applications require vast amounts of content to be considered believable, all of which takes designers, graphics artists and 3d modellers to put in place.

As the expectations of consumers rise, the cost of creating this content increases exponentially.  This is one reason that Procedurally Content Generation is of high value to the next generation of games and virtual world applications, whereby programmers design algorithms that create infinite worlds of all shapes and sizes.

One major issue with PCG is that sometimes the results can be ugly, boring, or unplayable.  Another is that it is can be difficult to direct the creation of a world without an underlying knowledge of how the abstract code works, which can be difficult for a designer to manipulate.

Ruben Smelik from the Delft University of Technology has just successfully defended his PhD in a Declarative Approach to Procedural Generation of Virtual Worlds, which makes very good reading for those interested in the subject.

Ruben has also built an application which immediately shows the simplicity and potential for successful PCG – SketchaWorld.

I am intending to apply the NEAT algorithm to this approach of building worlds, either a a direct (using HyperNEAT) or indirectly via softawre agents under the control of evolved neural networks.

In 2002 Ken Stanley and Risto Miikkulainen presented an evolutionary method for developing solutions using Neural Networks – NeuroEvolution of Augmenting Topologies, or NEAT. This technique, while relatively new, takes inspiration from natural evolution and has been used in a number of very interesting applications from agent control through to creation of new music and art forms.

It’s an area of research that is highly relevant to my work, and to better understand the topic I’m putting together an implementation in Objective C, the preferred language for Mac and iOS devices.  As an introduction to the topic and for other students I’ve put together a brief presentation on the subject.

Presentation on NEAT

Since then Ken has moved on to the Evolutionary Complexity Research Group (EPLEX) at the University of Central Florida and extended the research in a number of ways, the most interesting to me being in the search for novelty.  Ken has a website that shows some of the directions and algorithms, and to get an idea of where it is heading I’d recommend his Keynote speech from the 2010 SPLASH conference.