Gravity Engine 2

Version 7.0 (March 21, 2025)

Gravity Engine 2 is a Unity asset that provides gravitation simulation and orbital mechanics.

Gravity Engine 2 provides a complete toolkit for your space game physics.

  • create and configure orbits with editor and in-scene views

  • support for manual maneuvers, Hohmann and Lambert transfers

  • propagators for KEPLER, SGP4, ephemeris and PKEPLER motion

  • ability to use multiple evolution engines (no singletons!) in a scene

  • optional use of the Unity job system to offload physics calculations

  • clear separation between gravitational computation and the display of objects, optional multiple displays

  • simple, focused API

  • clear separation of world, physics and display scales

  • support for patched conic evolution

  • ability to build ALL of the solar system (planets, moons and small objects) in a sensible hierarchical model

  • rocket launch with ascent steering

  • circular three body evolution (cis-lunar etc.) with ability to import halo orbits from JPL

Promo video

There are “quick tour” videos for the sample folders:

Doxygen

What’s New in 7.0

There are two new features in release 7.0:

  • PLANET_SURFACE propagator in GECore with support in GSBody

  • Methods to monitor and copy patches (as well as significant patch bug fixes)

There are also important internal bug fixes in GECore around the use of patches that change propagation type. For example an SGP4 satellite that uses a Hohmann transfer requires a patch of type KEPLER to match the orbit computed by the transfer. It can then return to SGP4 propagation after the transfer completes.

Code has also been added to create a patch in the case of orbit decay for SGP4 propagation. This allows the final position to be “held” and a reverse-time slider to rewind time from the decayed position.

PLANET_SURFACE

The idea of the PLANET_SURFACE propagator is to locate a body on a planet surface (using the radius from the planet’s optional physicsal info) and to evolve the body in a way that corresponds to th eplanets rotation rate. This is useful for creating ground stations or lauch sites that are present in GECore and allows e.g. line of sight computations etc. to be done with values retrieved from GECore.

Patch Additions*

GECore has new methods:

  • public PatchData PatchDataForIdAtTime(int id, double tWorld)

  • public List<PatchData> PatchesForId(int id)

  • public void PatchesCopyFrom(int toBodyId, int fromBodyId, double fromWorldTime)