After learning C# I want to learn to make games "from scratch". Ultimately, I want to go a bit deeper and make games using OpenGL. Is XNA still a good starting point for learning game development or should I spend my time trying to tackle the enigma that is OpenGL? I guess the question is… Where should I start? lol
Date: 24 Jun 2014 12:35
Number of posts: 6
RSS: New posts
I'm by no means an expert, so you may want to wait to hear from RB or PiscesMike, but I'd recommend learning XNA first. If you haven't made a game from scratch before, I think it'd be a good idea to do so before trying to learn a separate piece of software for rendering your game. As for whether or not XNA is a good starting point for learning game development, I'd say definitely! It provides you with a lot of classes you wouldn't have otherwise that really help with game development, and it's both easy and fun to use. I'd certainly recommend it for that!
My personal preference is XNA as well, but it really depends on several things. First, my main focus is PC gaming. For that, I think, XNA works wonderfully. Microsoft pretty much guarantees backwards compatibility (of compiled executables anyways, you'd still have to create the app in an older IDE), so that means code I wrote 5 years ago still works today. Often when I am looking for examples, they are a little bit older (with the exception of RB's site, of course). That means I can go back, look at older code, get the idea and theory down, and update things in a new IDE with new syntax. That's kind of a moot point though since you should always use the newest IDE. It used to be Visual Studio cost an arm and a leg, but now Microsoft has made the express versions free. Secondly, XNA supports the PC, XBOX, XBOX 360, and windows phone. Although I have yet to create anything for the XBOX or XBOX 360, I did buy one for that purpose and will hopefully get something up on the XBOX live/indie game dev store front by the end of the year. (You can also simultaneously develop for the PC and XBOX with only minor code adjustments, so that's a bonus if your looking to release on multiple platforms.).
That being said, OpenGL does have some features XNA does not. It supports a wider set of platforms, including windows, MACOS's, Unix, and Linux, to name a few. More details can be found at: http://www.opengl.org/documentation/implementations/
That website is out of date by about 10 years if I'm reading it correctly, but it gives you an idea of where they were at that point with OpenGL… and you can see the supported platforms. I'm sure that list has only grown since that point. I personally haven't worked with OpenGL, so I can't comment on how easy/hard it is, or if the syntax seems to flow well.
So I guess the thing to figure out is what your target platform/market is going to be, and go from there. XNA is kind of a base for a lot of things like Monogame and Unity… both of which also support more platforms than basic XNA. Of course that adds to your code footprint and a little bit more of a learning curve to get things tweeked into the formats they like.
There also seems to be some problems getting Monogame set up and working correctly with the XNA content pipeline, but like I said, I haven't used it so I'm not as familiar with it as XNA. Anywho's hope that helps a little, and maybe we can get some input from RB.. he's been bogged down lately, but is making a great effort to be around on the site and in the chatroom! Good luck and happy coding!
Thanks for the responses guys! Your feedback is greatly appreciated. I've been coding off and on for years now, so I'm not entirely new to programming. I've made full games using game engines like GameMaker and Construct 2, but I've found actually coding them to be much more gratifying. Plus, you give up a bit of control when you use game engines and I don't like that. I've never coded a game with graphics without the use of a game engine so XNA seems like a great way to learn.
RB's site is a great resource. There's also some good stuff on youtube if you spend some time looking around for tutorials. If you ever have any questions, want to talk theory, or just hang out in general, feel free to pop into the chat room!
I did see a competition thread, I would be interested in entering those once I got better at XNA :)