Friday, 8 May 2009

Tools, Tools, Tools

Practical games development isn't just a case of sitting down with STOS, or whatever you modern kids call it, and banging out an animation of a walking penis one afternoon, oh no. You need tools and support, or after a few weeks work, your pride and joy will hit a wall, which in this case would be painful. No, you can get away without a proper, structured approach ('hacking', as we call it) for a while, but you'll soon find that walking penis bites you in the ass.

You will need the following:

A Compiler - Well duh. Actually, you don't need a compiler as such, just some way of turning your idea into a running game. However as I AM HARDCORE, we're looking at some kind of C++ compiler. I'm going for the excellent, and free Microsoft Visual C++ 2008 Express Edition which is a full IDE, and only trivially different from the paid-for version. I'm also familiar with it, having used it extensively just a few years ago, so very little learning curve there. You have to register your copy with Microsoft, but hey! It's genuinely great.

Why am I using C++ rather than some modern-fangled alternative, such as Flash or Multimedia Fusion, C# or Java? Well, I'm avoiding game makers such as Flash and MMF, as I like to have everything in a nice set of text files where I can see it, thank you very much. These systems with boxes and lines are all very well providing you want to do what they do, don't mind being mouse-centred, and (usually) don't want to come back and modify it too much later on (ie they're good for creation, not so hot on editing and debugging).

C# and Java are both fine languages that I've used in the past, but C++ comes out the winner due to, well, being the winner. It's the most globally popular language and so comes with a whole supporting range of tools from profilers to static code checkers such as Lint. It also has a range of excellent supporting SDKs and libraries that I can use to save me time (more on that later), so although it's far from perfect it's powerful, and has the most support from the outside world. It wins.

An Editor
Editor and compiler are of course potentially separate things and a powerful editor is a thing of joy. I'd prefer to use the excellent and powerful Slickedit editor, which I'm familiar with from work, but the damn thing costs £200. If you're doing commercial development, this is a drop in the ocean and it'll save you at least £200 of time easily. However, this is spare time development, and I don't have £200, so I shall stick with the perfectly adequate editor in Visual C++, and remap the keyboard shortcuts to match the ones programmed into my fingers.

Source Control - Yes, even if there's one of you working on one machine you will still from a decent source control system - it stops you having to remember to keep backups, and allows you to easily throw away a disasterous session of work if needs be. If there is more that one of you its even better, as it allows you both to work on the same project at the same time without ballsing everything up.

I'm using Perforce as it's good, quick, I'm familiar with it and a two user licence is free.
Other respectable options I've used are the free CVS and Subversion, and the paid-for Alienbrain, but these all have niggles that make Perforce the winner.

Alienbrain costs serious money, so that's out of the window straight away. CVS and Subversion are both free, but require more setup and administration (not a lot, but some) to get them working, so it boils down very simply to Perforce having a better installer. You will of course need the Perforce server running somewhere, and the Perforce client (P4Win, in my case) to check in and out.

Bug Tracking
Using your memory and little bits of paper don't cut it with this one. Without this, bugs won't get remembered, and so won't get fixed. In the past I've used Bugzilla, Test-Track and an Access spreadsheet I wrote myself for tracking, but none of these quite fit the bill. Similar thinking to source control, as above. Test-Track costs money, Bugzilla is free but needs setup and administration. An Access database kept under source control could work, but I don't have Access and OpenOffice's copycat database seems to be appallingly slow and crash prone. I've gone with Fogbugz trial on the same terms as Perforce (up to two users free). I've no previous experience with it, but it's remotely administered (no work for me) and I've heard a lot about it via the excellent Joel on Software Blog.

SDKs
What, you write software in a vacuum? I've got the DirectX SDK as I can't imagine it's not going to be used. I've also cast around for helpful SDKs, of which more later.

Cygwin
Damn useful as it lets me run all the gnu utilities and create my own useful bash scripts. That should allow me to run automatic test and release builds, set up a robo-tester and more mundane tasks like parsing data files easily.

Ticked the 'make' option in the 'develop' section, and bunged gcc, gdb, automake, autoconf and (what the hell) Subversion in for kicks.

No comments:

Post a Comment