If you've played SpaceBound or looked at the Sc2Mapster news recently, you may have seen mention of Orbit, a library I am developing for N-Body simulation in Starcraft II.
An N-body simulation is a simulation of a dynamical system of particles, usually under the influence of physical forces, such as gravity. For more information on that, see Wikipedia.
The algorithm utilized in Orbit is a fairly simple solution to the n-body problem. There are several reasons why a simple algorithm was used in favor of a more accurate but more complex one:
- Galaxy does not offer floating point support and the fixed point in galaxy cannot handle very small numbers.
- This isn't a scientific piece of software - it only needs to look good, not be tremendously accurate.
What can I do with Orbit?
Orbit allows you to have objects interact with each other in ways that mimic gravitation and magnetic repulsion. If you've ever taken two magnets and brought the same poles close together, that's what you can expect out of Orbit. Alternatively, you can use Orbit to have things attract each other, like a planet orbiting a star.
What features does Orbit have?
- Orbit supports an arbitrary number of simulations (barring memory restrictions).
- Each simulation supports an arbitrary number of objects (barring memory and time restrictions)
- Orbit objects (masses) can be tied to units, points, or arbitrary locations
- Simulation objects can either interact with terrain or not
What does Orbit look like?
How can I use Orbit?
Orbit documentation is provided on the asset page, located here.
You can find a demonstration of Orbit used in a map here.
What's next for Orbit?
I plan on creating a GUI library for what is currently available and then looking at algorithm improvements.