Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
An extensive steering behavior library in Java, Javascript, C#, C, and C++
branch: master


Steerio is a steering behavior, spatial database, and path library for games.

What's a steering behavior you ask?
A steering behavior is something that helps an object in your game move around in an intelligent and realistic way.

What are spatial databases?
A spatial database is a structure that you can add geometry to (like circles) and quickly query to find all colliding geometries, intersecting, contained, and K nearest neighbors.

What do you mean by Path?
A path can be a chain of line segments or a curve going through a defined set of points.

What languages is this available in?
Java is the main language, but it has been ported to Javascript, C#, C++, and C.

I want to see some cool examples!

  • Mini RTS
  • Geometry Wars Clone
  • Capture the Flag Simulation
  • Asteroids Simluation

What type of games use steering behaviors?

  • RTS = unit movement, horde formations
  • FPS = unit movement, AI that can dodge/maneuver around its environment
  • Sports =

Spatial Database Performance

The following performance scenarios involved 10,000 objects (~5% stationary, ~95% bouncing around the world boundaries) with the size between 1 and 4 in a space the size of 12,800 by 12,800 running at 100fps for 1000 frames.

Refresh Statistics (a refresh is done once per frame after all entity positions have been updated)

Average (s)
SpatialQuadTree 0.000198237 ± 0.000047692
SpatialDualTree 0.000189507 ± 0.000044070
SpatialSweepAndPrune 0.001039657 ± 0.001038347
SpatialGrid 0.000423223 ± 0.000062180
SpatialArray (brute force) 0.000029937 ± 0.000011471

Collision Statistics (the amount of time it takes to determine all collided entities)

Average (s)
SpatialQuadTree 0.000616374 ± 0.000149716
SpatialDualTree 0.000636301 ± 0.000123757
SpatialSweepAndPrune 0.002738293 ± 0.002591943
SpatialGrid 0.000676963 ± 0.000141264
SpatialArray (brute force) 0.538688420 ± 0.017520597

Things I need to explain: Targets, Steering Behavior, SteerSet, SteerModifier, SpatialDatabase queries, SpatialDatabase geometries, Path implementations
Each Steering Behavior implementation
Each Target implementation
Decision Tree for which Spatial Database to use
Pros/Cons for Spatial Databases
Each SpatialDatabase implementation
Pictures for all of it!

Something went wrong with that request. Please try again.