Nova Physics is a lightweight and easy to use 2D physics engine designed with game development in mind.
You can also read this page in
- Simple and user-friendly interface
- Portable codebase with no dependencies
- Rigid body dynamics
- Discrete collision detection
- Circle shape
- Convex polygon shape
- Testing shapes against shapes
- Testing shapes against point
- Ray casting
- One-shot contact manifold generation between shapes
- Multiple shapes per body
- Broadphase strategies
- Bruteforce
- Bounding volume hierarchy tree
- Material properties (friction, restitution and density)
- Constraints between bodies
- Distance constraint - can also behave like spring
- Hinge constraint
- Spline path constraint
- Erin Catto's sequential impulse solver algorithm
- Great stacking stability
- Semi-implicit (symplectic) Euler integrator
- Collision filtering with masks and grouping
- Built-in profiler
- Optional double-precision mode
- Various interactive demos using SDL2 & OpenGL
The library uses C99 standard and depends only on the C STL.
For further instructions see here.
Example demos are in examples directory, enable building demos option in the build system (if not already enabled).
You can access the documentation including the API reference here.
If you are just getting started, you can use the introduction page.
Nova is a passion and learning project for me, and following are some of the many great resources that helped me along the way.
- Erin Catto, GDC Presentations and Box2D
- Chris Hecker, Rigid Body Dynamics
- Ian Millington, Game Physics Engine Development
- Christer Ericson, Real-Time Collision Detection
- Dirk Gregorius, Robust Contact Creation for Physics Simulations
- Randy Gaul, Game Physics Articles
- Allen Chou, Physics Blogs
- Jacco Bikker, How to build a BVH
- Marjin Tamis & Giuseppe Maggiore, Constraint Based Physics Solver
- Micheal Manzke, Multiple Contact Resolution
MIT © Kadir Aksoy
Nova Physics is, and always will be, free and open-source. Although I would greatly appreciate sponsorships!