Saturday, October 10, 2009

Setup for Succes

After nearly a decade of attempting to develop games, I have learned a few valuable lessons. Some of them are extremely basic, yet crucial, for anyone wanting to develop a video game, while some are more technical and for the more serious developer. Today I want to go over one a more technical lesson I have learned fairly recently.

From the very beginning, I was always a part of some game group project. Communication was hardly ever a problem; however, collaboration was almost always a problem. There was a continuous mess of making sure that everyone had the up-to-date map file, scripts ...ect. The problem grew exponentially with the size of the group. Anyone who has done a project in a group like this will know exactly what I am talking about. There is a solution to this though!

Source Control
(Subversion)
Source control is the key. I am sure that many developers have heard of this, but I imagine the more casual developer has not. I highly recommend this for anyone working on a project in a group. Subversion, aka SVN, is the most popular source control and is extremely useful. With it you can not only have a history of your revisions, but also be able to keep everything in one place, on the server, so that way it is easy for everyone to keep their project up-to-date.

I would write a tutorial on how to get this setup; however, there are lots of great tutorials out there that you can easily find via a google search. I know setting up a SVN server on Windows can be a little tricky if you don't know what you're doing. Ask if you have any questions and if enough people ask then I can write another post with some details.

Trac
Source control is a giant leap in setting up your project for success; however, it is only the start. Next on the list is something that will cover a gambit of potential hurdles. "Trac is an enhanced wiki and issue tracking system for software development projects." I am sure everyone has heard of a wiki before. They are immensely useful for documenting anything, even games that are being developed. I know I have seen several game projects that use a forum for keeping track of all of the game's details: storyline, characters, monsters, skills ...ect. With a wiki it is very simple to keep all of this data very organized and easily accessible by anyone on the team.

As mentioned, along with the wiki is an "issue tracking system" basically this system allows you to create "tickets" which can represent anything you want. Most commonly this is used for features and bugs. With a ticket created, lets say for a bug, you can assign it to someone and on that ticket have a discussion as well as keep track of the progress. When that bug is closed you can close the ticket. This goes along with Milestones you can create and attach tickets to. Tickets are very nice.

Trac can do much more than just this. It can be attached to a subversion repository and you can easily view the history of the changes as well as browse the source. You can easily add in new features and customize your Trac however you want. Trac Hacks is the best place to quickly to this. It is also easy to create your own since Trac is developed with Python.

Setting up Trac is easy thanks to the documentation. Here is a link to the different platforms and one directly to the windows since I'm sure most of you are on that.

Conclusion
I know that this is a lot to take in. I was there not too long ago. Getting Subversion and Trac setup will cost some overhead, especially if you have some difficulties like I did, but the time spent is nothing compared to what you gain.

The valuable lesson to take away from this is that having an environment that enables collaboration is not only going to make your life easier but may very well be the deciding factor in the completion of your project.

1 comment: