Things you should already know

Any time you teach something to someone, you have to go on the assumption that they know certain things. If you're going to teach someone to write a novel, you have to assume that they speak English - or whatever language the novel is to be written in - and that they can spell. If you spend all your time teaching basic spelling there won't be any time to teach novel writting.

In that spirit, there are some things that you should really know before you start trying to program using XNA.

First, you need to know how to program in C# (pronounced SEE Sharp). If you've got a lot of experience programming in other languages like Java or C++, you may be able to get away with only a little knowledge of C#. If you're a new programmer, or have never programmed before, you should really learn C# before even thinking about going through these tutorials. At the very least, you are going to find the tutorials very difficult until you've read a C# book or two, cover to cover. Modifying the examples to work the way you want them to will be nearly impossible without a pretty solid understanding of C#. I won't be teaching C# on this site and will assume you know C# about as well as I do (I'm a mediocre C# programmer). There are several books on C# out there and there are probably classes at your local community college. If you want to try the tutorials without knowing C#, be my guest. But you're not going to get near as much out of them unless you actually know C# fairly well.

Second, you need to know basic algebra. You don't have to know a lot of algebra to do computer programming, but at least knowing how to add two variables together is an absolute must. I'm thinking that if you can pass a middle school algebra course, you're probably fine.

Third, you need to know geometry. I'm not talking anything complicated. But you need to at least have passed a middle school geometry class. I'm not going to take the time to explain what an angle is. And there's a good chance that I may not take the time to explain the rules of geometry to you, such as opposite angles are equal and all the angles in a triangle add up to 180 degrees.

Software You Have to Have Installed

Visual Studio 2010 - You absolutely must have Visual Studio 2010 installed on your machine. Previous versions will not cut it. The reason is that VS2010 is what we use to make our XNA programs. And only 2010 supports XNA version 4.0, which is what you have to use to make the tutorial examples work. This can be downloaded free from Microsoft.

XNA 4.0 - This is an add-on for Visual Studio 2010. I'm pretty certain it will not run under previous versions of Visual Studio. So, you pretty much have no choice but to install Visual Studio 2010 with XNA 4.0. The code in these tutorials will not run under previous versions of XNA due to backwards compatibility issues in XNA itself. XNA 4.0 is what we will be using for the examples. This can also be downloaded for free from Microsoft.

Visual Studio 2010 Service Packs - I'm not sure you absolutely have to have the Service Packs installed, but it's usually a good idea to have the latest Service Packs for any Microsoft Product that you use. The Service Packs fix various bugs that Microsoft has found in their software.

Photo Editing software - You can use any photo editing software that you like. I'm using Paint.Net for the examples and you might want to download it to be able to follow along in the tutorial. Otherwise, you can use whatever Photo editing software you like. PhotoShop is the industry standard, I believe, but it's not cheap. Paint.Net is free and does a pretty darn good job considering the price.

Modeling software - You will need some sort of modeling software in order to create 3D models. Maya is the industry standard, but I believe a single license is about $5,000 USD. So, I'm guessing most of you would rather buy a nice new car with that money than to go out and buy Maya. If you've got Maya, and know how to use it, more power to ya. I've actually used 3D Studio Max a lot myself and have had some semi-formal training in it. However, 3D Max is basically the same price as Maya once you install enough of the optional add on packs to get it up to the power level of Maya. I obviously can't expect you to go out and buy either of those programs. The good news is that there are some free, yet somehow incredibly good substitutes. I will use Google's Sketchup 8.0 at least a little bit. There is an add-on for it that allows you to use it to create .X model files for DirectX/XNA. It's free and it's about as easy to use as you're ever going to see a modeling program get. Plus, there are plenty of free tutorials and models on their website. However, I don't think it will be powerful enough to handle all of our modeling jobs, such as building people and animating them. So, I've chosen to make Blender be the primary software that we will be using to create models. Blender is also free and you can download free tutorials for it as well.

Always have anti-virus and anti-spyware software running before downloading anything from the Internet, including this site. I like McAffee. Anti-virus software is no good if you don't keep it updated and keep your copy of Windows updated.

Things that would be really helpful if you knew (but I won't insist that you know)

Trigonometry - I hate to break this to you but trigonometry is just unavoidable. XNA does a lot of the math for you, but the subject of trigonometry just comes up too often in game programming to get very far without knowing it pretty well. I'm going to let you "slide" on this one. I know not everyone out there is a trig "wiz". I've seen a lot of college students drop out of the class. So... I'm going to attempt to hold your hand on the subject of trigonometry. If you actually do know trig pretty well...GREAT! You'll be that much ahead of the game. Just realize a lot of people don't know trig and please have patience with me as I try to help them through the subject. This is a beginner level website, and as such I'm going to do everything I can to help people with trig as much as possible in these tutorials. I'm even considering trying to teach a trig class on this website, but - if I do - that would be way in the future. So for now, feel free to dig into the tutorials with no knowledge of trigonometry. But realize that you're going to have to learn it to be half way decent at programming 3D environments. You will use it all the time.

2D Game Programming - If you don't know how to program 2D games, you should stop now, go spend a few years making your own 2D games, and then come back. Seriously, you will learn so much from programming 2D games, especially in XNA, that will help you programming 3D that it's not even funny. I think a lot of the professional game programmers out there would probably tell you not to even think about programming 3D until you are really good at 2D game programming. They're probably right. But if you're like me, no amount of coaxing you to go back to 2D is going to be effective. Once I discovered that I could program 3D environments in XNA I pretty much turned my back on 2D game programming and have never looked back. I didn't learn half of what I should have learned about 2D programming before I came over to 3D, but there's no way you would get me to stop doing 3D programming. So, you've been warned: years of 2D programming will make learning 3D programming a whole lot easier. But I'm pretty much going to write these tutorials assuming that you haven't done much 2D game programming.

XNA 4.0 - I know that this website is about teaching XNA. But it's not about "teaching XNA". It's about teaching "3D programming in XNA". If you already know XNA from several years of 2D game programming you'll find it much easier to figure out 3D programming in XNA. I'm mostly going to assume that you've never programmed using XNA before, although I am going to assume that you know C# as well as I do, pretty much.






Free Software

This site's philosophy

I've decided to make it a rule to only use free software in creating these tutorials. The rule is, that if you can't get it for free, I shouldn't be making the tutorials with it. I know not everyone can purchase every piece of game development software in the world. (Maya is one piece of software that is used to create most professional games and a single license for it can run around $5,000 USD). It's just too much money for most people. So, I'm making it a point to use freely available software in all of the tutorials.

You are welcome to use whatever software gets the job done for you. The only software where you absolutely have to use the recommended software is Visual Studio 2010 and XNA 4.0 for these tutorials. XNA 3.0 will not work.



The Holodeck




Future Use