Skip to content

An extensive steering behavior library in Java, Javascript, C#, C, and C++

Notifications You must be signed in to change notification settings

Slyvester/Steerio

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Development

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

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!

About

An extensive steering behavior library in Java, Javascript, C#, C, and C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published