p3opensteer is a project that exposes the features and functionalities of the plug-ins that come with the OpenSteer library (opensteer.sourceforge.net/) to the Panda3d engine as an extension module.

The code is available at (master branch):


To build and install it, see INSTALL in the source code.
To start with it, see NOTES in doc folder
To start use it, see the basic, and other examples (both python and c++) in the samples folder
Examples about all plugins’ usage have been added, and they are:

  • ‘one turning’
  • ‘low speed turn’
  • ‘pedestrian’
  • ‘boid’
  • ‘multiple pursuit’
  • ‘soccer’
  • ‘capture the flag’
  • ‘map drive’
  • ‘pedestrian external’
  • ‘callback test’
    Here are some short videos:

low speed turn
multiple pursuit
capture the flag
map drive

p3opensteer derives its functionality from the “plug-in” framework presented in OpenSteer as a way to synthesize “steering behaviors” by exploiting the features of the core library; also it adds some extensions and flexibility that can be useful in other applications such as:

  • managing multiple plug-ins at the same time
  • ability to set parameters as strings to facilitate the use of external configuration files, such as XML (data-driven)
  • possibility of throwing events
  • custom update callbacks
  • integrated possibility of using “kinematic” agents which fix the position on the surface of environment geometry
  • implementation of the TypedWritable api to write/read plug-ins and vehicles in/from bam files


  • currently p3opensteer exposes only the plug-ins that comes with the library source code; but nothing prevents you to invent new plug-ins for synthetizing new steering behaviors and then integrate them into p3opensteer
  • p3opensteer is not a porting of the core functionality of the library
  • the code doesn’t use multithreading
  • the code, at present, is not optimized
  • development and tests has been made only on Linux, so it is greatly appreciated testing on other platforms (there is not platform specific code inside the project). Currently, it is built as an extension module using the tool, slightly modified, P3DModuleBuilder (github.com/tobspr/P3DModuleBuilder.git) by tobspr
  • development and tests have been made using recent versions of panda3d (built from git source tree using makepanda)
  • bugs and errors: don’t hesitate to report when you find one

I hope this module could help Panda3d programmers to integrate some steering behavior functionalities offered by OpenSteer, in their own code.