A TODO list can be found here.
StepCore is the physical simulation library on which Step is based. It can be used without Step for complex simulations which require coding or in other software which require physical simulation functionality. It is designed in order to be extensible, tunable and to provide accurate simulation.
Why was StepCore written? What's wrong with existing libraries?
There are several open-source (and proprietary) physical simulation libraries (most known are ODE and Bullet). They are really good for things they are designed for, but not suitable for a program such as Step because:
- Most of them are designed for games, this means quick, stable, realistic but inaccurate simulation. Step is an educational program, it is intended to show how things are in real world, so accuracy is really important.
- They do not provide error estimation (since it requires additional resources and is useless for games), but this is important for Step. If Step can't show how things are in real world it should at least warn the user.
- Most of them focus mainly on rigid body simulation, the scope of Step is wider.
- Most of them can handle only three-dimensional simulations. Using them for two-dimensional simulations is wasting computer resources.
- Most of them are not easily extensible, complex bodies such as massive springs are hard to implement with them.
- The other end is scientific simulation libraries, but they are too big and complex to be used with Step.
What are StepCore design goals?
- Accuracy and error estimations.
- Support for both 2d and (in the future) 3d simulations.
- Extensibility by adding new solver types, body types, forces.
- Extensibility by adding new simulation types which can possibly interact with each other (for example liquid simulation using Boltzmann equation which can interract with mechanical bodies).