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)

https://github.com/VelcroPhysics/VelcroPhysics
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

http://www.bepuphysics.com/
https://github.com/RossNordby/bepuphysics1
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

http://www.codeplex.com/OopsFramework
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)

http://www.nvidia.com/object/nvidia_physx.html
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