Behavior Trees for Social AI

My last effort. The result of few years of research and the experience matured through a close collaboration with CCP Games (

Impulsion is a game AI engine for characters social intelligence. I made few teaser videos showing some of the main features of the engine.

The videos are about a gathering of characters in a cocktail party scenario. Some are going to approach others and start chatting. Eventually they will group in conversations. The engine makes every formation dynamic, able to rearrange when others join or leave.

Formations are not scripted but emergent. Every member decides where to stand and how to orient his body based on what’s happening around him. The engine will completely take care of that. More, it will let every character sense the surroundings and understand personal distance and proxemics. Characters can decide to look at each other and quickly glance at passers-by. When someone decides to leave a conversation, the engine will make the rest of the group react and rearrange automatically. Same goes when someone decides to join. Characters leave conversations by simply moving away from it. In doing so, the engine will make sure they choose a free spot which isn’t occupied by others or groups.

Graphics and animations are purely indicative. Impulsion doesn’t imply to use any game engine or rendering technology. It’s been designed with a middleware design approach in mind. It has a set of abstracted interfaces for plugging in to your favorite game dev platform. To make this demo, Impulsion was interfaced with a Panda3d sandbox application I made.

The engine is still under development so… it’s not done yet! Expect to see a better rendition quality and a larger library of behaviors to play around with.

List of features

  • A variant of Behavior Trees designed for character social intelligence
  • A library of data-driven behaviors for basic character social intelligence
  • Conversing group dynamics, characters autonomous clustering while conversing
  • Gaze attraction, notice passers-by, common attention in conversation
  • Motivation middle layer for multi-action fusion
  • Short term memory with internal query mechanism
  • Blackboard to share common states information amongst behaviors
  • Middleware design approach, abstracted interfaces for system integration
  • Flexible and customizable Sensory System
  • Debug tools like log messages, profiling and visual annotations
  • Native Python support
  • Impulsion Sandbox tool: a visualization tool to develop, test, debug and deploy Impulsion behaviors

Videos on Youtube:


Awesome. Not useful or relevant to me (it would be sweet in my game, but really irrelevant and unnecessary), but still awesome. Thanks for sharing!

Thanks Craig. I don’t know the type of game you working on but you might want to check out the Behavior Tree feature. It’s a framework for game AI and general game mechanics. You could use it for anything, not only what’s shown on the video.

I’ll keep adding behaviors… next in line, this one here