My 3 year experience with MonoGame

Really?! To be honest I’m more concerned that future readers may come across MonoGame at all, I personally wish I saw this thread 3 years ago. Give Unity to one beginner and MonoGame to another, come back tomorrow and see who has a basic prototype going and who is still searching for a solution to the namespace conflict of Microsoft.XNA. Come back a year later and see who has a few games already released and who is still building a GUI system from scratch. Case in point, I cancelled the release of my game a few days after finishing it, and now am switching to a new platform where none of the engine code that took me 1.5 years to develop or the game that took me 6 months to make is going to transfer over, only the game idea. That is how desperate my situation with MonoGame has become. But your right, I am someone with a lop-sided experience with the technologies. Lets go and ask someone more established in the mobile industry, how about Rovio? did they use Unity or MonoGame to make Bad Piggies? How about the developers of Threes? Monument Valley? Hitman GO? Assassin’s Creed? all these great games that millions of people have been enjoying across all sorts of devices without complaints about stutters/lag or crashes. But lets assume that the lag and stutters are my fault(not), well then it seems that after years of development and a software engineering degree I still cant manage to unlock the secret mysteries of MonoGame. Meanwhile some other hobbyist with little experience is able to push out a game through Unity in a weekend that has no lag or stutter what so ever, you can check it yourself with the tons of Unity prototypes that get reviewed on YouTube.
If you are really concerned about new users being misinformed or misled (I am an example of one), then you should ask for MonoGame to be either shutdown entirely until its developers bring it close to perfection, or as an collaborative project, have all its known flaws be prominently displayed to potential new users on the main page, otherwise months or years might get wasted by the time they figure out these flaws themselves (me again). For example, I wont release my engine code which took me 1.5 years to make, because I am not sure that it is the best it can be, and I dont want to have any users regret using it. If I were ever to release it as open source, I will clearly state that its alpha, what worries me about its implementation and other strong warnings. The software world would be much more efficient if everyone was upfront about their products.

If you are really concerned about new users being misinformed or misled (I am an example of one), then you should ask for MonoGame to be either shutdown entirely until its developers bring it close to perfection, or as an collaborative project, have all its known flaws be prominently displayed to potential new users on the main page, otherwise months or years might get wasted by the time they figure out these flaws themselves (me again). For example, I wont release my engine code which took me 1.5 years to make, because I am not sure that it is the best it can be, and I dont want to have any users regret using it. If I were ever to release it as open source, I will clearly state that its alpha, what worries me about its implementation and other strong warnings. The software world would be much more efficient if everyone was upfront about their products.

Go in with your eyes wide open about Unity too though; It’s not some panacea. If MonoGame has to be shut down due to falling short of perfection Unity has to be too. And they aren’t exactly ‘shouting from the rooftops’ about their failings either…

A common refrain I hear about it is that it’s great for prototyping, but less great for anything beyond that. Anything to do with GameObjects or MonoBehaviours in particular can be very sloow.

Unity is easy to get started with but there’s still a learning curve and tricky pitfalls to avoid if you want to minimize the ‘lag and stutter’ (heavy GC) that can befall you with any engine. Still, it’s a common enough complaint that there’s plenty of blogs entries written about it - each offering their various nuggets of wisdom and advice.

… but this is also a liability. I recently came across a post on an indie game promotion Facebook group that I’m a member of for a guy’s game in Unity. Basically, he’d downloaded the 3D runner starter kit from the asset store, slapped his name on it and pushed it to the marketplaces. He hadn’t even bothered reskinning it!

So yes, as the OP points out, a hobbyist with little experience can push out a game through Unity in a weekend - but is this a good thing? The price we all pay is discoverability - with stores inundated with shovelware, such as match-3s and Flappy clones, potentially great games are often drowned out by this flood of quickly produced, unoriginal crap that’s just looking to make a quick buck.

Yes exactly. MonoGame never promised to be anything more than an open source implementation of XNA. It does that reasonably well, if that’s what you’re after. It is kinda ridiculous to compare Unity (Apples) with MonoGame (Oranges) anyway.

So yes, as the OP points out, a hobbyist with little experience can push out a game through Unity in a weekend - but is this a good thing?

  • Is it a good thing that anyone with an opinion can create a blog instead of having to get hired by a newspaper with all their worked filtered through an editor?
  • Is it a good thing that anyone with a talent (or not) can record a song and publish it on Youtube rather than being at the mercy of a publicist and their cd distribution chain?
  • Is it a good thing that anyone with a talent (or not) can write an e-book and self-publish on Amazon rather than having to find a publisher to fund print-runs and distribute through bookshops?

I’d argue it’s unashamedly a good thing that barriers everywhere are coming down for creative people. However, marketing has always been important - and that fact that barriers are virtually non-existent now does not change that fact; If anything it’s more important than ever. Creative people hate to think that publicity is an important part of making money from a game. The ‘business’ side of things feels ‘dirty’ somehow - like that the quality of our product should speak for itself - but that’s rarely true. (There’s also the possibility that the product that we think is original and brilliant actually isn’t quite as great as we think it is…)

Unfortunately, the very first question you should ask yourself when embarking on a project which you actually intend to sell is ‘how do I monetize this’. If you can’t think of how you can, then you should either accept the fact you’re leaving it all up to chance, or realize that you’re embarking on the project for the pure love of it.

Now there’s nothing wrong with that. I’ve embarked on a lot of projects just for the love of it. But I’ve reached the point in my life that’s not enough; I need a ‘return on my investment’. That doesn’t mean compromising on your principles and making an exploitative ‘freemium’ game which is anything but, but it does mean identifying a market and how you’ll manage to reach them.

If you do your research up front and have a well-identified plan of attack - or hire someone to do that for you - then the 100th clone of Flappy Bird released this month will not feel like a threat to you.

2 Likes

Just to add: I guess for me it’s the difference in mindset between someone who writes games as a hobby and someone who writes games as their livelihood.

For me, MonoGame is still firmly in the ‘hobbyist’ sector of the market.

I wouldn’t put Unity all the way over to the ‘pro’ side of the market though. There are better choices out there for AAA studios with six-figure budgets. But I do think it’s a decent choice for a solo-developer on a shoestring budget who has a dream of delivering a game that aspires to AAA quality. I don’t think even the staunchest advocate would believe that MG offers that right now (for 3D anyhow; for 2D you can make virtually anything work ^^).

After reading through this thread I’m starting to think that I should take what I’ve done to “roll my own” and combine it with MonoGame to create a kind of MonoGame extension project so to speak. One thing that bothers me, and seems to bother other people is that you have to roll your own everything when using a framework like MonoGame.

Sure, we can always choose Unity instead, there’s nothing wrong with that. But for those that prefer using frameworks there’s another option, we can help each other by writing libraries for all that other stuff (GUI, animation, map loading, etc).

I’m going to have a go at rebuilding my Astrid framework as a MonoGame extension tonight and see how it goes.

1 Like

Yes. As well as polishing lower-level stuff to squeeze out every possible bit of performance, that definitely has to be the direction a ‘maturing’ MG heads in the years to come.

If Astrid is the future then great. But imo MG does needs to ‘officially partner’ with some higher-level framework or other to free everyone from having to forever replicate a whole lot of boiler-plate code. Could be closed-source and for-profit even! I mean, Xamarin being those things doesn’t mean MG has to eschew that on principle.

I suspect a whole lot of people have ported over the various pretty good XNA libraries out there - but by never publicly releasing their work noone is ever able to build on it and take it forwards; They doom others to forever repeat it…

I’ve ported a couple of XNA libraries to MonoGame before. Turns out it’s actually pretty difficult to release them for everyone because of some inherent issues in MonoGame’s design. You usually have to re-build MonoGame from source to get things to work which means you’re running a custom build; and when you do, it’s even more difficult to target all the platforms. That’s one of the reasons I created Astrid in the first place.

For the record, there is actually a solution to the above problem that involves splitting out some core classes (e.g. Vector2, Vector3, Color, etc) into a Portable Class Library (PCL). Unfortunately, when I brought this up with the MonoGame team I got a lot of resistance to the idea. I have some hope that Astrid will help knock down some of those barriers, either by convincing the MonoGame team it’s a good idea or providing an alternative solution.

I agree with this in principle, but it’s not going to happen by magic. Here in the real world we have to deal with what we’ve got right now and if we want something to change, take action as a community. Simply complaining about it isn’t going to solve anything.

For example, you’ve identified a specific problem “to free everyone from having to forever replicate a whole lot of boiler-plate code”. How would you go about solving that problem? Create and release a bolier-plate project perhaps? Fork MonoGame and extend it? I dunno, I’m just spitballing here.

I agree with this in principle, but it’s not going to happen by magic. Here in the real world we have to deal with what we’ve got right now and if we want something to change, take action as a community. Simply complaining about it isn’t going to solve anything.

This is one of the main problems with MG being an open-source endeavor with no income. Mono was good but Xamarin took things to the next level - and a big part of that was making the choice to monetize it - meaning people could be paid to work on it full-time indefinitely.

For example, you’ve identified a specific problem “to free everyone from having to forever replicate a whole lot of boiler-plate code”. How would you go about solving that problem? Create and release a bolier-plate project perhaps? Fork MonoGame and extend it? I dunno, I’m just spitballing here.

Definitely don’t start forking it. Would make fixes and improvements even slower to bubble up - and splitting the community would likely be death.

Honestly, I don’t really have any answers - which is partly why I am not pinning my future to MG.

Another big issue is that the competition is not standing still: MG is a late entry to the market - and by the time the wider MG ‘ecosystem’ is polished and feature-rich to the extent that the market leaders are right now, they will have moved the standards on yet again. (Again, see the blog link about how Unity is slowly extricating itself from its old version of Mono).

For those that are interested I spent a couple of hours getting Astrid working with MonoGame tonight. It is a bit of a quick hack job, but proves the concept. The sprite renderer is working and it can load scenes from scene files.

The full source code can be found on github here:

Of particular interest is how little code is needed to load a scene. If I was to start officially supporting MonoGame this is how it might work to load the attached screenshot and have a working GUI in your game.

        // Load scene file and wire up button event handlers
        var scene = _engine.LoadScene("Scene1.scene");
        
        var button = scene.GetComponent<GuiButton>("PlayButton");
        button.IsEnabled = true;
        button.Pressed += PlayButton_Pressed;

        var toggle = scene.GetComponent<GuiToggleButton>("SoundToggle");
        toggle.CheckChanged += ToggleOnCheckChanged;

1 Like

It was mentioned earlier but you may like to check out the Java framework libGDX. It’s very similar to MonoGame and works really well on almost all platforms. While Java may not be the most attractive language, I think BadLogicGames did a really good job of making a high performance, cross platform high level game framework that even contains it’s own physics library! (a Java port of the C++ Box2D)

I started Monsters of War in January 2012, after many years of modding for the Source and Gold Source engines from Valve. I said to myself, I don’t have a million dollars. And Moneyless Modding™ has gotten me no where. It’s going to take me about five years to have something as ancient looking as a Super Nintendo game…

Well, here we are, four years later! And at least one more to go! Basically, no matter what route you take, it will take an eternity, it will take effort, and it will definitely take education. The end result will always be an iteration.

First off: You can put XNA/MonoGame inside of Unity. Go to ModDB.com/Engines/XNA/ and there should be something about that in the comments (Although nobody updated it as far as I’m aware)

Second: You’re still using XNA. Just go to XNA.com and download all of their starter kits. Literally download every single one. I wish I had done this when I first started.

Third: You’re actually using C# / .NET Like, literally 99% of the time. All XNA/MonoGame did was add a few code words, like, Texture, Sound, Model, Shader. Everybody wants to start out with the fun stuff and try and hit the ground running… But at some point you’ll have to go back to the basics.

Fourth: Make some static classes. Wow, did that take me years to figure out…

Fifth: There are plenty of programming languages, frameworks, engines (Even on top of XNA/MonoGame)… But C# is nice. XNA/MonoGame is nice. Your own engine on top of everything… It’s amazing how far you’ll see once you realize you’re standing on the shoulders of giants… O_o

Sixth… Welcome to development HeII

Seventh: At the very least you can go work as a programmer at some point.

Eighth: But you came to XNA/MonoGame to be an entrepreneur! A game designer! A programmer!

Ninth: You won’t get any girlz until you finish at least one game… If not a few games… :wink:

Tenth: If you want the money, remember the modders, they’ll do all the work for free, and you’ll make the millions!

See you n00bieZ and NinjaZ in my video game come October!

2 Likes

Libgdx is faster than Monogame BTW

And assembly language is faster then c++ but you don’t see me using it anymore.

1 Like

LibGDX has the potential to be faster than MonoGame. As it is a Java framework, it’s performance doesn’t depend on the OS version, but the JVM version. This means that a MonoGame application will run faster on Windows 10 than Windows 7, but a Java application will run the same on both. So the user who tested it might have been using an old OS but the latest JVM, meaning that LibGDX would have an advantage. But I agree, LibGDX is AMAZING!

Sorry for necrobumping.
But I wonder if OP was able to launch it’s game?
What platform did he use in the end?
Seems like LibGDX is now on maintenance mode for several years now.