I want to develop a 2D physics game that could eventually be published to all the top platforms. I am a bit confused on the relationship between MonoGame and Mono and Xamarin. I am also unclear on the barriers between MonoGame and the platforms it is capable of targeting. Is there a good place to read, or diagram to help me understand better?
Things I am most interested in:
A clear understanding and of when I am developing at the core of my code that is shared across platforms and when I am going in a direction that is specific to one or more platforms.
How far can you go before you start purchasing software? I have downloaded samples that immediately want a $1000 license of xamarin. What costs are associated with the individual platforms beyond what those marketplaces charge you.
Mono is a free, open source implementation of .NET that is “developed” by Xamarin. Xamarin.iOS and Xamarin.Android are the implementations of Mono for the respective platforms, but it also has full support for all platform specific things. These two are commercial software.
MonoGame uses C# and runs using Microsoft’s .NET on Windows and Windows Phone. It uses Mono on non-Microsoft platforms. If you want to develop for iOS or Android you will need to use the commercial versions of Mono (sadly the Starter version has support for Monogame).
When it comes to multiplatform support you can share almost all the code between the platforms. You will need a few ifdefs here and there because platform specific features like Live Tiles on Windows Phone, but otherwise you can reuse all your code.
If you want to start multiplatform development I recommend you to concentrate on one platform, then add others once you are at a certain level where you only have to implement platform specific features.