I've had a particular AI book sitting on my shelves for a few years now, and whilst I made use of the chapters on steering behaviours before, I never got around to tackling the later chapters which covers things like goal driven behaviour, fuzzy logic & perceptual modelling. The book puts them together together into a death match game called Raven, and I thought that it was about time I gave making my own version of this a go.
Download Raven Deathmatch v0.1 for Windows
What you get if you do download is you'll see a few coloured bots navigating around a basic arena looking for better weapons, seeking health and armour as they need it, and shooting anything they can see (with the weapon they deem most appropriate). Here are the sprites for those weapons, you may notice I might have taken inspiration from a rather classic death match game for some of them.
So You can sit and watch the bots kill each other and see who RNJesus favours best or you can click on a bot and take control of them to enter the fight yourself!
There's nothing particularly new or innovative in the design aspects of this experiment, it's more of a test-bed of AI techniques, which is why it's not really been polished beyond the proof of concept stage, at least not yet. The main aspects of said AI is a goal based behaviour system; including evaluation of the value of each potential goal, arbitration between them, as well as a basic navigation graph, path planning and steering behaviours to fulfil those goals. There is also some perceptual modelling and short term memory for each of the agents which feeds into the goal based behaviour.
The book used Fuzzy Logic system for weapon selection, however having reviewed the sections on Fuzzy Logic, and then examined how one has to simplify the full blooded approach to get a well performing implementation, I came to the conclusion the AI would be better off using desirability functions taking the various considerations as inputs instead, and that the author probably used Fuzzy Logic for this so he had an example to demostrate the technique, rather than it being the best choice for that particular task.
Now that I've dug it up what I did manage in the couple of months I used my spare time to on work on it, I may go back and polish it a little more. Perhaps do some optimisation work so that I can export to WebGL and put it up on the site rather than offering a zip download.