Saturday, October 1, 2011

Using AppHub and MSDN as Resources for XNA Game Development


The internet is one of the greatest resources for learning how to code. Do a quick Google search for a specific topic and you'll most likely find five or more answers on StackOverflow, a dozen blogs that walk you through with code and explanations, and most certainly a forum post with plain text code pasted into the question with no answers following it. It's truly amazing how much time people spend trying to help others. However, the one big pitfall is the sheer amount of resources you can find on the internet. It is overwhelming.

For example, when I do a Google search for "pixel shaders in XNA," I get About 141,000 results (0.29 seconds). Wow! No purchasing any book, no sending an email to a professor asking for help, etc. I can just click on one of the ten links on the first page of Google and pray it's what I need. If it's not, then try another one. The big problem is that code becomes outdated very quickly. The weight of a blog post or video in search engines wasn't weighted on date published until recently. That's also assuming there is a more recent version available somewhere on the web as well.

If someone wrote a blog post on pixel shaders in XNA 3.x, what you're going to get out of that blog post is much less than a post on XNA 4.0 (assuming that's what you're using). My point is, it's overwhelming when you Google for solutions, especially when it's programming related. It might be outdated, it might not fit into your project, or the sample code might be flatout wrong.

My suggestion to fellow coders and specifically people working with XNA is to use the sources that the creator of that framework or tool have published. Whether it's an API, wiki, or just code examples - the chances are much higher that it will work, follow best practices, and be up to date.

When XNA 4.0 was released, Microsoft went back and updated all of their old 3.x projects with 4.0 solutions and code. This means that if you're using XNA 4.0, anything on the Microsoft website will be of use and work with your current configuration. So now things are boiled down to the resources from the people who put whatever you're using out there. But it's still overwhelming!

In Microsoft's AppHub content catalog, there are 185 results for their education section. Where do you even start? There's sections for Windows Phone 7 development, XNA, Windows PC, and all this new stuff about Mangos?! Well there is hope for you yet - deep within the menus, content, and tutorials there are some awesome resources for XNA developers.

If you're new to XNA, I would reccomend checking out their Game Development Tutorial. It will walk you through starting a game from scratch to having animations, bullets, and enemies. There are even videos, source code zips, and in-depth explanations. These are great for getting the hang of XNA and learning the basics.

If you're not so new to XNA, I would reccomend checking out the XNA Game Studio 4.0 library. It covers a ton of topics, ranging from packaging and distributing your game to the content pipeline already set up in XNA.

If you're looking for something specific, then search the content catalog or narrow your results down based upon the type of content, dev area, or platform.

If you're looking for the nitty-gritty of XNA, the Framework Class Library, then this will be a huge help. Take your time, read through what interests you, and search for the things you can't directly find.

While some people understand how to go through an API, others may be scared to go through such a large amount of information. If you're someone who is scared, then take your time and learn to love it. Well-documented APIs are insanely helpful to programmers.

Hopefully this was a help to get started with XNA, finding help, and learning. While there are tons of great resources out on other places in the web, MSDN and AppHub aren't bad starting places.

Good luck, and feel free to ask any questions!

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.