Author Archive for Ian Horswill


1.0 release roadmap

I haven’t posted here in quite a while, so I think it’s time to catch up on the plans for twig. The main issue is that I’ll be teaching a class in the fall using Twig, so I’ve been working to make it easier for people who aren’t me to build new behaviors in the system by both refactoring codebase and building in a real scripting language (based on Scheme), along with a reimplementation of the behavior-based programming infrastructure we used to use in my lab for robot programming.

So suffice it to say that we’re close to the point where I’m ready to do a 1.0 release (we’ve been at 0.2 for a while). We have tools for authoring new motion behaviors in the scripting language, along with interactive in-game debugging. I’ll also be doing a simple behavior-tree implementation based on Chris Hecker’s BT system for Spore. Classes start in mid-september, so that will be my forcing function for putting up a 1.0 beta release, and then we’ll probably have new bug fix releases every week or so after that.


Twig now on sourceforge

I should have posted this long ago, but Twig is now hosted on sourceforge. You can find it at:

I’m still learning how to use sourceforge, but I assume it provides read-only access to the source tree. If not, I can create zip files of source releases.



We now have the beginnings of a manual.  It’s bare bones at the moment, but please feel free to send me questions or requests for things to further document.

After way too much travel and administration, I’m finally able to switch over to summer research mode starting today and I seem to have managed to start by squashing the last bug I was aware of in the 0.2 release, so I’m posting everything.  Please feel free to send documentation and feature requests.


Version 0.2 released (alpha)

See the source code page.  Twig now has the beginnings of a manual.  To simplify the documentation process and generally make it easier for people other than me to extend the class hierarchy, the APIs for the Physics, TwigObject, and TwigGame classes have been refactored and rationalized.  Feedback is very welcome.


Verison 0.1 released

This version adds tables and chairs, automatic subgoaling using role-passing, an example client for the server, and a number of bug fixes.

The source code can be downloaded from here.


Status update and release schedule

I haven’t posted much recently other than papers.  The school year tends to be hard for me because I teach what’s referred to as an overload (i.e. more courses than I’m normally supposed to).  The good news is that the quarter is over and I’m back from GDC and the AAAI Intelligent Narrative Technologies Symposium.  The bad news is that the new quarter starts tomorrow.

I’m behind on my self-imposed schedule for the next release of Twig.  The new release has the fast subgoaling code from the FDG paper, as well as new prop types, new actions, grabbing that’s integrated with reaching, sitting that’s integrated with locomotion, and a bunch of fixed and extensions to the RPC system.  It’s all done, I just haven’t finished porting some of the old controllers over to the new goal system.  And I need to do regression testing on the old episodes of the web comic.

However, I have a lot to think through and blog about from my week of conferencing, so I’ll try to do that first while it’s still fresh in my mind.  But I want to be sure to put it up before I’m sucked into further travel.  So one way or another, I’ll be posting it before my talks in Singapore mid-month.  If nothing else, I have 24 hours of flying time with just me and a laptop …


New paper – comments welcome

This is a paper I wrote for ICFDG that takes some work from my previous life as a roboticist and applies it to Twig.  However, it’s situated in a tradition that the games community, and even the present-day AI community isn’t very familiar with, so much of the paper is an attempt to survey and explain the literature on using combinational logic for inference – why you’d want to do it, why it’s limited, and what you can do to overcome some of the limitations.  And even then, I’m worried that it won’t be transparent to the reader; not because it’s technically difficult, but just because the motivations won’t be clear.  Anyhow, any advice would be welcome.

January 2018
« Aug