Usually, when it comes to modding, many newcomers have a hard time keeping track of issues, source code, and assets, and what usually ends up happening is one person keeping track of everything, and more often than not this is the mod leader. And when a project lead isn't leading but is merely managing the assets, you've got a huge problem.
Posted by RvBChandler on May 3rd, 2009 digg this super bookmark
Page 1 of 6
Basic Management.
Usually, when it comes to modding, many newcomers have a hard time keeping track of issues, source code, and assets, and what usually ends up happening is one person keeping track of everything, and more often than not this is the mod leader. And when a project lead isn't leading but is merely managing the assets, you've got a huge problem. Hard drive failures, files being lost in translation, and worst of all, people dropping off the map, can contribute to a mod dying faster than a headcrab in a fire.
But don't give up! There's a solution. It's call a VCS or Version Control System. There are many different types to choose from, each with their pros and cons, which LUCKILY will be discussed in this article, not only saving you time researching for the best VCS for your project, but also laying them out nicely so you can discuss it with your team.
So, let's get started. In the world of VCS there are two types of VCS, centralized and distributed. Before we get into the actual different revision systems themsevles we're going to discuss the difference between these two models, as well as when you would want to use them. We're only going to mention free and open source software here, so I'm not going to talk about Perforce, or anything like it.
The centralized model is the VCS that is MOST familiar with mod developers today. If you aren't running at least an SVN or CVS repository for managing your code then you might as well just shoot yourself, because you're only a part of the problem. While CVS and SVN are effectively the same thing, and SVN is loads better than CVS I'm stil going to talk about it. The way a centralized VCS works is actually quite simple. There is a central repository for all objects. This is where the final build goes. It is the master version. End of discussion. People who have access to the repository update, make changes, and then commit their changes to the central server (hopefully in a way that does not cause a conflict).
In recent years, the distributed model of version control has become the most popular model of version control for open source projects. There is no reason why you can't adapt it to suit your project's needs. The distributed model is interesting. You pull, or "clone" the existing main repository locally, create a new branch, and then commit. Later on your work, once deemed stable is merged back into the main branch. Unlike the Centralized model however, where there is only one central main branch for use, there can be as many branches and as many clones as you want for your code. In fact some VCS encourage this behavior. The distributed model also usually has a much easier time merging code and assets, allowing a minimal amount of time updating your master branch, as opposed to the centralized model where it can sometimes take several hours to properly merge everything. Another great thing about the decentralized model, is if the central repository ever goes down, or is corrupted or is lost, you already have an easy to use backup. Or, if a programmer in an act of rage destroys your repository (not as in a wipe but removing it from the server, or access to the server or what have you), you still have your source code. I know of at least one mod that this has happened to. (It shall remain unnamed to protect each prospective parties).
So now that you undersand the difference between Distributed and Centralized Version Control Systems, we can actually get into who uses what, and when. Let's get started :D
Only registered members can share their thoughts. So come on! Join the community today (totally free) and do things you never thought possible.
If this needs serious revisions please let me know. I spent the better part of a day, and I want this tutorial to do well. Even though it's more of an article than anything else.
brilliant piece, you can see the effort you have put in. we actually have an interesting announcement surrounding this to come on moddb in a few days time
Awesome =D
Nice tutorial/article, I think this could be very useful for a lot of people!
Very good tutorial. It explains different methods and ways to keep track on the project really well. The "Pros and Cons" sections are also useful and nice.
"For any project organization is one of the biggest things. Without proper leadership your project may die"
I would say this tutorial isn't about leadership, it's about project management. For example a mod might fail in spite of good project management just because it's steered in the wrong direction. I was going to do a page about file distribution options in my QA Lead tutorial, but you've done quite a good job here so I think I'll link this and maybe add some download links.
Also -for large projects with big teams- I would personally recommend TortoiseSVN client, along with Trac. Working on a Source Mod (with ~17,000 files) I didn't find it to be slow, albeit having nothing else to compare it to (plus we were using a sponsored dedicated server). Trac is a simple Project Management wiki-style program, so when using TortoiseSVN in conjunction, the Trac page will give you reports of all the changes. The two go together very well.
"[Trac] provides an interface to Subversion (or other version control systems), an integrated Wiki and convenient reporting facilities.
Trac allows wiki markup in issue descriptions and commit messages, creating links and seamless references between bugs, tasks, changesets, files and wiki pages. A timeline shows all current and past project events in order, making the acquisition of an overview of the project and tracking progress very easy. The roadmap shows the road ahead, listing the upcoming milestones."
...and I just saw Intense! is considering Trac and SVN for a Moddb members' service. Awesome!
An article on Gamasutra that ties into this. I'm posting it here more for interest than for practical advice.
"Collaborative Game Editing"
Gamasutra.com