AI and its complimentary tools are ubiquitous in software and are becoming increasingly so in game engines. So, why not make this simulation using well established, efficient and freely available tools? Because, like with all these projects, there was an idea and ideas must be tried. And learning a tool doesn't always teach how the tool itself works and more importantly doesn't teach you why it works this way and not a million other ways, so that's why. More info about methodology in the last couple of paragraphs. For now...

LURNA is an AI simulation which uses a genetic process to select behavioural conditions

Simple: evolve agents that can survive sustainably. The catch is, you only have control over the survival parameters; how much food is made, how much damage is taken, how fast the agents mutate etc. Go too easy on them and they won't evolve, go too hard and the lineage will end.

Your agents will begin by acting very strangely, doing things that make no sense at all. You can track success in two ways; by observing the way their behaviour changes and you can also click on an agent to bring it into the inspector which will tell you what generation your agent is. Ideally you want a high number - this means that you have put enough stress on the population for them to evolve without dying out.

The simulation contains two different kinds of agent; Squares and Tadpoles. Both kinds have different survival requirements. Squares generate food for the Tadpoles and in turn they feed on the Tadpoles (effectively robbing them of food). As an agent is filled up they become green, as they get hungry (over time or by coming into contact with squares) they become red. When they starve they die. 

When an agent dies, if there is an agent of the same kind that is healthy (green) the healthiest agent spawns a new agent and passes on their genes to them (with some minor variations) and so each kind is "naturally selected" to behave in a way that makes them more likely to be healthy. And because agents are replaced as they die population is controlled.

In order to keep the world centred there is only fertile ground at the centre of the game scene, so departure from this area is death.

What makes this project different is that it is a driven by self-writing conditional objects. By that I mean that each agent carries with it 6 conditional objects each containing a condition in the form

if A is between B and C then move D amount relative to position E

Each condition informs the movement of that agent. At first each condition is randomly assigned numbers from within the game and randomly generated numbers each holding a position in the condition. When conditions are passed down, these conditionals maintain their variable assignment positions (if A was distance to nearest tadpole it will remain so) plus or minus a small random increment. Occasionally mutations will occur where 1 out of the 6 conditions is re-randomized while the rest of the conditions persist. In the event that no agent of a kind is healthy (green) then new spawned agents are completely randomly assigned as new.

The intended "Game" will involve tweaking the knobs to evolve highly capable agents that are able to navigate mazes.

Leave a comment

Log in with to leave a comment.