Introduction
Zedsquared writes in his Developer Journal...
I'm currently coding for UTRon the tron mod and am looking into the AI for the lightcycle game ATM, I remembered stumbling upon This Site a while back where you can play (ordinary, boring, top down, 2D) lightcycles against opponnents that are controlled using Genetic Programming techniques... go there now and give those bots some more training... go on! there's a high score table and everything :)
The more I read about it the more it seemed like a cool thing to try out... evolve an AI by randomly generating loads of controlling programs and playing them off against each other and humans, the best performing ones get creamed off the top and allowed to 'interbreed' with a little mutation thrown in for good measure thus producing a new generation to be tested and so on until eventually (maybe) AI is evolved that plays a decent game.
Now it strikes me that UT could be quite a good environment for this sort of thing, the large number of trials needed to evolve from 'random nonsense' to 'random seeming nonsense that somehow just *works*' can be carried out on many pcs in parrallel all talking to a central server that keeps track of the gene pool (think SETI@Home with a moebius twist). Uscript already has some TCP link classes that I need to get to grips with anyway so what the hell.. let's go!
Rewind a fortnight or two... I'm sitting on my own in a hotel in Milton Keynes (work... don't ask!) with a laptop loaded up with UT, WOTGreal and winCVS, fired by the inspirational knowlege that Bletchly Park (where this whole computing thing was kick started by Alan Turing waaay back when) is only a few miles down the road I decide that the time has come to turn this whim into a reality, I start to scribble, realise I have no pen, borrow one from reception and *really* start to scribble, strange blobby tree diagrams cover the paper, occasionally the distinctive crack of lightly chewed Bic casing is heard, all falls quiet for a second, my hands hover over the keyboard for a contemplative second or so and kapow! An edifice of code starts to take shape, it's turning as recursive as a very recursive thing (but that's OK), seems nicely modular, and might, just might... actually work! I missed out on the best thing about hotel life ( huge breakfast! ) next morning due to oversleeping a little :)
Fast forward to the present and that core has been expanded upon and is approaching something workable... having a full on breeding program is close, just got the tcpip stuff to work on really.
Here's some code and stuff to be lightly refactored into a tutorial later with any luck:
Tarquin: Well it's perhaps not ready to be a tutorial yet, but the pages have been static for about a year now, so I've taken the step of moving them here :)
Contents
- Episode I: Genetic Programming/Nodes
- Episode II: Genetic Programming/Genes
- Episode III: Genetic Programming/Mutation