I am currently thinking about porting a XNA game to other platforms using MonoGame. Do I understand this correctly that I can expect the game to render faster even under Windows 7 due to the use of SharpDX?
3 Answers
It's impossible to tell what performs better - as they are both different implementations of a given API set on all different platforms. If you are talking just strictly Windows, there's a few benchmarks you could run by but from personal experience I can tell you that MonoGame has some issues on certain features that will cause slow downs - but overall performance is good.
-
1\$\begingroup\$ What are those features that - in your experience - cause slowdowns? \$\endgroup\$ Commented Feb 9, 2013 at 1:15
-
\$\begingroup\$ I had some issues with certain platforms - like Android and iOS which suffer from some garbage collection issues and the like in some cases. (I had a real major issue with particle systems...) what platform are you interested in on it? \$\endgroup\$ Commented Feb 9, 2013 at 3:41
-
\$\begingroup\$ I am targeting Windows (XP, Vista, 7, 8 Metro), OSX and Linux for now. I think I would need major changes to get the game running on Phones or current Tablets, so I am focussing on workstations. \$\endgroup\$ Commented Feb 9, 2013 at 12:47
If your game is fast with XNA it will be as fast with MonoGame. When I did a conversion of my game with a help of MonoGame, the conversion itself (+tests) helped to find places to improve the speed and eliminate some wasteful cycles. You can expect the final size of your app to be 3-4 times bigger than with XNA.
-
\$\begingroup\$ Did you port your app to Windows 7 or Windows 8 ? \$\endgroup\$ Commented Feb 9, 2013 at 2:15
-
2\$\begingroup\$ 3-4 times bigger? Due to code or the extra external references? \$\endgroup\$– Jim BuckCommented May 10, 2013 at 14:10
Most of the performance issues I have encountered while using MonoGame are related to unnecessary garbage generation. A lot of these are fixed from time to time but I wouldn't rely on MonoGame to be more performant than XNA as of yet.
It is still valid that if you are targeting any of the platforms that XNA supports and do not require the use of DX11 features, you SHOULD stick to XNA. For any other platform, if you run into performance problems using MonoGame, profile your game and try to find a workaround for the part that is causing slowdowns. Even better, get into MonoGame source yourself, fix whatever problems you find and submit a pull request. This way everyone wins!