FNA is an open source project making it easy to port and maintain XNA based games to several different platforms. FNA has been used to port a huge number of indie games including the likes of Celeste, Bastion, Axiom Verge, FEZ, Owlboy, Rogue Legacy and more.
The goal of FNA is described as:
Our goal is to preserve the XNA game library by reimplementing XNA itself, with an incredible focus on accuracy. We want to reproduce XNA as it was made by Microsoft, while providing an experience that feels “at home” on all of our target platforms. We don’t use game-specific hacks in our code: either we do it right or we don’t do it at all.
Because our platform focus is exclusively on fully open platforms, our primary focus is on the desktop. To that end, FNA supports Windows, macOS, and GNU/Linux with a single assembly file. We don’t use preprocessor conditionals for platforms; our platform model requires that we build a library that works on any platform, regardless of where it was built. When you build an FNA title with Visual Studio, you can expect it to function on Windows, Mac, and Linux with that one set of output assemblies. Additionally, FNA has support for iOS, tvOS, Xbox One, Nintendo Switch, and Google Stadia.
A more recent development reported on Gaming On Linux, is the creation of FNA3D, a new backend supporting different 3D back ends, including new alpha level support for the Vulkan framework. The one thing FNA does not support is the Content Pipeline, although you can use the MonoGame content pipeline. The reasons why FNA didn’t implement the XNA pipeline is described here. There is a project to make getting up and running using FNA and MonoGame’s content pipeline available here.
If you are interested in learning more about XNA/FNA/MonoGame, we have a tutorial series available here. You can learn more about FNA in the video below.