MonoGame says goodbye to XNA (and that's a great thing)
I've highlighted MonoGame a number of times but it's always been dependent on XNA, which has been dead for a few years now, making it a little complicated to use.
Until last week. MonoGame has just reached a huge milestone and has left XNA behind for good...
Here are just a few of our MonoGame posts;
- MonoGame - Write Once, Play Everywhere
- XNA and a Windows 8 Store game? MonoGame!
- Windows Store 8 Game, MonoGame, SignalR and more
- MonoGame for Windows 8 tutorial and ton's of new samples too
- MonoGame, F# and Santa!
We have finally reached the end of an era and the dawn of the next with the MonoGame project. The latest release has now broken its ties to the old XNA framework and stands alone.
No longer is XNA required to use MonoGame
This is an epic milestone as MonoGame finally realises its dream of journeying beyond the realms of what XNA had to offer (some might argue it already did that with all the platforms that MonoGame supports) and is building capabilities that never existed before in XNA. Granted this is not a big rush forward but small baby steps inching forward.
Everything that has come before
As it stands, MonoGame implements practically the full set of functionality that XNA did, meaning that all your old XNA 4.0 projects will be compatible with MonoGame. There may be one or two little hiccups (this baby is taking its first proud new steps in the world) along the way but it has a proud tradition of hardy developers backing up this project.
Did I mention that no one on the MonoGame team is getting paid for this? It is completely funded by developers free time and effort! You have to respect that. Any contributions to the project go in to the project’s needs, like Servers, Websites and merchandise!
A brave new world
You might wonder what makes this announcement so special, why all the pomp and circumstance?
The currently supported list of platforms maintained by MonoGame as of the 3.3 release include:
- iOS (64bit metal only)
- MacOS (net4, net45, MonoMac and Xamarin.Mac)
- Windows OpenGL
- Windows DirectX
- Windows 8 / 8.1
- Windows Phone 8 / 8.1
- Windows Universal apps (I’ll come back to this)
There is an experimental 3.3 PCL platform release, however this is still a work in progress. There are no issues using it, just be aware some classes / namespaces aren’t recognised. All this means is that some code can’t live in the PCL at the moment but we’re working on this.
MonoGame also supports most consoles (more in the future) but you need contracts with them before you can even start considering it!. Chat to us if you have specific plans and the team can help.
I won’t go in to this too much here as I am planning a series of starter tutorials / videos to help you get going.
Are we not dead yet?
I’ve heard various comments around the web thinking because XNA is on its way out, so must MonoGame. Or, I’ve not heard from MonoGame in a long while and there are no updates, are they dead yet?
I can attest to the fact that MonoGame is a very active project, with lots going on under the hood.
This is the MonoGame 3.3 release. It is a culmination of over 3,000 commits from dozens of developers over the last 11 months.
- MonoGame 3.3 for VisualStudio
- MonoGame 3.3 Binaries for Mac
- MonoGame 3.3 Pipeline GUI Tool Package for Mac
- MonoGame 3.3 On GitHub
We still lack easy to use installers for Mac and Linux binaries and Xamarin Studio templates, but they are being worked on and we plan on them being available in the next release. For now depend on the zipped binaries above or building from source code when developing from Linux or Mac.
Note this is the first in our new push to release “early and often”. We expect to have official releases on a quarterly to monthly basis based on the submitted fixes and features.
Also this will be the last release with the MonoGame content pipeline extensions for XNA. We will be focusing all efforts on the new MonoGame content pipeline in future releases.
This is a short summary of all the changes in this release:
- Support for vertex texture fetch on Windows.
- New modern classes for KeyboardInput and MessageBox.
- Added more validation to draw calls and render states.
- Cleaned up usage of statics to support multiple GraphicsDevice instances.
- Support Window.Position on WindowsGL platform.
- Reduction of redundant OpenGL calls.
- Fullscreen support for Windows DX platform.
- Implemented Texture2D SaveAsPng and SaveAsJpeg for Android.
- Improved GamePad deadzone calculations.
- We now use FFmpeg for audio content building.
- BoundingSphere fixes and optimizations.
- Many improvements to Linux platform.
- Various fixes to FontTextureProcessor.
- New Windows Universal App template for Windows Store and Windows Phone support.
- Many fixes to reduce garbage generation during runtime.
- Adding support for TextureFormatOptions to FontDescriptionProcessor.
- XNA compatibility improvements to FontDescriptionProcessor.
- Resuscitated the unit test framework with 100s of additional unit tests.
- BoundingFrustum fixes and optimizations.
- Added VS2013 project templates.
- Moved to new MonoGame logo.
- Added MSAA render target support for OpenGL platforms.
- Added optional content compression support to content pipeline and runtime.
- TextureCube content reader and GetData fixes.
- New OpenAL software implementation for Android.
- Xact compatibility improvements.
- Lots of Android fixes and improvements.
- Added MediaLibrary implementation for Android, iOS, Windows Phone, and Windows Store.
- Added ReflectiveWriter implementation to content pipeline.
- Fixes to Texture2D.GetData on DirectX platforms.
- SpriteFont rendering performance optimizations.
- Huge refactor of ModelProcessor to be more compatible with XNA.
- Moved NET and GamerServices into its own MonoGame.Framework.Net assembly.
- Runtime support for ETC1 textures for Androud.
- Improved compatibility for FBXImporter and XImporter.
- Multiple SpritBatch compatibility fixes.
- We now use FreeImage in TextureImporter to support many more input formats.
- MGFX parsing and render state improvements.
- New Pipeline GUI tool for managing content projects for Windows, Mac, and Linux desktops.
- New implementation of content pipeline IntermediateSerializer.
- All tools and content pipeline built for 64-bit.
- New documentation system.
- Implement web platform (JSIL) stubs.
- Lots of fixes to PSM.
- Added Protobuild support for project generation.
- Major refactor of internals to better separate platform specific code.
- Added MGCB command line tool to Windows installer.
Congrats to the MonoGame team on this news and release!