How is physics implemented in game engines

Physics engine

A physics engine is a program component that implements functionalities for physical simulations. It provides an interface to equip objects with physical behavior (forces, movements, friction, etc.) and to react to collisions of objects.

A good and more detailed description of physics engines can be found in the English Wikipedia article.

Here is a list of useful physics engines that can be used with MonoGame. There is no claim to completeness.

2D physics engines

Velcro Physics (formerly Farseer Physics Engine)
The Velcro Physics Engine is a good and advanced open source solution for 2D physics. It supports both monogamous and XNA. A number of examples are available on Github.

3D physics engines

BEPUphysics Library
The BEPUphysics Library is a very advanced physics library which can be used free of charge in non-commercial projects.
It has a documentation page and a very extensive demo program in monogame, for which the source code is also available. A forum is also available for further questions.

Oops! 3D Physics Framework
The oops! 3D Physics Framework is an open source project that was last updated in 2009.
It has a few rudimentary tutorials as well as a sample program in XNA 3.0.

PhysX (with wrapper)
The world-famous physics engine PhysX from NVIDIA can also be used for monogame and XNA projects. More information about PhysX itself and a list of (also commercial) games in which PhysX is used can be found in the Wikipedia article on PhysX.
In order to be able to use PhysX in the monogame / XNA framework with managed C #, a so-called wrapper must be used. The best-known wrapper for using PhysX under .NET is that of Stilldesign. It's available for free on Github and can be imported into projects using Nuget:
PhysX.Net from StillDesign