Advertisement

Am I wasting my time with this

Started by February 19, 2015 04:31 PM
9 comments, last by cclements1384 9 years, 10 months ago

I'm a fairly competent C# programmer (Long term hobbiest) looking to move into games, 2D initially till I get my feet wet and then likely 3D. Looking at the engines/DevEnv's available I seem to have the choice of either Monogame or Unity. I was initially set on using Monogame but the deeper I research this it appears I'm wasting my time, the website never seems to be updated, theres not an aweful lot of resources or books on the subject...It just generally appears to be completely dead and any feedback just seems to be "use the XNA stuff". Unity on the other hand seems to be where its at but looks like I'm going to be spending more time learning "the Unity way" rather than how to develop games.

My question is this, do I stick with mono; am I wrong about Unity; or do I take the opportunity now and learn C++ before I start, thus opening myself up to a whole world of "really useful engines - The Fat Controller 1992"

I would hardly consider the update frequency of MonoGame's site to be that serious of tell for anything. Rather, look instead at the update frequency of the project itself. MonoGame is far more actively developed and supported than XNA (XNA is end-of-life'd, so I'm not sure why anybody would suggest XNA over MonoGame unless you desperately wanted to get onto the 360, or as a suggestion to only use XNA's content pipeline, because MonoGame's variant is still young).

Further, there's lots of resources available for getting help with MonoGame: their community, this community, StackExchange, et cetera. Books... sure, maybe less so, but books on specific APIs are usually a huge waste of money anyhow.

I don't think you'll waste your time using MonoGame.

Unity is another good option, but you're correct that you will be learning to do things largely the "Unity way" which may not transfer elsewhere. And, more importantly, Unity will be providing you a higher-level framework to work within. This may or may not be important to you.

I think you would be wasting your time abandoning the language you already know well for something like C++, which is difficult to learn, far more tedious in many ways to work with (especially compared to C#, and especially when you don't know C++ well) and is riddled with libraries and frameworks that do have all the original issues you described anyway.

Advertisement

I've never used Monogame, but the Wikipedia page has the last stable release at 10 months ago. Is it a waste of time to learn to make games with aging technology? That depends. If you are trying to publish a game, you need to reach the current platforms. If your tool of choice can do that, then use it.

If you are trying to learn to make games, then just pick something and try it out. Because guess what? Whatever you learn on will be old someday. I learned with C++ and DirectX 7. I fought with OpenGL 1.x and MFC, Visual Studio 6.0, and a whole bunch of APIs that no one uses anymore. Was that a waste of time? No way. I learned how to program, make games, and understand 3D graphics from the ground up.

The reason everyone uses Unity is that it's free for small groups, and it can deploy to all the current platforms with a small amount of effort. Yes, you have to learn the Unity way. It doesn't take long. I went through the tutorial videos in 2 weeks and made a tetris clone in a weekend. But that's because I've already fought with other stuff in the past. The first one is the hardest.

If you want to learn to do everything yourself, pick something really low-level, like SDL. If you want to make some games, Unity is fine.

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532

You could also just use OpenGL bindings directly, and do your 2D stuff with that. Have a look at something like OpenTK. Using OpenGL directly will take a bit of extra effort at first, but it's knowledge that'll serve you well in the future, no matter what language or engine or platform you end up working with. It'll also let you write 2D games at first, and then add effects and 3D elements to them without having to start completely over.

If you decide to go for MonoGame, you might want to consider to actually use a fork called FNA. When I last worked with MonoGame I used the 3.2 release from the website and some features of the XNA API (e.g. the VideoPlayer) were unsupported on Windows. So far I haven't experienced any missing features in FNA.
I hear what your all saying, I just dont want to learn something thats going to die in 6 months as I worry I'll find an unpassable bug that never gets fixed cause the devs have lost interest. Monogame worries me that if you look back the site was updated all the time, now however it seems on the face of it that its being neglected and I'm making the assumption that people are loosing interest in it. Unity looks all spangled and hip but also looks like you're learning thier way (Like early IBM)
I just want something I can make kick ass games on, thats not going to bork out in 6 months and is not going to drown me in either end user written plugins or so much crap I could spend a life time looking at a features list.
Sounds like alot to ask but being new to this im trying not to make it any harder than it needs to be, if that makes any sense
Advertisement

It might come down to whether you prefer to start from code at a somewhat lower level, or if you'd like more of the common stuff done for you and some (but not all) of it exposed through WYSIWYG-style editors -- XNA/MonoGame/FNA for the former, Unity for the latter. There's also Unreal Engine that's sort of a mix of both (as I understand), and there are other things like Cocoas-2D that are similar to an XNA-styled library. Or SharpDX/SlimDX for a very thin wrapper over graphics and multimedia capabilities.

I don't think any of these options are bad or represent a likelihood of wasting time. Whether or not any of these options are actively developed is somewhat of a moot point, so long as you can continue to publish your games and people can continue to run them. You might not be able to get a bug fixed, and that's a valid concern, but these things have been used in enough software that they must not be riddled.

I'm still getting to grips with Unity myself, and you do need to learn "the Unity way" in some sense, but on the other hand--and even though Unity provides a lot--you'll still find yourself pretty quickly limited with what Unity can do with the totally out-of-the-box experience, and you'll probably find that you need to delve into writing scripts and editor plugins sooner than not, or buy them from the asset store if you're so inclined -- just as one example, I'm working on a tile-based sprite game in Unity, and the tools and workflow that Unity offers, at least any that I've found, are not suited to the task terribly well, so essentially the very first thing I had to do after finding out how poorly suited Unity was, was to start writing a tilemap-loading script for Unity Engine and a tilemap editor plugin for Unity Editor -- but the experience of doing that has been relatively smooth: derive from a specific class, implement some methods, know a bit about when and why Unity calls those methods, learn how to use Unity's UI layout and control classes, and a few other little tricks found quickly via google -- My tilemap editor something like 350 lines of code, and while its nothing fancy, does a lot more than any 350 lines of code has any right doing. If you were doing something more closely-aligned to what Unity does well, like a 3D game or flash-style 2D game, you probably won't have to deal with editor plugins so soon, and do less scripting overall.

throw table_exception("(? ???)? ? ???");


I just dont want to learn something thats going to die in 6 months as I worry I'll find an unpassable bug that never gets fixed cause the devs have lost interest.

This is exactly how I was left feeling by Microsoft when they abandoned xna. As monogame is its spiritual successor and xna was designed to target windows 7, windows phone 7 and xbox 360 it's platforms have reached obsolescence and due to this monogame has diversified onto other patforms such as android and iPhone where xna itself would never have gone.

On that note though personally I left the platform behind entirely and moved on to DirectX 11 and using C++ instead which I was more comfortable with than C#.

Good luck in whatever choice you make!

If you really want to learn, like Glass_Knife said in more words or less..you learn basic concepts...and guess what..those don't have an expiration date. Unity, Mono, XNA...are just abstractions..so if you want to make games, use the tool you are most comfortable with. If you want to learn, then start with the basics and work your way up..by then your choice of tool to express your ideas would have become simpler..

This might not be the best advice considering that you want to get working fast, but although it took me almost an entire year to start writing stuff I was satisfied with, since I didn't feel that any of the available tools suited what I wanted I ended up working on my own 2d and 3d engines. I won't say I suggest you do the same, but if you're just looking to get an understanding of how it all works at the lowest level, it's probably a nice option. Not to mention learning to manage large projects, keeping track of performance, understanding the details of different algorithms to determine what you need etc. I have a fairly strong background in C# as well but it still took me a while to start doing all those things in a clean manner (I restarted from scratch a few times simply because my code wasn't clean enough to my liking)

This topic is closed to new replies.

Advertisement