Is MonoGame a good place to start with game development?

I am almost completely new to game design and programming, but I have a basic understanding of the workflow. This will be a hobby project, but I still plan to invest a lot of time into it. I have another career that is not related to computers. I have browsing the web for a place to start for weeks or months, there are so many options it seems.

Anyways, my goals at the moment are:

  1. Learn 2D game design.
  2. Learn programming, preferably a “real” programming language.
  3. Release a game that I would like to pay for myself, if somebody else made it.

I have however tried a few of the popular graphical game engines such as Unity, UE4, GameMaker and Godot. I didn’t really like Unity, and especially not the license fees. UE4 seems too complex for my needs. GameMaker was quit nice, however I don’t like the text editor and the fact that the scripting language is not so useful elsewhere. And when i watch some of the newer tutorials for GameMaker, it seems like many people aren’t using the level editor at all for some games. So what is the point with a game engine like that if everything is written in code anyways?

So here are my pros so far:

  1. Some of the games made with MonoGame are my style of games, and I think it is the main reason I found MonoGame.
  2. Visual Studio is the best editor i used so far.
  3. It uses a “real” programming language, and C# even seems like a good one to learn.
  4. Open source.
  5. Cross platform, including consoles (I love consoles, and don’t really care about mobile platforms).

Cons?

  1. Quite small community (and amount of available tutorials and resources?) However, the community seems very mature and helpful!
  2. I don’t really have a clue about mono, .NET and XNA, I barely know what they are.

To me it seems MonoGame is marketed towards people that previously worked with programming and XNA, and not so much beginners. But it also seems to fit my needs perfectly. Is it worth learning this framework from scratch today? Or will you recommend me to use another engine or framework?

2 Likes

.NET / Mono are the same or at least similar. They’re just switched for different platforms.
XNA / MonoGame are basically the same thing.

MonoGame is used by n00bieZ and NinjaZ, there are many tutorials for XNAandMonoGame and plenty of sample SDK’s at XNA.com I suggest GameStateManagement and Platformer Starter Kit.

You will be doing programming. This is a framework, not an engine. There are probably a few engines to look at based on XNA, but XNA.com should give you a basic engine. If you’d rather use a level editor or drag and drop game objects, you should go to Source, Unity, Unreal, Game Maker, etc.

1 Like

Well, if you are just starting out, I think monogame is great, since you start from scratch, but basic game creation is simple with Monogame and by the end of your first tutorials you understand the game programming aspect from all facets, unlike in Unity/Unreal/Gamemaker, where a lot of stuff is already given to you but you have limited control
For 2d games it’s imho superior.

The best thing about monogame for a beginner is probably that it’s basically XNA for all platforms. I dare say XNA was THE framework to go for indies last console generation and all XNA tutorials are valid for monogame as well.

That’s why if I look for an answer on google I usually add XNA to the search term since there is an almost unlimited amount of knowledge and tutorials for XNA.

Thanks for reply guys =)
I see, if the old XNA resources still are almost similar to MonoGame, I guess it will not be a problem to find information!

I guess more control means more work, but also better understanding. It is probably worth it in the long run.

If you want to learn 2D game design ( goal #1), don’t start with MonoGame. Get Unity or Unreal, where you can get lots of finished stuff. Both are for free.

1 Like

I recommend RB Whitakers tutorials. He has some tutorials on getting started with C# as well as XNA/MonoGame tuts. That and Riemers are some of the best tutorials out here for XNA/MonoGame. Recently Game from scratch did a tutorial series for MonoGame (first video is some MonoGame/XNA/Mono/Xamarin history that I found really interesting), but it was unfortunately discontinued due to lack of interest.

It will probably take a while to get up to speed since you’re just getting started programming, so if you want to dig into game design directly MonoGame might not be your best option. If you do learn programming and MonoGame, I think you’ll find it feels a lot more rewarding creating something than with a full fledged game engine.

Thanks for some nice tips! Maybe I will look into the C# book from RB Whitaker to begin with. I see it is quite new and has good reviews.

Monogame is essentially a open source cross-platform continuation of xna 4.0 for c# which was discontinued by microsoft that can run on either directx or open gl. That being the case 99%, of what applied there, can be applied here as well.

You can simply ask for help on these forums. Many of the guys from the xna forums are here.
You can also search the entire xbox live indie forums for just about any question you have.
There is years worth of questions and answers there.

As well as look at all the old content and download it you might have to tweek some of them a bit to get them to run in monogame but most of them should be copy and pasteable :slightly_smiling:

Content catalog which has downloadable xna example code

Xbox indie forums

Much of the above will work in monogame with minor adjustments.

Im not sure all reimers tutorials are made for reach or xna 4.0 i redid most of them long ago and actually pasted the code into his comments if its still there.
Im pretty sure i have them on my hd some were they were nice little tutorials.

Ah its still on my old one drive i found a link to it browsing thru the indie forum 4th post down.
http://xboxforums.create.msdn.com/forums/t/88470.aspx
That has the description of the changes i made to the tutorials, it would still need to be updated for monogame mostly the shader’s i would think.

For me, monogame is more something like “how can i do this effect, how can i display thousands of asteroids within a belt” etc, whereas i see game design as “WHEN will i put this godrays effect, how can i make the thousands of asteroids interesting for a player : harvest ? explode ? hide ?”
Game design is for me at a higher level than monogame’s.

I think a better title for this thread would have been game development.

The OP seems interested in programming as well as design.

Game design is more like theory (what can I do with asteroids) and not really something an engine or framework can help with.

MonoGame wouldn’t help much with design but it is a good place to start with game development if you are willing to put in the work, and I believe overall a better learning experience then going for a GUI game maker.

C# is a great language to learn, I have a full time job in development which is basically all C# so it definitely has real world potential.

Yes you are right, I am also equally interested in learning programming! I will give MonoGame a shot when i get the time. In the beginning i thought there was lack of information, but now it seems almost overwhelming! Hopefully this thread can help some other people too.

I also edited the title, for future readers :slightly_smiling:

@fossegutten

Check out MSDN’s C# tutorials. They are old, but still useful.

Also RB Whitaker’s Wiki is a good place to start.

This wiki book is another good place to start.

Another resource for learning C# and game development is books. Books such as Learn C# in One Day and Learn It Well and C# 5.0 All-in-One For Dummies for C#.

For game development you can also find some great books such as Game Development Essentials: An Introduction, Game Programming Patterns and Game Engine Architecture. You probably also want to get into Game Theory for designing the mechanics of a game.

Finally, introductory knowledge in certain fields such as Algorithms, Software Engineering, Computer Graphics, and Linear Algebra will probably be fundamental.

Baby steps in programing.
Terminology in game design.

The former is more difficult and time consuming then the later.
The later defines the order of the steps you must take to program your game.

Familiarize yourself with the terminology that applies to doing things specifically in making games and in general game design terminology, then learn how to program each thing one by one. Your knowledge and familiarity with terms and how to do specific things are your tools to build games and apps. You never stop learning doing this stuff.

There are many old sites and new sites, with tutorials on game techniques, you will learn that these require and teach algorithms and the basics for what they do and you can learn the fundamental ideas and problems they faced by just reading them.

You can learn alot by simply skimming thru them first and ignoring the code just learning about the techniques. Doing that first is a good idea, because they apply across all languages and frameworks, later you can ask how do i do what he did in that example, here, in monogame.
Though this site is old which was a good one too, these and more still apply today.
Each describes a technique to solve a problem and shows how to tackle it.
http://www.toymaker.info/Games/html/graphic-techniques.html

A site like the one shown below is renowned and also old, its dedicated to all aspects of game design and api programming, including monogame, algorithms, and programming languages, but its easy to get lost and sidetracked from information overload there.
http://www.gamedev.net/page/index.html
As you can see on the front page right now.
They have a monogame 2d lighting demo article showcased.