Good morning, I want to start learning game development… today there are several options, one very promoted platform is Unity, so I am in doubt if using Monogame or Unity to learn game programming?. What are th advantages of using Monogame over Unity, or Unity over Monogame. I want to point out that I am a Software Engineer with 19 years experience in industry, with experience in Web Systems, embedded systems and control systems, so in terms of Developing algorithms and learn languages for is not a problem, they are part of me.
I appreciate your guidance.
Monogame is a framework not an engine like Unity. You’ll have to do a bigger part yourself to build your own engine with it or make your game (for ex: space partitionning, or Ai, etc).
The benefit of this work is you’ll learn a lot more with Monogame than just dropping models into a window and adding components already pre-built without knowing but only the tip of the iceberg how it runs under the hood.
Its really hard to compare the two as they don’t even play on the same field.
Unity is a commercial game engine with its own editor and tool chain. With Unity you can build games with minimal or even zero programming skills (if you use only scripts from the asset store), but you have less freedom and all games in Unity have that “unity feel” to them. Unity is suitable for both 3d and 2d games, although the 2d part is not as good imo.
MonoGame is a framework in C# to develop games. As such it requires lots of programming skills but also comes with a total freedom. However, doing realistic 3D stuff in MonoGame is a lot of work (unlike 2d which is very easy).
- Super easy to learn and use.
- Asset store to get scripts and resources from.
- Lots of built-in tools, like models animator, etc.
- Provide realistic 3d rendering out of the box.
- You don’t have to worry about “dirty works” like integrating a physics engine, scripting, etc. as its all built-in. Also it comes with its own editor so for most games you don’t need to build levels editor.
- Actually free (Unity is “free” but have some fine prints you need to watch out for if you want to make commercial stuff).
- More freedom, games look and feel unique and there’s no “MonoGame feel” to them (unless you leave that cornflower blue background ).
- Will teach you more about gamedev, since it forces you to handle everything from physics to shaders.
- Better for 2D, no “3d junk” in the way (unity is built for 3D and even with 2D everything is in 3D space).
- If you like to do everything yourself, and less into using ready engines, MG is for you.
Both Unity and MonoGame are cross platform, but I’m not sure which of them have more options. And just to be clear its not that you can’t do 3D in MonoGame, there are lots of really cool 3D projects with it. Its just that to make “realistic” 3d with materials, shadows, etc. it takes much more ground works.
If you want to learn more, not worry about commercial licensing, focus on 2D and if you prefer more programming over editors, choose MonoGame.
If you’re less into programming and more into just making games, want realistic 3D and physics out of the box, and don’t mind using an existing engine, choose Unity.
But before you decide anything, I suggest you download both and try following some MG tutorials and playing with Unity. See what feels more right for you.