I studied computer engineering at the University of Pretoria. I worked in game development for almost three years, before I joined InnovationLab to help them create interactive simulations and serious games. After two years, I got back into game development, working for I-Imagine. In 2010 I completed my honors degree, and I have recently taken up the reigns of the South African game development magazine Dev.Mag.
Some projects that I have worked on:
More music: http://www.youtube.com/user/hermantulleken2
Articles for Dev.Mag:
Email: herman.tulleken@gmail.com
Tags: AI, Dev.Mag, Game Development, Perlin noise, poisson disk, sampling, Simulation, tiles, tool development

Faster Code
A while back I wrote about a simple texture algorithm that I have been exploring. The Python implementation was very slow – so much, that I decided to implement it in C++ to see what performance gain I would get. Surprisingly, the C++ version is about 100 faster, if not more. I expected a decent increase, but what once took several hours can now be done in a minute!
Read the rest of this entry »
Tags: 2D, blend animation, blending, C++, Image Processing, optimisation, Perlin noise, procedural texture, prototyping, Python, random
Random steering is often a useful for simulating interesting steering motion. In this post we look at components that make up a random steering toolkit. These can be combined in various ways to get agents to move in interesting ways.
You might want to have a look at Craig Reynolds’ Steering Behaviour for Autonomous Characters — the wander behaviour is what is essentially covered in this tutorial. The main difference is that we control the angle of movement directly, while Reynolds produce a steering force. This post only look at steering — we assume the forward speed is constant. All references to velocity or acceleration refers to angular velocity and angular acceleration.
Whenever I say “a random number”, I mean a uniformly distributed random floating point value between 0 and 1.
Read the rest of this entry »
Tags: 2D, AI, artificial intelligence, blending, C++, Game Development, Game Maker, Perlin noise, probability, random, random distribution, random motion, random steering, response curve, Reynolds, sampling, Simulation, steering bahaviors, steering behaviours, vector field, wander, white noise

I use this code to illustrate many of the tutorials on this site, and the articles I write for Dev.Mag. Ideally, I would like to package the code so that it is the minimal necessary for the particular tutorial; however, a lot of the code is reused, so that it becomes difficult to maintain. Instead, I distribute it all together. That way, new updates and extensions can be found in one place.
The current version includes classes and functions for:
- easy-syntax 2D and 3D arrays (for example, you can use grid[1:20:2, 2:3:20] to access the pixels in every second column (starting with column 1 and ending before column 20) and every third row (starting from row 2 and ending before row 20) (docs);
- general image utility function (docs);
- perlin noise (docs, tutorial);
- poisson-disk sampling (docs, tutorial);
- texture generation algorithms (docs, tutorial);
- quadtrees (docs, tutorial part1 and part 2);
- classes for generating random points (1D and 2D) from arbitrary distributions (docs, tutorial);
- functions for blending between images (for smooth transitions between regions in seamless tile sets) [see blend_demo.py, tutorial]; and
- functions for image quilting (under construction).
A few notes:
- The code is not optimised, and in general convenience and clarity takes precedence over speed. This code is not suitable for many applications where speed is important.
- The code will change often. At this stage I do not try to make it backwards compatible.
Download
Python Image Code v0.6
python_image_code_v0_6.zip (593 KB)
Requires PIL (Python Image Library).
This version includes some of the dependencies that accidentally got left behind in the previous version.
Tags: 2D, AI, blending, Dev.Mag, Perlin noise, Python, quadtree, quadtrees, random, sampling, tiles
Recent Comments