So you’re gonna make a game. Whether you’re going it on your own or you have some buddies to help you out, here’s what you’re going to need to pick:
- A technology platform
- A configuration management tool
- Tools for communication and management (depending on project size)
- Some web hosting
I’ll go through each of these items below:
Choose your technology
The platform is the tools you will use to make your game. Your platform will determine what hardware and operating system are needed to play your game. You want to pick something that will suit your needs based on your target audience, your development schedule, and your technical requirements. Just because you can write games that run exclusively on Emacs doesn’t mean it’s necessarily a good idea!
Different platforms can help you and hinder you in each of the three aspects mentioned above. C++ may be the language that “real” game engines are written in, but it’s complex and very difficult to write your own engine from scratch. My brother started a solo game project two years ago using C++ and SDL, and today has only half of a menu system and tiling engine for a 2D isometric game. I can boast the same after just one month using C# and XNA game studio 3.1.
If you’ve got loads of time on your hands, you would be well served by making simple prototype games in many different platforms so you can understand their quirks and limitations. As you’ll find out from reading my blog, I favour Flash for browser games and XNA for simple-to-moderate PC and XBOX projects.
Configuration Management is key
This is the single most important tool you will use across ALL platforms of game development. Configuration management (or source code control) gives you the power to undo complicated changes to your code and to branch off in wild experiments while maintaining the stability of your trunk. It also lets multiple programmers contribute to the same code base, and if paired with some web hosting, can keep your source code safe and secure in the event that your computer blows up. Even for solo projects, you have huge benefits for trivial downsides.
Talk it up
Depending on the size of your project, you’ll have different needs. For solo and small projects, I recommend at minimum a wiki for recording decisions, discussions, thoughts, musings, specs, etc. With only a handful of team members, you can probably get by with just a wiki and some agile practices. As the team grows above 5 or 7 active members, some project management practices, a bug tracker, and a bulletin board might be necessary. Also, frequent meetings will be necessary, for which Skype is exceedingly useful.
How to be a good host
Pretty much everything in the last two sections can be achieved or enhanced with a good web hosting service. I’ve tried fiddling around with registering a domain, setting up your DNS, and hosting out of an old server box in my basement – undoubtedly this works well for some people – but I found it more trouble than it’s worth. Not only do you need to worry about your ISP’s policies against hosting, but you also have to worry about server administration, network security, and setting up all the various services you want to host.
I was pleasantly surprised when I found Dreamhost last year. Bundling the domain registration with their hosting is a bargain compared to GoDaddy, and most of the services I mentioned above are trivially installed using their web panel. The only thing to worry about is that since Dreamhost is a shared hosting service, all your stuff is on a server that’s shared with a bunch of other websites, meaning your domain might not be the fastest or able to handle a whole lot of traffic. But for a small independent game development project, it’s perfect.