With about 6 years of modding and game development experience under my belt, I’ve been involved with my fair share of teams over the past 6 years, either on a regular basis or for once-off help.
One thing that has constantly struck me – especially in recent times – is how little care most teams take in their configuration management and bug tracking. I’ve seen everything from teams using FTP to organise their assets, all the way up to one team who had SubVerison, Mantis and Forums all integrated into a unified login. With configuration management systems and webspace so freely and cheaply available these days, why do teams have such poor infrastructure?
Myself and a friend from Pub Games recently gave a short lecture to a group of students undertaking their final year project at university, and one thing that we couldn’t stress enough is the importance of a teams infrastructure to their success. There are a multitude of tools available – Skype and Google Docs are personal favorites of mine, along with Redmine for issue tracking, and SubVersion for version tracking.
Skype and Google Docs are absolute gems for communication and documentation. Being able to voice chat with a small group of people all working on the same document greatly reduces the amount of time and effort put into documentation (which we all know is an unforutnate side effect of being a developer). Most teams use Skype fairly efficiently but documentation is usually poorly maintained and kept in a place that few team members can easily access.
There are many issue tracking systems available. Mantis is the perennial favorite for most teams, as its simple to use and only requires PHP and a MySQL database. Redmine is my preferred tool, but it requires Ruby on Rails to run, which might limit its audience somewhat. Whichever software you use for issue tracking, its useful to try and use it for tasks as well as bug reporting, and ensure that your whole team use them regularly. Its great to be able to easily classify bug reports, and delegate tasks so department leads don’t have to be around for task delegation all the time. Alot of this sort of software also includes milestone planners, Gantt charts, and support good integration of most CVS’s (SubVersion, Git, etc), so you can tie alot of your systems in together.
And then comes the CVS itself. While alot of programmers will advocate the use of decentralized CVS, I’ve found that many non-technically minded team members will struggle to come to terms with SubVersion, let alone the more complex Git. Alot of programmers might dislike SubVersion, but given that games involve alot of less technically minded people, the trade-off to make sure that all your team members are staying up to date and uploading their work is definitely worth it.
Its also worth learning branching and tagging for when you run your testing sessions. Tagging your test builds and giving testers that revision as a reference number for making bug reports is really useful for tracking down crashes and regressions.
This is only a really short explanation of some of the tools that are available, and I strongly believe that the lack of use of these tools is simply due to a lack of knowledge and a lack of time on the part of teams. CVS’s are worth using even for individual projects, as you get a version history of your own work. Even moreso, they become invaluable for even the simplest of group projects, to avoid the common ‘Lets just email everything to everyone’ syndrome that often plagues university subjects.
So do your research. What I’ve mentionedhere is just scratching the surface of the sort of tools you can use to manage your project. There are plenty of free SubVersion providers around, or alternatively you can check out hosts like Dreamhost.com who provide fairly affordable hosting for Web, SVN and include techs like Ruby on Rails. These resources make it cheap and easy for anyone to set up infrastructure to support the project you are working on. So take the time to learn these tools. It will be worth it in the long run.
This post is the start of me using unfunny images to convey a point.