Page last modified 12 April 2010
Code last modified 28 October 2008, but under development Summer 2010


Behavior Oriented Design (BOD) is a way to develop AI systems.  It requires a modular behavior library in any OO language, and a version of POSH action selection for that language.   jyPOSH (formerly pyPOSH) is a version of POSH that runs in python and jython.  For other languages, go back to the AmonI Software Page

POSH on its own is only an action-selection mechanism.  It requires executable plan primitives (actions & senses) to make anything happen.  Under BOD, these are provided by modular behaviour libraries. To get interesting things happening quickly, please have a look at one of the existing libraries mentioned above.  BOD MASON also contains a tutorial based on the sheep/dog demo.  The instructions may be out of date, but the demo code is current.

The jyPOSH code is a 1.8M zip file --- if there are any OSs that can't open it, please let me know.  This includes a number of behavior libraries and code to support them, check out the readme file that is distributed with it.  

If you are really certain that you don't want to use MASON and you're on a very slow link, you might want to download a MASON-free version of jyPOSH, which would only be about 265K.  If this is true email us & we'll start supporting that again.

History and Acknowledgements

Joanna Bryson developed BOD & POSH during her PhD

In 2003, Andy Kwong translated & improved the lisp version (which included an action scheduler mechanism developed by Kris Thórisson for Ymir. Andy got the scheduling running better / properly threaded.)  Andy also created the original UT behavior library. Andy Kwong's quite excellent MSc Dissertation.

In 2004/2005, Sam Partington improved the pyPOSH code on the way to doing his undergraduate dissertation.  He fixed a few bugs including making pyPOSH properly support modular behavior libraries.  He massively extended the UT behavior library and created elaborate plan agents.  Sam Partington's award-winning UG Dissertation, A critical analysis of Behaviour-Oriented Design (BOD), based on experiences in using it to create an Unreal Tournament Capture-the-Flag (CTF) team

In 2005, Tristan Caulfield, working as a research officer in the AmonI group, rewrote the GUI interface to pyPOSH in swing (wxPython wasn't very stable), fully commented the core POSH code (by taking the comments from the lisp code), ported pyPOSH to jython so that it could work with Java libraries as well, and made the initial pyPOSH MASON library code. 

Also in 2005, Stephen Couzins extended the UT plans to support teams with attack and defend bots. 

In 2006-2007, Andy Mansfield and Francis Binns improved the UT BODbot code to better handle time passing and to exploit the new version of jyPOSH.

There is also now a POSH IDE (or at least editor) in alpha release called ABODE.  

In 2006-2007, Jan Drugowitsch rewrote, sanitized & expanded the pyPOSH code generally, including supporting ABODE development, implementing a new jython version of SPOSH from scratch, a new lap file parser, and making the notion of how behaviors combine into an agent clearer and easier to express.

In 2010, Jason Leake is working on porting jyPOSH to YARP.

page author: Joanna Bryson