Archive for the 'games' Category

12
Jan
09

New paper on procedural animation

This is a longer, journal paper on the Twig procedural animation system, submitted to the new journal IEEE Transactions on Computational Intelligence and AI in Games (full disclosure: I’m an associate editor).  This paper documents a fair amount more than the AIIDE paper, including object manipulation scripting, and a little bit about the authoring tools.

12
Jan
09

New paper on inference/action-selection – 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 (the procedural animation system I’ve been working on).  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.

25
Oct
08

my other blog

I’ve been maintaining a separate blog that’s specifically for Twig, the procedural animation system I’ve talked about a little here.  You can find the blog here.  At the moment, it’s more active than this site because that’s where most of my limited hacking and thinking cycles are going.

The blog also includes pointers to the episodes of a “webcomic” that I’m doing with Twig as a way of testing out features and guiding feature implementation.

04
Aug
07

believability and attributional intentionality

image

Robot hackers have long realized that human observers tend to over-attribute intelligence, or at least intentionality, to robots, at least provided that they’re moving.  (Dave) Miller’s law states that the perceived intelligence of a robot is directly proportional to its velocity (Dave didn’t name this Miller’s law, but he said it once at a workshop and I’m fond of quoting it).

The image above is a screenshot of what appears to be two child characters playing with one another while being watched by an adult.  However, in actuality, what I’ve been implementing is attachment behavior, which is the response of children to stress by seeking out their caregiver (more on this another day).  To implement that, I need to have something to stress the kids out.  The right way to do it is to implement a real social engagement system with wariness and coy behaviors, play, turn-taking, etc.  However, the first step in that is simply to make a second child and then hack the children’s appraisal systems to assign negative valence to strangers (i.e. to each other).  All that does is make the kids watch one another and keep their distance from one another.  For example, one won’t approach the ball if the other is too close to it.  There’s no real sociality going on there.

The interesting thing is that it’s enough to make them look like they’re playing.  They both run to the ball, but then when one gets to close to it, the other backs off.  The first one will kick it until it happens to kick it toward the other one (which is pretty frequent since I haven’t implemented aiming).  At that point, the first one stays away from the ball and the second one plays with it.  This continues until they get far enough from the parent to engage the attachment system, at which point the attached child runs to the parent and hugs him/her, then runs back to play.

The point of this isn’t that this is a good simulation of anything, just that surprisingly simple behavior can appear engaging and intelligent, provided that whatever behavior you do have is relatively fluent.

04
Aug
07

character physics made easy

image 

One of the annoying problems with wanting to do AI for virtual characters is that those characters can’t really do much without bodies.  But giving them bodies means wading into all that bothersome graphics and physics.  If you’ve ever read a paper on hardcore physics simulation, it’s pretty daunting, especially when you think about trying to run it at frame rate.

Probably the single most useful paper I’ve read this summer has been Thomas Jakobsen’s 2001 GDC paper on Advanced Character Physics in the Hitman engine.  Jakobsen talks about how to implement believable ragdoll physics by basically ignoring angular momentum and modeling rigid and articulated objects as particles (with only linear momentum) connected by rigid constraints.  By using a combination of techniques – Verlet integration and constraint satisfaction by projection – you can make a system that’s easy to implement, runs quite fast, and looks pretty good.  I was able to implement a basic engine in about 800 lines of C# code and an acceptable procedural animation system in another 600 lines or so (I’m particularly proud of the hugging behavior shown above).  It took me about a week of hacking, which is pretty good given that it was only my third 3D graphics program.  I highly recommend Jakobsen’s paper.