[You don't need to spend a cent to start making games. We've rounded up a list of professional-caliber tools and assets for would-be coders, artists, soundsmiths, game designers, and producers so you can build your portfolio without breaking the bank.]
Integrated Development Environments (IDEs)
Visual Studio Express
If you're building games for Windows, Windows Phone, or Xbox 360, you should be coding in Microsoft Visual Studio. The Express version of Visual Studio is available as a free download from Microsoft's web site and should be more than enough to get you started building your dream game in C++, C#, or even Visual Basic. Also, if you're working on a game in Visual Studio Express, you can take advantage of Microsoft's free game-specific toolset, XNA Game Studio (http://msdn.microsoft.com/en-us/library/bb200104.aspx), which includes several game templates to help you get started. Keep in mind, though, that XNA Game Studio support gets tricky once Windows 8 comes out.
Available for: Windows
If you want to make a game for an Apple platform (Mac OS or iOS), you'll be coding with Xcode. All you need to use Xcode is a Mac and a free Apple Developer account (free registration on the Xcode web site). Unlike Visual Studio Express, Xcode doesn't really have a game developer-friendly toolset like XNA, though the Apple Developer Library (https://developer. apple.com/resources) does have sample code that can help you get up to speed with things like drawing 2D/3D images to the screen or working with iOS Game Center.
Available for: Mac
Eclipse (Eclipse Foundation)
Available for: Windows, Mac, Linux
Flash is still a very popular platform for game development, and FlashDevelop is a very popular open-source IDE for Flash developers because of its speed and customizability (and that it's free, of course, compared to $700 for Adobe Flash Professional). Unlike Adobe Flash Professional, FlashDevelop is code-only; it lacks a user-friendly drag-and-drop interface. Fortunately, FlashDevelop is so popular that there are loads of easy tutorials for making Flash games out there (including this one on the Kongregate Flash game portal http://www.kongregate.com/games/Paltar/flashdevelop-tutorial). Once you're used to working with FlashDevelop, you can take advantage of gamespecific code libraries such as FlashPunk (http://flashpunk.net/) and Flixel (http://flixel.org/) to make games with help from some of the biggest Flash game devs out there.
Available for: Windows
Choosing Your Coding Tools
It's not always easy to figure out which programming tools you should use when starting a new project-but it's also not easy to change tools midproject once you've realized you've made a mistake. Here are a few tips on picking the right IDE and setting up source control for your game-to-be.
Picking a good IDE can help speed up coding a lot. The right IDE will streamline the way you write and compile code, and possibly even hook into other tools in the development pipeline.
Your IDE will be determined in part by the language you want to code in and the platform you're developing for. If you're using a Microsoft family of languages (C#, for instance), you'll want to use Microsoft's Visual Studio-Express is fine, though if you're still a student you should check and see if your school is part of the DreamSpark Premium program (formerly known as MSDN Academic Alliance), because you might be able to get Visual Studio Pro for free. For iOS/Mac development, you pretty much have to use a Mac with Xcode. For Java development, Eclipse is a widely used open-source IDE that is very refined. While Eclipse is largely known for its excellent Java support, it does work with other languages as well.
If you simply can't find the right IDE for your workflow, you might want to try going old-school and sticking to a text editor. VIM, Notepad++, and Emacs are all excellent text editors for writing code. They don't offer the same one-stop solution for coding that you get from an IDE, and they can take more effort to set up, but with the right editor you can create your own versatile, personalized coding workflow.
Next up is source control, which is an absolute necessity whether you're working alone or with a team. Most people use source control to manage multiperson projects where different programmers need to work on the same project simultaneously and merge their changes. However, solo developers can benefit from a good source-control program as well-it lets you keep backup snapshots of your program at various stages of development and revert to previous versions of the game in case something goes wrong. Working without source control is usually inviting some kind of disaster.
There are lots of different source control programs that exist. Subversion (http://subversion.apache.org/) is a good one, and I often recommend it to people without much sourcecontrol experience. Tortoise SVN (http://www.tortoisesvn.net/) is an excellent SVN client for Windows that makes using SVN a lot less intimidating for newcomers. For OSX, XCode has built-in SVN support that's pretty good, too. Just make sure you have something in place before you start any serious coding!