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 =
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 |
TODO
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!

